Sunteți pe pagina 1din 707

Grafos

Conceitos, algoritmos
e aplicações
Preencha a ficha de cadastro no final deste livro
e receba gratuitamente informações sobre os
lançamentos e as promoções da Elsevier.

Consulte também nosso catálogo


completo e últimos lançamentos em
www.elsevier.com.br
Grafos
Conceitos, algoritmos
e aplicações

Marco Goldbarg e Elizabeth Goldbarg


© 2012, Elsevier Editora Ltda.

Todos os direitos reservados e protegidos pela Lei no 9.610, de 19/02/1998.


Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam
quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravação ou quaisquer outros.

Copidesque: Tania Heglacy


Revisão: Andrea Vidal
Editoração Eletrônica: Triall Composição Editorial Ltda.

Elsevier Editora Ltda.


Conhecimento sem Fronteiras
Rua Sete de Setembro, 111 – 16o andar
20050-006 – Centro – Rio de Janeiro – RJ – Brasil

Rua Quintana, 753 – 8o andar


04569-011 – Brooklin – São Paulo – SP

Serviço de Atendimento ao Cliente


0800-0265340
sac@elsevier.com.br

ISBN 978-85-352-5716-8

Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem ocorrer erros de digitação,
impressão ou dúvida conceitual. Em qualquer das hipóteses, solicitamos a comunicação ao nosso Serviço de Atendimento
ao Cliente, para que possamos esclarecer ou encaminhar a questão.
Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens origi-
nados do uso desta publicação.

CIP-BRASIL. CATALOGAÇÃO-NA-FONTE
SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ

G564g

Goldbarg, Marco Cesar


Grafos : conceitos, algoritmos e aplicações / Marco Goldbarg, Elizabeth Goldbarg. - Rio de Janeiro :
Elsevier, 2012.

ISBN 978-85-352-5716-8

1. Teoria dos grafos. 2. Algoritmos. I. Goldbarg, Elizabeth II. Título.

12-1694.. CDD: 511.5


CDU: 511
Obrigado por adquirir este e-book

Esta obra é acompanhada de conteúdo complementar.


Para acessá-lo, encaminhe a confirmação de compra deste e-book
para pin@elsevier.com.br, solicitando seu código de acesso.
Introdução Conceitos 
Algoritmos Aplicações vii

Introdução
O presente texto objetiva dar suporte ao ensino e ao estudo dos conceitos básicos em Teoria dos Grafos, em
algoritmos em grafos e em suas conexões com a otimização combinatória e aplicações reais. O livro ocupa
um espaço didático pouco povoado situado na conexão da Teoria dos Grafos com as aplicações reais. Cinco
focos definem a proposta e estão exibidos na Figura 1:

Facilitação ao
Algoritmos em acesso
grafos à informação

Otimização
combinatória
Focos Ancoragem
e problemas do para a
mundo real pesquisa

Autoaprendizagem

Figura 1: Os focos do livro

►1o foco
O emprego do ferramental da Teoria dos Grafos na solução de problemas de otimização combinatória e do
mundo real. Nesse foco estão especialmente envolvidos os Capítulos 2, 8 e 9, bem como os tópicos de aplicações
existentes em cada capítulo.

►2o foco
Suporte ao desenvolvimento de algoritmos em grafos para a solução computacional desses problemas. Com
exceção do Capítulo 2, todos os demais apresentam vários algoritmos de solução para os tópicos abordados.

►3o foco
Desenvolvimento do texto de forma a facilitar a auto-aprendizagem e o incentivo à motivação para o domí-
nio das competências e habilidades relativas a essa disciplina. Tópicos semelhantes são, na medida do possível,
reunidos e estudados em conjunto. Todos os conceitos apresentados são imediatamente exemplificados. Vários
exercícios resolvidos auxiliam a autoaprendizagem.

►4o foco

Criação de ancoragem para a pesquisa e ampliação e aprofundamento dos temas abordados no livro através
da disponibilização de uma rede de referências bibliográficas. Os principais temas do livro são objeto de um
viii Grafos

levantamento do estado da arte. O objetivo de identificar e relacionar a literatura associada aos temas em estudo é
permitir ao leitor facilidade em aprofundar os temas abordados no livro.

►5o foco

Facilitação ao acesso à informação. Diversas referências bibliográficas do livro podem ser obtidas gratuitamente
na internet. Tais referências estão assinaladas e trazem endereço URL.

O texto é introdutório. Não existe a pretensão do aprofundamento para além dos cursos de graduação. A aten-
ção está centrada nos conceitos básicos, no desenvolvimento de algoritmos e nas aplicações reais. A imersão
mais intensa, especialmente no que diz respeito ao ferramental matemático do modelo, foge ao escopo do traba-
lho. Todavia, o livro está aparelhado para o uso em cursos de pós-graduação em áreas afins à Programação
Discreta ou Ciência da Computação.
São disponibilizados exercícios resolvidos e exercícios propostos. A solução dos exercícios propostos é
parte do desafio do processo de aprendizagem. Como na maioria dos casos a resposta dos exercícios propostos é
a própria resolução, essas soluções não constam do texto.
A metodologia busca organizar o texto de forma a reunir conceitos semelhantes em quadros vizinhos. Os con-
ceitos são fichados. Isso permite ao leitor confrontar imediatamente o conceito abordado com outros assemelha-
dos, esclarecendo eventuais dúvidas. A Figura 2 exemplifica a apresentação dos conceitos correlacionados.

Grafo Completo
Conceito
Um grafo G é dito completo se existe uma aresta associada a cada par de
principal
vértices de G. No caso orientado isso significa a existência de um arco para cada
par ordenado de vértices.

Grafo Bipartido Completo K,p,q Notação


usada
Um grafo G bipartido é dito completo se cada vértice do conjunto N1 com p vértices
é adjacente a todos os q vértices do conjunto N2 e vice-versa.

Conceitos
Grafo Clique – Kn Kn associados

Um grafo clique de um grafo G é um subgrafo completo de G.

Grafo Clique – Definição Alternativa


Um grafo KG é um grafo clique se e somente se ele contém uma família F de
subgrafos completos cuja união resulta KG, e tal que nenhum par de grafos com-
pletos em alguma subfamília possui uma interseção* vazia – a interseção entre
todos os membros da família é não vazia (Harary, 1994, p. 20).

Figura 2: Exemplo de apresentação de conceitos correlacionados

São apresentadas dicas para a solução dos modelos examinados no texto. Esse cuidado caminha no sen-
tido da criação de conexões entre o que se apresenta e um eventual aprofundamento para além do escopo imediato do
livro. A Figura 3 exibe um exemplo desse tipo de ancoragem na literatura.
Introdução Conceitos 
Algoritmos Aplicações ix

❂ Decomposição em Árvore – Dicas de Trabalhos

Xu et al. (2005) apresentam uma aplicação da decomposição em árvore na predição da estrutura de proteínas. Bodlaender & Fomin
(2005) abordam o problema associado da decomposição em árvores de menor custo. Dourisboure & Gavoille (2007) tratam da de-
composição em árvores com menor diâmetro.

Figura 3: Exemplo de ancoragem na literatura

Os algoritmos abordados são descritos tanto no texto como resumidos através de pseudocódigo, como
exemplifica a Figura 4.

A Cobertura de Vértices
Ler G = (N, M)
S ← ; β (G) ← 0;
Ordenar os vértices em ordem não crescente de graus
Enquanto N  ∅ Fazer
k ← mínimo { j tal que xj ∈ N }
N ← N \ { xk }
S ← S ∪ { xk }
M ← M \ R // R o conjunto das arestas adjacentes a xk)//
β (G) ← β (G) + 1
Fim_Enquanto
Escrever S e β (G)

Heurístico
Figura 4: Exemplo de pseudocódigo

Os algoritmos cujo pseudocódigo é apresentado possuem sua complexidade analisada em item específico,
como exemplifica a Figura 5.

Complexidade Ford-Moore-Bellman
Após a inicialização, são executadas, no máximo, n–1 iterações do k. Em cada uma destas iterações são calculados cami-
nhos com k arestas entre a origem e cada um dos demais vértices do grafo. Para cada vértice, a lista dos seus antecessores é
examinada. Uma vez que o rótulo do vértice origem não é alterado, o exame deste antecessor pode ser descartado. Deste
modo, para cada vértice, no máximo, n–2 antecessores são examinados. Cada exame consiste apenas de operações de adição
e comparação. Portanto, a complexidade do algoritmo apresentado é O(n3).

O(n3)
Figura 5: Exemplo de análise de complexidade de um algoritmo descrito em pseudocódigo

Os problemas de otimização combinatória são introduzidos e associados aos problemas em grafos ou sugeridos
como questões específicas, como exemplifica a Figura 6.
x Grafos

3a Questão 4a Questão
π π
A partir de algum ponto da cidade de Königsberg – no século A partir de algum ponto da cidade de Königsberg – no século
XVIII, é possível fazer uma caminhada que atravesse XXI, torna-se possível fazer uma caminhada que atra-
todas as pontes da cidade somente uma vez? vesse todas as pontes da cidade somente uma vez?

O Problema do Carteiro Chinês


π
Determinar um passeio fechado de custo mínimo passando por todas as arestas
do grafo G.

O Problema do Carteiro ao Vento – Windy


π
Determinar um passeio fechado de custo mínimo passando por todas as arestas
do grafo G em uma matriz de custos assimétrica.

Figura 6: Conexões dos modelos em grafos com os problemas de otimização combinatória

O desenvolvimento da proposta didática comportou a elaboração de aproximadamente 2.100 conjuntos de


desenhos, 470 exercícios, 100 exercícios resolvidos e 40 aplicações reais detalhadamente descritas. No livro
cerca de 850 referências bibliográficas são citadas. Material eletrônico adicional permite que alguns recursos
do texto possam ser incorporados aos trabalhos didáticos e as aulas da disciplina, de forma a auxiliar o processo
de aprendizagem. A solução dos exercícios solucionados apresentados em cada capítulo, as figuras coloridas e o
material eletrônico adicional será disponibilizado aos leitores no site www.elsevier.com.br/grafos.
Os autores formulam votos de que o presente projeto possa ser útil na formação dos alunos de graduação e no
auxílio ao ensino da disciplina de Grafos. Assim nos colocamos prontos e desejosos de ouvir as importantes obser-
vações daqueles a quem o livro foi dedicado.

Ementas que podem ser associadas ao livro


O livro aborda diversos temas pertinentes a Teoria dos Grafos, de modo que pode dar suporte a mais de uma
disciplina. Grandes temas como:

– Algoritmo em grafos;
– Introdução à Teoria dos Grafos;
– Aplicações de grafos;
– Grafos e otimização combinatória.

podem encontrar suporte no conteúdo didático do livro. No sentido de exemplificar o alcance do conteúdo dispo-
nibilizado, são transcritas a seguir algumas ementas que podem ser desenvolvidas com base no texto. Observe que
as ementas citadas não esgotam as possibilidades de composição do conteúdo do livro, todavia permitem ressaltar
sua versatilidade.
Introdução Conceitos 
Algoritmos Aplicações xi

►Ementa 1 – Ampla

Definição e aplicação de grafos. Conceitos básicos em grafos. Representação de grafos: matrizes de adjacências,
incidência, listas de adjacências e representação em estrela. Operações em grafos. Árvores. Árvore geradora mí-
nima. Caminhos e ciclos. Caminho mais curto. Ciclos hamiltonianos e eulerianos. Conectividade de vértices e
arestas. Subconjunto de vértices e arestas. Estabilidade, absorção e dominância e emparelhamentos. Introdução
à planaridade. Coloração. Redes e fluxos em redes. Problemas de otimização em grafos.

►Ementa 2 – Foco em algoritmos

Definição e aplicação de grafos. Subgrafos e hipergrafos. Busca em profundidade. Algoritmos para componentes
conexas. Busca em largura. Árvores. Algoritmos para árvores geradoras mínima e máxima. Caminhos. Algo-
ritmos para caminhos mais curtos. Coloração. Algoritmos para coloração. Fluxo em redes. Algoritmos de fluxo
máximo em redes. Emparelhamentos. Algoritmos para emparelhamentos.

►Ementa 3 – Foco em aplicações

Definição e aplicação de grafos. Conceitos básicos em grafos. Representação de grafos: matrizes de adjacências,
incidência, listas de adjacências e representação em estrela. Operações em grafos. Modelos em grafos. Árvores.
Modelos em árvores. Árvore de Steiner. Caminhos e ciclos. Carteiro chinês. Caixeiro-viajante. Coloração. T-Co-
loração. Fluxo em redes.

Ementa 4 – Introdutória

Introdução. Noções básicas: grafos orientados, não orientados, bipartidos. Percursos em grafos. Subgrafos e Su-
pergrafos. Cliques. Árvores e árvores geradoras. Conectividade. Problemas de caminhos. Estabilidade e nú-
mero cromático. Emparelhamentos. Grafos planares. Circuitos eulerianos e hamiltonianos. Grafos acíclicos.
Coloração em grafos. Redes. Fluxos em redes.

►Ementa 5 – Foco em tópicos específicos

Definição e aplicação de grafos. Subgrafos e hipergrafos. Busca em profundidade, componentes biconexos, com-
ponentes fortemente conexos, busca em largura, busca em largura lexicográfica, busca irrestrita, número cromá-
tico. Árvores geradoras máximas e mínimas. Introdução à planaridade. Algoritmos de fluxo máximo em redes.
Algoritmos para emparelhamentos.

►Ementa 6 – Foco em tópicos específicos

Definição e aplicação de grafos. Subgrafos e hipergrafos. Isomorfismo de grafos. Representação computacional.


Algoritmos de buscas. Grafos orientados. Trilhas, caminhos e ciclos. Distâncias. Caminhos. Conectividade. Ciclos
eulerianos e hamiltonianos. Problema do caixeiro-viajante. Problema do carteiro chinês. Árvores, árvore geradora
mínima. Introdução à planaridade. Coloração de vértices. Número cromático. Emparelhamento. Fluxos em redes.
CAPÍTULO 1  Conceitos básicos 1

capítulo
2 Grafos

1.1 Grafos: Notação Básica e Exemplos


Um grafo é uma estrutura de abstração bastante útil na representação e solução de diversos tipos de problema.
Matematicamente, um grafo formaliza relações de interdependência existentes entre os elementos de um con-
junto. Um grafo possui representação gráfica bastante confortável. Nessa forma de modelagem, os elementos do
conjunto são desenhados como pontos ou círculos e denominados nós ou vértices. As relações entre os elementos
do conjunto são caracterizadas por traços ou setas ligando os pontos e que são denominadas arestas ou arcos.
A Figura 1.1(1) exibe as possíveis representações para os vértices de um grafo. A Figura 1.1(2) exibe as possíveis
formas de ligação e a Figura 1.1(3) como vértices se unem através de arestas ou arcos.

(1) Representação de vértices (2) Aresta e Arco (3) Ligações entre vértices

Figura 1.1 Elementos de um grafo

Os termos nós e vértices são empregados na literatura usualmente como sinônimos. Será denominado por N,
N={1,2,...,n}, o conjunto que contém os n vértices do grafo, e por M, M={1,2,...,m}, o que contém as m arestas. É tam-
bém usual a utilização da variável xi, i = 1,2,...,n, para a representação dos n vértices e a variável aij para representar a
aresta que liga os vértices i e j. Por conveniência, e quando adequadamente definido, as arestas poderão ser represen-
tadas pelos pares (i,j), (xi,xj) ou i-j. Em um grafo não direcionado os pares de vértices do conjunto N são não ordena-
dos. Uma representação das arestas segundo a variável aj, j = 1,...,m é igualmente admissível, contudo menos comum.

Grafo
Um grafo é uma estrutura abstrata que representa um conjunto de elementos denominados vértices e suas relações de
interdependência ou arestas.

Representações Matemáticas
Denominando por N o conjunto de vértices da estrutura e por M o conjunto das arestas ou ligações entre os vértices,
um grafo pode ser representado por G = (N, M).

Quando as propriedades das relações entre os elementos do conjunto N dependem de sua origem (o conjunto
dos vértices é composto por pares ordenados) os grafos são ditos direcionados. No caso dos grafos direciona-
dos, os índices representam a direção considerada, de modo que aij representa uma ligação direcionada que tem
origem no vértice i e término no vértice j. As ligações nos grafos direcionados são denominadas arcos, e sua
representação gráfica implica um traço com uma seta sinalizando o sentido da relação considerada. Evitando
sobrecarregar a notação e quando aplicável, dois vértices genéricos de G poderão ser representados por v e w.
CAPÍTULO 1  Conceitos básicos 3

A Figura 1.2 apresenta três grafos como exemplo. Nos grafos (1) e (3) apenas os vértices são rotulados com
N={1,2,3,4,5,6,7,8} e N={1,2,3,4,5} respectivamente. No grafo (2), vértices e arestas são rotulados, N = {1,2,3,4,5,6}
e M={a,b,c,d,e,f}.

Figura 1.2 Exemplos de grafos

►Exemplo 1 – Modelagem Através de Grafos

O exemplo que se segue mostra como um complexo sistema eletrônico pode ser simplificado e representado
através de um grafo. A representação acontece associada a uma placa de circuitos. O objetivo é criar um modelo
que permita examinar o caminho da corrente elétrica entre alguns dos componentes da placa. Como primeiro
fato derivado do objetivo, provavelmente não será necessário examinar ou representar a placa inteira, somente os
componentes de interesse. Por outro lado, a cor, tamanho, peso, textura e outros detalhes tanto da placa quanto
dos componentes são irrelevantes para a corrente. Assim, os componentes podem ser representados por símbo-
los e suas conexões elétricas por traços em um esquema sobre um papel. O esquema é exibido na Figura 1.3(2),
associado ao circuito na Figura 1.3(1), na parte superior da mesma figura. O esquema não é parecido fisicamente
com a placa, todavia (caso tenha sido feito corretamente) as simplificações introduzidas não produzem qualquer
perda para o problema da determinação da corrente. Entretanto, como o objetivo é apenas o estudo do caminho
da corrente no circuito, os detalhes dos componentes também se mostram irrelevantes, permitindo que o esque-
ma seja novamente simplificado. Na segunda simplificação, cada componente pode ser transformado em um
círculo indexado segundo o número do componente e ligado por setas que representam o sentido do caminho da
corrente no circuito. Esse novo esquema ou desenho é um grafo.

Figura 1.3 A formação de um grafo a partir de um circuito eletrônico


4 Grafos

►Exemplo 2 – Modelagem Através de Grafos

Um segundo exemplo pode ser coletado em um mapa rodoviário. Considere as cidades do Rio Grande do Norte,
Brasil, e as estradas existentes entre elas, como exibido na Figura 1.4.

(1) Mapa do Rio Grande do Norte (2) Localização das cidades

(3) Ligação entre as cidades do Estado (4) Grafo associado

Figura 1.4 Formação de um grafo a partir de um mapa

Supondo que: 1. O conjunto de vértices de G, o conjunto N, seja constituído pelas cidades representadas no
mapa; 2. As relações de interdependência, o conjunto M, sejam constituídas pelas estradas principais que ligam as
cidades. Então, a partir do mapa, pode-se constituir um grafo associando um vértice a cada cidade e uma aresta a
cada estrada de ligação, como mostra a Figura 1.4. No exemplo, a relação que une os vértices é a existência de uma
ligação rodoviária ligando as cidades associadas aos vértices.
Observe agora que as diferentes características das cidades podem ser distinguidas no grafo. Isso pode ser feito
colorindo os vértices, traçando-os com linhas mais espessas, representando-os com tamanhos ou formas diferen-
tes ou associando a eles informações escritas (rótulos), como será explicado nos próximos itens. Por outro lado, as
arestas não seguem exatamente pelo curso geográfico das estradas, porque, para um modelo que busque destacar
a possibilidade de ligação, isso é irrelevante.

►Exemplo 3 – Modelagem Através de Grafos

Os grafos são tão simples e eficientes que não é raro o contato e o uso desse modelo na vida diária, mesmo
quando não se tem consciência disso. Por exemplo, no caso dos esportes e campeonatos. Os esquemas de dis-
tribuição de jogos são, tipicamente, realizados com o auxílio de grafos. Suponha que um campeonato de futebol
será organizado para decidir uma taça cuja posse é polêmica e que essa taça seja, por exemplo, uma taça dos
CAPÍTULO 1  Conceitos básicos 5

grafos representada na Figura do Quadro 1. Então os times candidatos à taça poderão ser organizados em uma
sequência de jogos que pode ser do tipo “todos contra todos” em pontos corridos, ou jogos eliminatórios –
também denominados play off.
Adotado o sistema de play off, é necessário organizar as chaves e os jogos do campeonato. Supondo que os ti-
mes do Quadro 1, disputarão, em campo, a taça dos grafos, como organizar a sequência de jogos do campeonato?

1. Sport 7. Cruzeiro 13. Atlético Mineiro

2. Grêmio 8. São Paulo 14. Botafogo

3. Curitiba 9. Palmeiras 15. Bahia

4. Internacional 10. Guarani 16. Corinthians

5. Fluminense 11. Flamengo 17. São Paulo

6. Vasco da Gama 12. Atlético Paranaense 18. Santos Taça


T ça dos
Ta dos Grafos
Graffos

Quadro 1 Times do campeonato e a taça dos grafos

Os 18 times podem ser divididos em seis grupos de três, com um vencedor por grupo em sistema de pontos
corridos. Os seis times podem ser divididos novamente em dois grupos de três, novamente submetidos a um sis-
tema de pontos corridos. Finalmente, os dois vencedores dos grupos disputarão a taça. Seguindo as orientações
descritas anteriormente, a Figura 1.5 mostra um possível esquema desse campeonato, sem considerar o nome dos
times e sua distribuição pelos grupos.

Figura 1.5 O grafo dos jogos da taça dos grafos

Os círculos menores (em branco) representam os times. Os traços representam os jogos (entre os círculos) entre
os times. As setas representam o deslocamento do time que vence a chave para a fase seguinte do campeonato. Os cír-
6 Grafos

culos maiores e pontilhados representam as chaves. Os 18 primeiros círculos da primeira fase estão rotulados porque
são conhecidos os 18 times do campeonato. Nas fases seguintes, os rótulos do grafo estão em aberto porque depen-
dem dos resultados dos jogos. A Figura 1.6 representa o mesmo grafo do campeonato já com os resultados das chaves
conhecido. É fácil reconhecer quem venceu cada etapa e quem foi o campeão? Esse exercício é deixado ao leitor.

Figura 1.6 O grafo do resultado da taça dos grafos

Os grafos são extremamente flexíveis e simples como estrutura de modelagem. Tais características conferem
ao modelo (modelo de modelos) vantagens realmente extraordinárias. Hoje representam praticamente uma lin-
guagem intermediária entre o homem e o computador, sendo que o modelo possui a vantagem de admitir uma
representação visual para o homem e ser facilmente representada por estruturas de dados no computador.

1.2 Definições Básicas


Outras notações e formalizações são possíveis para o modelo. Por exemplo, Bondy & Murty (1979) definem um grafo
como uma tripla ordenada: G = (V(G), E(G),(G)), onde V(G) é um conjunto não vazio de vértices, E(G) um con-
junto de arestas e (G) uma função de incidência que associa, para cada aresta de G, um par de vértices de G – não
necessariamente distintos. A Figura 1.7 resume as notações que serão utilizadas de forma indistinta neste texto.

Figura 1.7 Algumas notações possíveis para grafos


CAPÍTULO 1  Conceitos básicos 7

Além de admitir diferentes formalizações, são comuns notações particulares. A Figura 1.8 emprega uma re-
presentação que denomina as arestas ai. Observe que nas Figuras 1.8(2), (4) e (5) uma aresta liga o vértice 1 a ele
mesmo. Tais arestas são denominadas laço. Por outro lado as arestas a3, a4 e a5 representam ligações diferentes
entre vértices idênticos. Nesse caso são denominadas arestas paralelas.
Um grafo que não contém laços ou arestas paralelas é chamado grafo simples. No presente texto, sempre que
o termo grafo for empregado, implicitamente o conceito referido será o de grafo simples. Um grafo que contém
no mínimo um laço é denominado pseudografo. Um grafo não direcionado que possui no mínimo duas arestas
paralelas é denominado multigrafo. Um grafo direcionado que possui dois ou mais arcos de mesma direção li-
gando um mesmo par de vértices é denominado multigrafo direcionado. Um pseudografo onde todos os vértices
possuem um laço associado é denominado grafo reflexivo.
Um grafo vazio é aquele que contém exclusivamente vértices. Um grafo é dito nulo quando não possui vérti-
ces (Harary & Read, 1973). Um grafo é dito trivial ou singleton quando possui somente um vértice. A Figura 1.8
exemplifica os grafos citados.

(1) Multigrafo (2) Pseudografo (3) Trivial

(4) Reflexivo (5) Buquê (6) Vazio

Figura 1.8 Alguns grafos particulares

O conceito de grafo pode ser generalizado para o caso em que a relação entre os vértices permite a consideração
de mais de um par de nós ou vértices. Quando um grafo possui uma ou mais arestas que correspondam a relações
que envolvam mais de dois vértices, esse grafo é denominado hipergrafo.

Hipergrafo
Um hipergrafo H é um par H=(N,ξ), onde N representa o conjunto dos vértices de
He

Na Figura 1.9 tem-se N  =  {1,2,3,4,5,6} e   = {(1,2,3); (3,4); (4,5,6)}. Os hi-


pergrafos possuem várias aplicações práticas, dentre elas a computação gráfica
(Bretto, 2004). Figura 1.9 Exemplo de hipergrafo
8 Grafos

Um grafo pode conter informações associadas tanto


Grafo Rotulado aos seus vértices como às suas arestas. Algumas dessas
Um grafo G=(N,M) é rotulado se existem atribuições as- informações podem ser descritas junto aos seus ele-
sociadas a suas arestas ou vértices (tanto numéricas como mentos associados. As anotações que permitem distin-
alfabéticas). guir vértices e arestas são chamadas de rótulos.
Na Figura 1.10 o grafo 1 é não rotulado. O grafo
2 possui rótulos nos vértices. O grafo 3 é rotulado
nas arestas.
A Figura 1.11 exemplifica os tipos de grafos pon-
derados.
A Figura 1.11(1) mostra um grafo ponderado em
arestas, com os valores associados marcados sobre as
arestas.
Na Figura 1.11(2) exibe-se um grafo pondera-
Figura 1.10 Exemplos de rotulação do em vértices nos valores numéricos sublinhados.
Quando nada for dito, entende-se que o grafo é pon-
derado somente em arestas.
Grafo Ponderado
Nesta figura, a rotulação dos vértices é realizada
Um grafo G=(N,M) é ponderado se existem valores numé- através de letras, e a ponderação dos vértices é repre-
ricos (pesos) associados às suas arestas ou vértices. sentada por um número sublinhado.
Em determinadas circunstâncias, o sentido da re-
lação definida pelas arestas do grafo pode ser impor-
tante. Por exemplo, em um grafo em que os vértices
representam pessoas e uma aresta i-j existe se a pes-
soa i conhece a pessoa j, o sentido da aresta expressa
o próprio significado do modelo – se i conhece j, isso
não implica que j conhece i. Nesse caso, a ligação i-j
é denominada arco, sendo graficamente desenhada
como uma flecha no sentido da implicação desejada,
como mostra a Figura 1.12(1). Um grafo direciona-
do é exemplificado na Figura 1.12(2).

Figura 1.11 Exemplos de ponderação

Grafo Direcionado
Um grafo é dito direcionado ou orientado quando o sentido das ligações entre os vértices é importante. Nesse caso, as
arestas possuem um sentido marcado por uma seta e recebem o nome de Arcos.

Representações Matemáticas
Denominando-se V o conjunto de vértices da estrutura e E o conjunto dos pares ordenados do produto cartesiano n ×
n das ligações existentes em G, um grafo orientado é também representado por G = (V,E ).
CAPÍTULO 1  Conceitos básicos 9

Figura 1.12 Exemplos de grafos direcionados e transformação do grafo misto

Quando nada é observado, G é considerado uma referência válida para grafos não direcionados. A dis-
tinção do sentido dos arcos no conjunto E obriga sua representação através de pares ordenados. No presente
texto, em princípio, será utilizada a notação com vírgula (1,2) para representar os pares ordenados dos arcos
e com um traço (1-2) para representar as arestas. Um grafo pode possuir simultaneamente arcos e arestas.
Tais grafos são denominados mistos. Qualquer grafo misto pode ser transformado em um grafo direcionado
decompondo-se as arestas em dois arcos de sentidos contrários, como exemplificado nas Figuras 1.12(3) e
(4). No exemplo, as arestas (4-5), (2-7) e (3-8) são substituídas por dois arcos (4,5), (5,4) etc. Um grafo misto
pode ser representado por G=(N,M,E), onde o conjunto dos arcos é caracterizado por E, independentemente
do conjunto das arestas M.

Ordem de um Grafo
A Figura 1.13 exemplifica o cálculo da
Denomina-se ordem de G a cardinalidade de seu conjunto de vértices –
ordem e do tamanho de um grafo G.
|N|.

Tamanho de um Grafo O grafo (1) é de ordem 5 e de tamanho


8; o grafo (2) é de ordem 4 e tamanho 4.
Denomina-se tamanho de G a cardinalidade de seu conjunto de arestas
– |M|. Qual a ordem e o tamanho do grafo
abaixo?

V(G) – indica usualmente o número de


vértices de G.
E(G) – indica usualmente o número de
arestas de G.
Figura 1.13 Exemplos da ordem e do tamanho de um grafo
10 Grafos

A Figura 1.14 exemplifica o con-


Grafos Finitos e Infinitos ceito de grafos finitos e infinitos.
Um grafo é dito finito quando possui um número finito de vértice e de arestas. O grafo (1) é infinito, e o elemento
É dito infinito em caso contrário. ilimitado desse grafo é representa-
do no trecho pontilhado.
Todos os grafos anteriormente
abordados no presente texto são
grafos finitos.
Um grafo é uma estrutura ade-
quada para a representação to-
pológica de formas de conexão.
Existem duas formas específicas
de entender vizinhança entre vér-
tices e arestas, uma para o caso dos
grafos direcionados e outra para
Figura 1.14 Exemplos de grafos finitos e infinitos os não direcionados.

Adjacência de Vértices (x)


Dois vértices i e j são vizinhos ou adjacentes quando existe uma aresta que liga
A noção de vizinhança de
i a j ou vice-versa.
vértices é associada a grafos
não orientados
N(x)
O conjunto de vértices vizinhos do vértice i será denominado Γ(i ). Alguns au-
tores também utilizam a notação N(i ) para representar a vizinhança do vértice
i. A Figura 1.15(2) exemplifica os
vértices adjacentes ao vértice 3 da
–(x) Figura 1.15(1).
Sucessores e Antecessores A Figura 1.16 exemplifica o
+(x) conjunto de antecessores do vérti-
ce 3, –3) = {1} e o conjunto de
sucessores de 3, –3) = {4,5}.
Um vértice j é sucessor de i se existe pelo menos um arco ligando i a j. Os su-
cessores do vértice i são Γ+(i ).

No caso da ocorrência da relação inversa diz-se que o vértice j é antecessor de


i. Os antecessores do vértice i são Γ-(i ).

Figura 1.16 Sucessores

Figura 1.15 Exemplos de vizinhança de vértices


CAPÍTULO 1  Conceitos básicos 11

Adjacência de Arestas

Duas arestas ai e aj são adjacentes quando compartilham um vértice.

A Figura 1.17 exemplifica o conceito de adjacência de arestas. As arestas


adjacentes ao vértice 3 são ressaltadas em vermelho.

O conceito de vizinhança e de conjuntos de sucessores pode ser genera- Figura 1.17 Exemplos de arestas
adjacentes
lizado para o conceito de alcançabilidade. Um vértice vj é alcançável a partir
de vi no grafo G(V,E) se existe uma sequência de vértices vi, vi+1, vi+2, ..., vi+k,
vj, k≥0, tal que (vr, vr+1)  E, i ≤ r ≤ k, e (vi+k, vj)  E. O conjunto de vértices alcançáveis a partir de vi é, portanto,
formado pelos sucessores de vi, os sucessores dos sucessores, e daí por diante. No modelo de grafos esse tipo de
informação poderá ser útil para representar fenômenos de propagação de informação ou de comunicação. O fe-
cho transitivo permite modelar o fenômeno da alcançabilidade. Alguns autores denominam os fechos diretos do
vértice i até o nível k, afastados de k arestas de i, como fechos positivos Γ̂+k(i).

Fecho Transitivo de um Vértice


O conjunto de vértices alcançáveis a partir de x, ̂ –(x), é denominado Fecho Transitivo do Vértice x. ^
+(x)
O conjunto de vértices a partir dos quais o vértice x é alvançável, ̂–(x), é denominado Fecho Transitivo ^
do Vértice x. –(x)

Uma notação análoga no contexto dos grafos não direcionados é ̂ (x) que denota o conjunto de vértices ^
alcançáveis a partir de x, os quais são os mesmos a partir dos quais o vértice x é alcançável.  (x)

Fecho Transitivo de um Grafo


^
Denomina-se fecho transitivo do grafo G o grafo G construído a partir de G, incluindo-se um arco (x,y) para todo y
alcançável a partir de x.

^
G

Na Figura 1.18(2) observa-se que o fecho transitivo direto do vértice 1 da Figura 1.18(1) é:

Γ̂+(1) = {2,3,4,5,7,8,9,10,13}

Os vértices do fecho transitivo direto do vértice estão distribuídos em três níveis de afastamento em arestas:
nível 1 – 2,3,4; nível 2 – 5,7,9,1; nível 3 – 13.
A Figura 1.19 exemplifica a obtenção de Ĝ a partir de G.
12 Grafos

Figura 1.18 Exemplo de fecho transitivo de um vértice

Figura 1.19 Grafo de alcançabilidade de G ou grafo fecho transitivo

Passeio ou Percurso
Um passeio ou percurso é uma sequência finita de vértices e arestas x0,a1,x1,a2,...,xk-1,ak,xk começando e terminando com
vértices tais que xi-1 e xi são os vértices terminais da aresta ai, 1 ≤ i ≤ k.

Na Figura 1.20(1) o passeio inicia pelo vértice 1, avançando na sequência 1-a1-6-a2-4-a3-3-a4-2-a5-6-a2-4-a3-3.


Outra representação possível é através da sequência de vértices, ou seja, 1-6-4-3-2-6-4-3.
Comumente o passeio pode ser denominado x0-xk, onde x0 e xk são os vértices terminais.
Um passeio é dito aberto quando x0≠xk e fechado em caso contrário. A Figura 1.20(2) mostra o passeio fechado
1-5-3-4-2-3-1.
Os conceitos de fechado e aberto se aplicam igualmente à cadeias e caminhos.
CAPÍTULO 1  Conceitos básicos 13

Figura 1.20 Passeios e percursos

Cadeia ou Trilha
Uma cadeia ou trilha é um passeio sem repetição de arestas.

A Figura 1.21(1) exemplifica uma cadeia


aberta 5-a8-1-a7-4-a3-3-a4-2-a5-6-a1-1. Quando
nenhuma observação em contrário for feita, a
cadeia será considerada aberta.

Observe que a cadeia da fi-


gura 1.21(1) é aberta, apesar
de possuir uma subcadeia
fechada (1-4-3-2-6-1).

A Figura 1.21(2) exibe uma cadeia fechada


5-1-3-4-1-6-2-5. As cadeias são formadas inde-
pendentemente de considerações sobre os vérti-
ces visitados.

Contudo, se todos os vértices de uma cadeia


(ou de um passeio) forem distintos, a cadeia (ou
o passeio) será denominada caminho.

Figura 1.21 Cadeias


14 Grafos

Caminho
Um caminho é uma cadeia sem repetição de vértices. Um caminho entre os vértices
“a” e “b” será denotado por a-b, por
Pa-b ou por Pi.
Sucessores e Antecessores O caminho da Figura 1.22(1)
Em um grafo G=(N,M), não ponderado, o comprimento de um caminho é o percorre os vértices 1-6-4-3-2-5,
número de arestas desse caminho. passando pelas arestas a1, a2, a3, a4
e a6.
Em um grafo G=(N,M), ponderado, o comprimento de um caminho é a soma
dos pesos das arestas desse caminho.

Figura 1.22 Caminhos

Na Figura 1.22(2) o grafo é não ponderado em arestas, de forma que o comprimento do caminho marcado
5-1-3-2 é igual a 3, o número de arestas do caminho. No caso do caminho entre os vértices A e G, mostrado na
Figura 1.22(4), seu comprimento é a soma dos valores das arestas, sendo igual a 11. No caso do mesmo grafo não
ponderado, representado na Figura 1.22(3), o comprimento do caminho é igual a 3.

A Figura 1.23 exibe o caminho


Distância entre Vértices d(xi,xj) A-H ressaltado pelas linhas mais
A distância entre um par de vértices xi e xj, denotada por d(xi,xj), corresponde espessas, que representa a menor
ao caminho de menor comprimento capaz de ligar xi a xj. No caso de o cami- distância entre os vértices A e H.
nho não existir, então d(xi,xj) = ∞. O comprimento do menor cami-
nho A-H é a distância d(A,H) = 7.
CAPÍTULO 1  Conceitos básicos 15

Figura 1.23 Grafo exemplo para o cálculo da distância A-H

Índice de Wiener
WG(xi) A Figura 1.20(1) exibe um gra-
Índice ou número de Wiener de um vértice G = (N,M) é a soma das distâncias fo não ponderado cujo número de
entre todos os pares de vértices xi, xj  N. Ele é definido como Wiener é 14.
A soma das distâncias do vér-
tice 1 aos demais vértices é 6. A
soma dos vértices 2, 3, 4 e 5 é 5, 5,
6 e 6, respectivamente.

Figura 1.24 Grafos exemplo para o cálculo do índice de Wiener

O índice de Wiener foi proposto inicialmente para grafos não ponderados (Wiener, 1947), sendo posterior-
mente estendido para grafos ponderados. Os grafos das Figuras 1.24(2) e (3) são utilizados para ilustrar o índice
de Wiener para grafos ponderados. A soma das distâncias associadas ao vértice 1 se mantém igual a 16. 16 resulta
da soma da distância do vértice 1 ao vértice 2 (valor de 3 unidades), distância do vértice 3 (2 unidades), distância
ao vértice 4 (6 unidades), distância ao vértice 5 (5 unidades), repetindo-se o procedimento para os demais vértices
e dividindo-se o resultado final por 2. A Figura 1.24(3) é uma árvore grafo em que o cálculo do número de Wiener
pode ser facilmente calculado, uma vez que existe um único caminho entre cada par de vértices. No caso, a dis-
tância dos vértices A, B, C, D, E, F para os outros é 11, 15, 23, 23, 13 e 21, respectivamente. O índice de Wiener do
grafo da Figura 1.24(3) é 53.
16 Grafos

Cadeia Euleriana
Em Teoria dos Grafos existem
Trata-se de uma cadeia em G que, passando por todas as arestas de G, as visita
apenas uma vez.
muitos problemas associados à
solução de caminhos.
As cadeias eulerianas e os
Caminho Hamiltoniano caminhos hamiltonianos estão
entre os mais tradicionais desses
Trata-se de um caminho em G que, passando por todos os vértices de G, os
problemas.
visita apenas uma vez.

Alguns autores usam os termos caminho euleriano e ciclo euleriano para notar cadeia euleriana e
cadeia euleriana fechada, respectivamente.

Em casos específicos e devidamente sinalizados, o presente texto


também usará esses termos como sinônimos.

A Figura 1.25(1) exibe um


grafo exemplo G.

As Figuras 1.25(2) e (3) mos-


tram caminhos hamiltonianos
em G.

Figura 1.25 Caminhos hamiltonianos

A Figura 1.26(1) exibe um


grafo exemplo G.

A Figura 1.26(2) mostra um


caminho euleriano em G.

Os números marcam a se-


quência das arestas no caminho.

Figura 1.26 Caminhos eulerianos


CAPÍTULO 1  Conceitos básicos 17

Ciclo
Quando o grafo G
Em um grafo G, um ciclo é um caminho fechado. é orientado, alguns
autores denominam
circuito a sequência
de arcos distintos
Grafo Ciclo
que repete somente o
Um grafo ciclo (Cn) é um grafo com n vértices formado por apenas um ciclo primeiro e último nó
passando por todos os vértices. visitados.

Figura 1.27 Ciclos e circuitos

As Figuras 1.27(2) e (3) apresentam ciclos da Figura 1.27(1). As Figuras 1.27(5) e (6) apresentam circuitos rela-
tivos à Figura 1.27(4). A Figura 1.28 exemplifica os grafos ciclos de três a seis vértices.

Figura 1.28 Grafos ciclos de 3 a 6 vértices

O problema de ciclos e circuitos eulerianos e hamiltonianos corresponde


Em grafos
ao problema de um percurso fechado sobre todas as arestas ou vértices de
G sem a repetição de arestas e vértices, conforme sejam, respectivamente, orientados,
eulerianos ou hamiltonianos. os percursos fechados
hamiltonianos são
denominados
Cadeia Euleriana Fechada/Ciclo Euleriano circuitos
hamiltonianos e os
É uma cadeia euleriana que inicia e termina em um mesmo vértice. percursos eulerianos
são ditos cadeias
fechadas /
Ciclo Hamiltoniano direcionadas
Trata-se de um caminho hamiltoniano fechado. eulerianas ou
circuitos
eulerianos.
18 Grafos

O uso dos termos caminho euleriano e ciclo euleriano deve ser cuidadoso.
Há possibilidade de ambiguidade, tendo em vista que caminhos e ciclos são
definidos como sequências de vértices, não como sequências de arestas.

A Figura 1.29(3) exibe um ciclo euleriano e a Figura 1.29(2) um ciclo hamiltoniano sobre o grafo da Figura
1.29(1). As setas indicam um sentido do percurso. O vértice amarelo é arbitrado como inicial para facilitar a
visualização.

Figura 1.29 Ciclos eulerianos e hamiltonianos

Grafos em que não é possível traçar um ciclo hamiltoniano, são denominados não hamiltonianos. Em caso
contrário são ditos hamiltonianos. O mesmo ocorre no caso dos ciclos eulerianos.

Figura 1.30 Grafos hamiltonianos e não hamiltonianos

A Figura 1.30(1) exibe um grafo não hamiltoniano e a Figura 1.30(2) um grafo hamiltoniano. A Figura 1.30(3)
exibe um ciclo hamiltoniano do grafo da Figura 1.30(2).
CAPÍTULO 1  Conceitos básicos 19

Percurso Pré-Euleriano
Percurso pré-euleriano é um percurso que passa pelo menos uma vez em cada
aresta do grafo G.

Percurso Pré-Hamiltoniano
Percurso pré-hamiltoniano é um percurso que passa pelo menos uma vez em
cada vértice do grafo G.

Figura 1.31 Grafo exemplo

A Figura 1.32(1) apresenta um percurso pré-euleriano fechado – um ciclo pré-euleriano do grafo da Figura
1.31. O ciclo é 3-7-1-3-4-5-3-7-2-6-5-7-3. De forma semelhante, a Figura 1.32(2) apresenta um percurso pré-
-hamiltoniano fechado – um ciclo pré-hamiltoniano referente à Figura 1.31.

Figura 1.32 Percursos pré-eulerianos e pré-hamiltonianos

A Figura 1.32(3) exibe um caminho pré-hamiltoniano iniciando no vértice 3 e terminando no vértice 5, seguin-
do pelos vértices 3-4-5-6-2-7-1-3-5.

Corda
Corda é uma aresta que une dois vértices não consecutivos de um ciclo.

A Figura 1.33 exemplifica uma corda em um grafo G.


Figura 1.33 Corda
20 Grafos

Cintura de G – g(G) g(G)


Cintura de G é o comprimento do menor ciclo de G.

Circunferência de G – g(G)
c(G)
Circunferência de G é o comprimento do maior ciclo de G.

A Figura 1.35(1) exemplifica a cintura do grafo da Figura 1.34 (g(G) = 3)


e a Figura 1.35(2) sua circunferência c(g) = 6. A Figura 1.35(3) exibe o grafo
de Heawood e calcula sua cintura, que vale 6. Figura 1.34 Grafo exemplo

Figura 1.35 Exemplos de cálculo de cintura e circunferência


CAPÍTULO 1  Conceitos básicos 21

Excentricidade – Ex(v) Ex(v)


Excentricidade, Ex(v) de um vértice v  N é a maior distância entre v e w, para
todo w  N.

Raio de G – Rad(G)
Rad(G)
Raio de um grafo G, Rad(G), é o menor valor de excentricidade para todo
vértice v  N.

Diâmetro de G – Diam(G) Diam(G)


Diâmetro de um grafo G, Diam(G), é o maior valor de excentricidade para
todo vértice v  N.

Centro de G – Rad(G)
Centro(G)
Centro de um grafo G, Centro(G), é o subconjunto dos vértices de excentrici-
dade mínima.
Figura 1.36 Grafo exemplo

A Figura 1.37 exemplifica os conceitos anteriormente descritos para o grafo da Figura 1.36. Observe que a
Figura 1.37(4) mostra que o grafo da Figura 1.36 possui um centro composto por três vértices.

(1) Ex(v)=4 (2) Rad(G)=3 (3) diam(G)=5 (4) Centro(G)

Figura 1.37 Cálculo da excentricidade, raio, diâmetro e centro do grafo da Figura 1.31

O diâmetro de um grafo se refere à denominada distância geodésica Dg(v-w) entre


dois vértices – o número de arestas entre dois vértices. Alguns autores estendem o
conceito a grafos ponderados. Isso não será adotado no presente texto.
22 Grafos

Grau de um Vértice xi – d(xi)


d(xi) Quando todos os
vértices de um
O grau d(xi ) (ou valência) de um vértice xi em um grafo não direcionado é
grafo possuem grau
igual ao número de arestas incidentes no vértice.
finito, o grafo é dito
localmente finito.

(G) Valor do grau máximo no grafo G. A Figura 1.38(1) exemplifica o


cálculo dos graus de um vértice
(G) Valor do grau mínimo no grafo G. em grafos não direcionados e a
Figura 1.38(2) o exemplifica em
grafos direcionados.

No caso de o grafo ser direcionado, o grau de um vértice xj é composto por um valor interno e um externo. O
grau interno de um vértice xj pertencente a um grafo direcionado é igual ao número de arcos incidentes – que
apontam para o vértice. O grau externo de um vértice xj pertencente a um grafo direcionado é igual ao número de
arcos emergentes ao vértice – que deixam o vértice considerado. É comum representar os graus internos e externos
com o auxílio de sinais relativos
No caso de grafos direcionados, as parcelas do grau do vértice podem também ser denominadas semigraus
e denotadas, por convenção, com valores positivos e negativos. A soma absoluta do semigrau interior d–(xi) e
exterior d+(xi) conduz ao valor final do grau do nó. A expressão para a obtenção do grau em grafos orientados é:
. A Figura 1.33 ilustra os conceitos de grau interno e grau externo para os vértices 2, 5
e 6. O grau mínimo dentre os vértices de um grafo é denotado por δ (G) e o máximo por Δ (G).

Figura 1.38 Exemplo do grau de vértices

No caso da Figura 1.38(2) pode-se calcular o grau dos vértices 3 e 4 como a seguir, caracterizando o fato de que
esses graus correspondem aos graus dos vértices no grafo não direcionado subjacente.
CAPÍTULO 1  Conceitos básicos 23

Número de Arestas/Número de Vértices


Na fórmula ao lado, dM(G) é
A relação entre o número de arestas e vértices, muitas vezes denominada densi- denominada média dos graus de
dade de G, pode ser medida pela razão ε(G), tal que: G e pode ser obtida pela seguinte
expressão:

O lema 1.1 se relaciona ao conceito de grau de um vértice. A prova do lema é deixada como exercício. O teo-
rema 1.1 (Diestel, 1997) se relaciona ao conceito de média dos graus de G. O teorema faz referência ao conceito
de subgrafo, que será mais detalhado na seção 1.2. De uma forma geral, H = (NH,MH) é subgrafo de G = (N,M)
se NH  N e MH  M com (i,j)  MH se e somente se i e j  NH.

Em um grafo não direciona-


Teorema 1.1
do, uma sequência de graus é
Todo grafo G com mais de uma aresta possui um subgrafo H(G), onde: uma sequência monotônica não
decrescente dos graus dos vérti-
δ (H) > ε (H) ≥ ε (G) ces. Um grafo cuja sequência de
graus contém múltiplas cópias de
um único inteiro é denominado
grafo regular. É possível que dois
grafos distintos possuam a mesma
sequência de graus, como mostra
Lema 1.1
a Figura 1.39.
O somatório dos graus dos vértices de um grafo é igual a 2m, onde m representa A soma dos elementos de uma
o número de arestas do grafo. sequência de graus de ordem n é:
0,2,4,6,...,n(n-1).

Figura 1.39 Grafos distintos com sequência de graus [2,2,2,1,1]


24 Grafos

Grafo Par
Um grafo com todos os vértices
Um grafo G é dito par se todos os seus vértices possuírem grau par. possuindo grau ímpar não é um
grafo ímpar.

Figura 1.40 Grafos pares

Grafo Conexo
G é conexo se para todo par de vértices i e j existe pelo menos um caminho
entre i e j.

Se G é um grafo direcionado, então é considerado conexo quando o seu grafo


subjacente (não direcionado) é conexo.

O grafo subjacente não direcionado é o grafo resultante de G quando a orien-


tação dos arcos de G é ignorada.

Figura 1.41 Grafo desconexo

Alguns grafos não admitem ciclos. A classe mais importante dos grafos acíclicos é constituída pelas árvores. As
árvores modelam um enorme número de aplicações reais. A Figura 1.42(1) mostra o exemplo de uma árvore com
oito vértices. As árvores, por sua importância, serão estudadas detalhadamente no Capítulo 3.

Árvores
Um grafo é denominado árvore se for conexo e não possuir ciclos.

O vértice inicial e o
Folhas da Árvore ou Vértices Terminais vértice final de
qualquer caminho
Em uma árvore, um vértice com grau 1 é denominado folha ou vértice termi- são os vértices
nal. extremos do
caminho.
Vértices Extremos

Quando o número de vértices terminais de um grafo é 2, é usual denominá-los


vértices extremos de G.
CAPÍTULO 1  Conceitos básicos 25

Os termos vértices extremos ou terminais também são utilizados para referenciar os vértices de uma aresta,
ainda que esse uso seja pleonástico.
A Figura 1.42(2) exibe as folhas da árvore da Figura 1.42(1) em azul. No caso, a árvore possui quatro folhas, ou
seja, quatro vértices de grau 1. A Figura 1.42(3) mostra um grafo e os vértices terminais dos caminhos 1-2-3-4-5
e 1-2-6-5.

(1) Árvore (2) Folhas da árvore (3) Vértices extremos

Figura 1.42 Árvore, folhas e vértices extremos

1.3 Subgrafos e Supergrafos


Em certas situações é indispensável distinguir partes específicas de um grafo. De uma forma geral, subconjuntos
de arestas e vértices dos grafos serão estudados no Capítulo 5.

Subgrafo
Gs = (Ns,Ms) é um subgrafo de G = (N,M) se Ns  N e Ms  M, e uma aresta
(i,j)  Ms somente se i,j  NS.

Subgrafo Próprio
Gs = (Ns,Ms) é um subgrafo próprio de G = (N,M) se Ns  N e Ms  M, ou
Ns  N e Ms  M, e uma aresta (i,j)  Ms somente se i,j  Ns.

Subgrafo Parcial

Gs = (Ns,Ms) é um subgrafo parcial de G = (N,M) se Ns = N e Ms  M, e uma


aresta (i,j )  Ms somente se i,j  Ns. Figura 1.43 Grafo exemplo

A Figura 1.44 mostra alguns subgrafos do grafo da Figura 1.43.


26 Grafos

Ns  = N e Ms = M Ns  N e Ms  M Ns  = N e Ms  M Ns = N e Ms  M


Subgrafo parcial Subgrafo próprio Subgrafo parcial próprio Subgrafo parcial próprio

Figura 1.44 Resumo das propriedades de pertinência de grafos

Um critério alternativo para classificar a formação de subgrafos con-


Um grafo é subgrafo parcial sidera a forma de sua indução: induzido por vértices ou induzido por
dele mesmo. arestas.

Subgrafo Induzido por Arestas


Subgrafo Gerador
Um subgrafo de G pode ser obtido por um subconjunto de arestas e seus res-
pectivos vértices. Nesse caso será denominado induzido por arestas. G = (Np ,Ap ) é um subgrafo
gerador de G quando
Subgrafo Induzido por Vértices Np = N e Ap  A, ou seja,
subgrafo gerador é um
Um subgrafo de G pode ser obtido por um subconjunto de vértices e suas res- subgrafo parcial de G.
pectivas arestas. Nesse caso será denominado induzido por vértices.

A Figura 1.45 exemplifica a formação de um subgrafo por indução de arestas. O conjunto de indução é formado
por M \ {a, b, c, d }, onde as arestas a, b, c e d são rotuladas na Figura 1.45(1). Todas as arestas do conjunto de indu-
ção farão parte do subgrafo formado. Quando uma aresta é incluída no subgrafo, os seus vértices são obrigatoria-
mente incluídos. Observa-se na Figura 1.45(3) que o subgrafo induzido por arestas não possui o vértice incidente
às arestas c e d, uma vez que nenhuma delas pertence ao conjunto de indução. Um subgrafo induzido por arestas
não possui vértices isolados.

Grafo de referência Arestas removidas Subgrafo formado

Figura 1.45 Formação de subgrafo por indução de arestas


CAPÍTULO 1  Conceitos básicos 27

A Figura 1.46 exemplifica a formação de um subgrafo por indução de vértices. O conjunto de indução é forma-
do por N \{v}, onde o vértice v é ressaltado na Figura 1.46(1), o grafo de referência. A Figura 1.46(2) mostra a reti-
rada do vértice marcado na Figura 1.46(1), bem como de suas arestas. A Figura 1.46(3) exibe o subgrafo resultante.
Na indução por vértices todas as arestas incidentes no conjunto de vértices de indução farão parte do subgrafo
induzido. Claramente, se um vértice não fizer parte do conjunto de indução, nenhuma aresta nele incidente fará
parte do subgrafo induzido. Nesse caso, é possível a formação de subgrafos com vértices isolados.

Grafo de referência Vértice removido Subgrafo formado

Figura 1.46 Formação de subgrafo por indução vértices

Supergrafo
Um supergrafo é qualquer
Se G´ é um subgrafo de G, então G também pode ser denominado um super- grafo que pode derivar um grafo
grafo de G´. de referência por redução em
arestas ou vértices.

A Figura 1.47 exemplifica a formação de um supergrafo. A Figura 1.47(1) exibe o grafo de referência. A Figura
1.47(2) mostra o acréscimo dos vértices ressaltados, bem como as arestas pontilhadas. A Figura 1.47(3) mostra o
supergrafo formado.

Figura 1.47 Formação de um supergrafo

Subgrafo Maximal
Maximal deve ser distinto
Um subgrafo G’ de G é dito maximal com respeito à propriedade τ se G’ possui de máximo.
a propriedade τ e não é um subgrafo próprio de nenhum outro subgrafo de G Maximal é condição
que possua a mesma propriedade τ. de pertinência.
28 Grafos

No grafo desconexo da Figura 1.48(1), existem três conjuntos de vértices que induzem três subgrafos conexos,
como mostra a Figura 1.48(2). Considerando-se a propriedade τ um “subgrafo conexo” e examinando-se os três
conjuntos de vértices do grafo G, conclui-se que: cada um dos subgrafos induzidos pelos conjuntos de vértices
{1,2,3}, {4,5,6,7} e {8,9,10,11,12} é conexo maximal. A condição de subgrafo maximal deriva do fato de cada um
não ser subgrafo próprio de qualquer outro subgrafo conexo. O subgrafo induzido pelo conjunto de vértices {4,5,6}
também é conexo, entretanto não é maximal, uma vez que é subgrafo próprio do subgrafo conexo induzido pelo
conjunto de vértices {4,5,6,7}. O subgrafo induzido pelo conjunto {8,9,10,11,12} é máximo, uma vez que é o de
maior ordem dentre os três subgrafos maximais.

Figura 1.48 Subgrafos conexos maximais

Componente Conexa
Uma componente conexa de um grafo G é um subgrafo conexo maximal de G.
O número de componentes conexas em G é denotado por c.
Grafos conexos
possuem apenas uma
componente conexa.
Uma componente conexa F = (NF,MF) de um grafo G = (N,M) é chamada
ímpar (par) se |NF| é ímpar (par). O número de componentes ímpares de um
grafo G será denotado por q(G).
CAPÍTULO 1  Conceitos básicos 29

A Figura 1.49(3) mostra dois subgrafos próprios do grafo da Figura 1.49(1) que, embora conexos, não são
as componentes conexas de G. Falta-lhes a condição de serem maximais como os subgrafos A e B da Figura
1.49(2).

Figura 1.49 Componentes conexas

Conexidade ou Conectividade em Vértices As Figuras 1.50(2) e (3)


exemplificam remoções de vér-
A conectividade ou conexidade em vértices de um grafo conexo de G é o menor tices que resultam na descone-
número de vértices cuja remoção resulta em um grafo desconexo ou em um xão do grafo da Figura 1.50(1).
grafo trivial. Nesse exemplo, tem-se  (G) = 1.
(G) A conexidade em vértices é
também denominada conexi-
Conexidade ou Conectividade em Arestas dade do grafo.
As Figuras 1.51(2) e (3)
A conectividade ou conexidade em arestas de um grafo conexo de G é dada pelo
exemplificam possibilidades
menor número de arestas cuja remoção resulta na desconexão de G.
distintas de desconexão do
(G) grafo da Figura 1.51(1). Para
o exemplo  (G) = 2.

Figura 1.50 Conexidade em vértices


30 Grafos

Figura 1.51 Conexidade em arestas

Grafo k-Conexo
Um grafo é dito k-conexo quando para qualquer par de vértices de G existem pelo menos k caminhos disjuntos entre
eles.

As Figuras 1.52(2), (3) e (4) exibem 3 caminhos disjuntos entre o mesmo par de vértices do grafo da Figura
1.52(1). Como qualquer que seja o par de vértices do grafo, existirão 3 caminhos disjuntos entre eles, então, k = 3
para o grafo da Figura 1.52(1).

Figura 1.52 Caminhos disjuntos no grafo (1)

Para todo grafo


k-conexo
κ (G) ≥ k e δ (G) ≥ k.
CAPÍTULO 1  Conceitos básicos 31

A Figura 1.53(2) exemplifica


Conjuntos de Desconexão um conjunto de desconexão mini-
O conjunto minimal de vértices cuja remoção ocasiona a desconexão de G é mal em vértices ou corte em vérti-
denominado conjunto de desconexão. ces do grafo da Figura 1.53(1).
A Figura 1.53(3) exemplifica o
O conjunto minimal de arestas cuja remoção ocasiona a desconexão de G é caso em que a remoção de um vér-
denominado conjunto aresta desconectante. tice não resulta na desconexão do
grafo da Figura 1.53(1).
Corte As Figuras 1.54(2) e 1.54(3)
exemplificam duas operações de
Um corte em um grafo G é uma operação que, através da remoção de vértices remoção de arestas do grafo 1.54(1)
ou da remoção de arestas, resulta no aumento do número de componentes que resultam na desconexão do
conexas de G. Alguns autores associam o conceito de corte somente à remoção grafo. Em ambos os casos são for-
de arestas (Diestel, 1997). mados dois subgrafos conexos.
Ambas as operações são minimais,
Conjunto de Articulação pois não podem ser realizadas com
Um conjunto de articulação de G é um conjunto de vértices cuja remoção menor número de arestas, carac-
resulta na desconexão de G. terizando, portanto, duas formas
diferentes de desconexão do grafo
Ponte 1.54(1).
O vértice 4 do grafo da Figu-
Uma ponte de G é uma aresta cuja remoção resulta na desconexão de G. ra 1.53(1) é um ponto de articu-
lação. A aresta u1 é uma ponte,
conforme mostrado na Figura
1.54(3). O exemplo mostra que pontes e pontos de articulação não estão obrigatoriamente associados. Todavia,
cada ponte define dois pontos de articulação no grafo.

Figura 1.53 Efeitos da remoção de vértices no grafo G


32 Grafos

Como a Figura 1.54 mostra, a desconexão de um grafo pode gerar uma ou mais de uma componente conexa.
Corte é um tipo especial de conjunto de desconexão ou de separação (portanto minimal) que, quando removido
do grafo G, resulta no aumento do número de componentes conexas de um grafo em apenas uma unidade.

Figura 1.54 Efeitos da remoção de arestas no grafo G

Corte em Vértices
Caso o conjunto de vértices ou
O conjunto minimal de vértices cuja remoção torna G desconexo e composto
arestas removido de G produza
por duas componentes conexas.
mais de duas componentes co-
nexas será denominado conjun-
Cortes em Arestas to de desconexão ou conjunto
O conjunto minimal de arestas cuja remoção torna G desconexo e composto separador, como anteriormente
por duas componentes conexas. definido.

Matriz de Corte Qc
Uma matriz de corte QC é a matriz obtida pelas condições abaixo descritas:

O conceito é associado ao corte em arestas. As Figuras 1.56(1) e (2) exem-


plificam os possíveis cortes do grafo da Figura 1.55(1). A Figura 1.57 exibe a Figura 1.55 Grafo G
matriz de corte associada ao grafo da Figura 1.55(1).
CAPÍTULO 1  Conceitos básicos 33

(1) Primeiro conjunto de cortes (2) Segundo conjunto de cortes

Figura 1.56 Organização de uma matriz de cortes

K-Cortes
Um k-corte em arestas ou vértices é um corte com
k elementos (arestas ou vértices).

Figura 1.57 Matriz de cortes do grafo da Figura 1.55

Matriz de Cortes Fundamentais Qf


Dado um subgrafo gerador conexo e acíclico de G, isto é, uma árvore geradora
T de G, um corte fundamental em G é aquele que remove apenas uma aresta

A Figura 1.59(1) exemplifica os n-1 cortes fundamentais do grafo da


Figura 1.58, e a Figura 1.59(2) exibe a matriz de cortes fundamentais
associada. A matriz de cortes fundamentais possui uma submatriz canô-
nica, destacada na Figura 1.59(2), após uma conveniente permutação nas
Figura 1.58 Grafo G
colunas da matriz.
34 Grafos

(1) Possíveis cortes (2) Matriz de cortes fundamentais

Figura 1.59 Organização de uma matriz de cortes fundamentais

Bloco
Um bloco é um subgrafo 2-conexo maximal ou um subgrafo maximal formado A Figura 1.60(2) exemplifi-
por uma aresta. ca os blocos do grafo da Figura
Um subgrafo de G é um bloco quando: 1.60(1). Neste exemplo, o blo-
co B é formado por uma aresta
1. for não separável – não pode ser tornado desconexo pela eliminação de
um vértice; isolada.
2. for maximal em G.

Figura 1.60 Blocos de um grafo G


CAPÍTULO 1  Conceitos básicos 35

Rank de um Grafo – r
r
O rank “r”, ou posto, de um grafo G com n vértices e c componentes conexas é dado A Figura 1.61 ilustra o cálcu-
lo do rank do grafo.
r=n–c

Figura 1.61 Cálculo do rank de um grafo G

A Figura 1.62 exemplifica o


Nulidade de um Grafo – r cálculo da nulidade.
Nulidade L de um grafo G com m arestas, n vértices e c componentes conexas, O número ciclomático de um
é definida como: grafo conexo pode ser interpre-
tado também como o número de
L=m−n+c=m−r L arestas que devem ser removidas
de um grafo para que o mesmo
Número Ciclomático – g seja reduzido a uma árvore.
A Figura 1.63(2) exemplifi-
Em um grafo G, o número ciclomático ou rank de ciclos, γ, é o menor número ca a remoção de três arestas do
de arestas que devem ser removidas de G para que o mesmo não apresente ci- grafo da Figura 1.63(1). Uma vez
clos. O invariante pode ser calculado pela expressão que se segue: que m = 8 e n = 6,  = 3 para o
grafo da Figura 1.63(1).
γ = m − n +1 g

Figura 1.62 Cálculo da nulidade de um grafo G


36 Grafos

Figura 1.63 Cálculo do número ciclomático de um grafo

1.4 Família de Grafos Especiais


Alguns grafos possuem características que os distinguem dos demais. Tais características podem resultar em pro-
priedades notáveis ou em indicativo para seu emprego em modelagem.

Grafo Bipartido As Figuras 1.64(1)-(3) apre-


sentam exemplos de grafos bi-
Um grafo G = (N,M) é dito bipartido quando seu conjunto de vértices N pode partidos em que os conjuntos de
ser dividido em dois conjuntos N1 e N2 tais que N1  N2 =  e N1  N2 = N e vértices são {1,3,5} e {2,4,6}.
somente existem arestas em G ligando algum vértice de N1 com algum vértice
A Figura 1.65 apresenta dois
de N2 e vice-versa.
exemplos de grafos tripartidos.

Figura 1.64 Exemplos de grafos bipartidos

Uma partição de vértices em G é qualquer divisão nos vértices de G ou agrupamentos de vértices, realizada se-
gundo determinado critério. Um critério comum empregado em partições é o da não adjacência. Um grafo bipar-
tido é aquele que pode ter seus vértices divididos em dois conjuntos ou partições tais que nelas não se encontrem
vizinhos. Em caso da existência de k conjuntos de vértices disjuntos, o grafo é dito k-partido.
CAPÍTULO 1  Conceitos básicos 37

Figura 1.65 Exemplos de grafos 3-partidos

Grafo Completo
A Figura 1.66(1) exemplifica
Um grafo G é dito completo se existe uma aresta associada a cada par de vér-
tices de G. No caso orientado isso significa a existência de um arco para cada
quatro grafos completos. As Fi-
par ordenado de vértices. guras 1.66(2) e (3) exemplificam
grafos bipartidos completos. A
Figura 1.67 exibe uma família de
Grafo Bipartido Completo Kp,q cliques do grafo G.
No presente texto o termo
Um grafo G bipartido é dito completo se cada vértice do conjunto N1, com clique será considerado femini-
p vértices é adjacente a todos os q vértices do conjunto N2 e vice-versa. no, e o grafo clique será denomi-
nado “uma clique”.
Ressalte-se que o conceito de
Grafo Clique – Kn
Kn clique embute a necessidade de
um supergrafo.
Um grafo clique de um grafo G é um subgrafo completo de G.

Grafo Clique – Definição Alternativa


Um grafo KG é um grafo clique se e somente se ele contém uma família F de Clique não é
subgrafos completos cuja união resulta KG, tal que nenhum par de grafos com- conceitualmente
pletos em alguma subfamília possui uma interseção* vazia – a interseção entre um sinônimo para
todos os membros da família é não vazia (Harary, 1994, p. 20). grafo completo,
porque se refere a
(*) Grafos interseção são definidos no Capítulo 7. subgrafos de G.
38 Grafos

Figura 1.66 Exemplos de grafos completos e bipartidos completos

Figura 1.67 Família de cliques

Teorema 1.2
Um grafo G é bipartido se e somente se todo ciclo em G for par.

Teorema 1.3
O número de arestas em um grafo completo G = (N,M) é

onde n = |N|

Prova 1 do teorema 1.3: Por indução matemática. Chamando de Gn um grafo que contém n vértices, considere inicial-
mente o caso trivial, o grafo G1. Neste caso, como existe somente um vértice, é impossível definir uma aresta que
não seja um laço (ver K1 da Figura 1.55). Então, n(n-1)/2 = 0 para n=1.
Supondo-se que a hipótese é verdadeira para Gn, onde n ≥ 1, considere o grafo Gn+1. Seja xn+1 o vértice adicional
que se encontra em Gn+1 e não em Gn. O número máximo de arestas no grafo Gn+1 é igual ao número máximo no
grafo Gn mais todas as ligações possíveis entre xn+1 e cada vértice de Gn. Como esse número de ligações é igual ao
número de vértices em Gn, tem-se:
CAPÍTULO 1  Conceitos básicos 39

Número de arestas de „

Considerando que o número de arestas de um grafo completo


Prova 2 do teorema 1.3: Pela combinação de vértices.
de n vértices corresponde a todas as possíveis combinações ij, onde i e j são vértices, o número de vértices pode ser
expresso da seguinte forma:

Observe que esta prova obtém diretamente o número de arestas de Gn, diferentemente da prova 1, que se refere
ao grafo Gn+1.

Prova 3 do teorema 1.3: Por contagem.Seja um vértice qualquer xi de G. Em um grafo completo, o grau de xi é n-1,
por conseguinte em xi incidem n-1 arestas. Considerando-se agora todos os vértices do grafo, temos que o soma-
tório dos graus é n(n-1). Como cada aresta incide em dois vértices, o número m das arestas de G é:

Grafo Torneio
Um grafo é dito torneio quando cada par de vértices em G é ligado exatamente
por um arco. Em outras palavras, um grafo completo e direcionado é deno-
minado torneio.

Um torneio é dito redutível se seus vértices podem ser particionados em


dois conjuntos não vazios A e B, tais que todo arco unindo um vértice de A
com um vértice de B é direcionado do vértice em A para o vértice em B. No
exemplo da Figura 1.68 tem-se A = {4} e B = {1,2,3}. Figura 1.68 Torneio

Teorema 1.4 Um grafo regular com


grau três é denominado
Todo torneio irredutível contém um caminho hamiltoniano.
cúbico. Um grafo
regular com grau quatro
é denominado quartic.

Grafo Regular A Figura 1.69 exibe três conhe-


Um grafo G é dito regular de grau r ou r regular se cada vértice em G possuir cidos grafos regulares. Os grafos
grau r. de Petersen e Frucht são 3-regu-
lares e o grafo de Caley/Quartic é
4-regular.
40 Grafos

Figura 1.69 Grafos regulares

Teorema 1.5
O número de vértices de grau ímpar de um grafo é sempre par.

Prova: Como a soma dos graus dos vértices de um grafo é par (ver lema 1.1), uma vez que todas as arestas são
consideradas duas vezes nessa soma, e qualquer número multiplicado por dois é par, pode-se organizar a seguinte
equação para descrever essa soma:

onde P representa o conjunto dos vértices de G que possuem grau par e I o conjunto dos vértices que possuem grau
ímpar. Como a primeira parcela à direita da expressão, que é composta pela soma de um número par de vértices,
deve ser par, consequentemente a segunda parcela também o será. Como o número de arestas que incide em cada
vértice do conjunto I deve ser ímpar – possuem grau ímpar – sua soma deve ser par, para atender o conjunto da
expressão. Então, a única forma de a soma do segundo termo da expressão ser par é o número de vértices de grau
ímpar ser par „.
Um grafo G é dito imerso em determinado espaço Rd se cada vértice de G é designado a uma posição em Rd. As
Figuras 1.59(1) e (2) exibem imersões de grafos em R2 e R3.

Grafo Planar
Em outras palavras, G é planar
Um grafo G é dito planar se seus vértices e arestas podem ser imersos em R 2
se admite uma representação no
tal que suas arestas não se cortem/cruzem. plano de modo que nela não exis-
te cruzamento de arestas.

A Figura 1.70(3) exibe um grafo explicitamente planar, enquanto a Figura 1.70(4) exibe um grafo implicitamen-
te planar. O grafo da Figura 1.70(4) exige um rearranjo de traçado para que sua condição de grafo planar torne-se
explícita.
CAPÍTULO 1  Conceitos básicos 41

Figura 1.70 Imersões e grafos planares

Cruzamento de Arestas – Cross(G) A Figura 1.71(2) apresenta a


Cross configuração de cruzamento óti-
O número de cruzamentos de arestas, Cross(G), é o menor número de cruza- mo de arestas do grafo da Figura
mentos de arestas possíveis no traçado de um grafo G. 1.71(1). A figura exibe outro grafo
com Cross(G) = 1.

Figura 1.71 Exemplos do número de cruzamentos de arestas

A imersão de um grafo planar em um plano divide o plano em regiões. Uma região é finita se sua área é finita,
caso contrário, a região é infinita. A Figura 1.72 mostra exemplos de grafos planares que dividem o plano em qua-
tro e seis regiões, sendo que em ambos os casos existe uma região infinita.
42 Grafos

(1) Grafo que divide o plano em 4 regiões (2) Grafo que divide o plano em 6 regiões

Figura 1.72 Regiões de um grafo planar

Teorema 1.6
n+f–m=2
onde n = |N|, m = |M| e f denota o número de regiões.

A fórmula de Euler (Teorema 1.6) relaciona o número de vértices, o número de arestas e o número de regiões
de uma representação planar de um grafo G. A prova do Teorema 1.6 vem do fato de que f = γ+1. O corolário do
Teorema 1.6 estabelece uma condição para um grafo ser planar.

Corolário do Teorema 1.6


m ≤ 3n – 6
onde n = |N|, m = |M|.

Com exceção das pontes, cada aresta delimita duas regiões. Contando cada ponte duas vezes, o somatório do
número de arestas em cada região é igual a 2m. Considerando grafos simples e n ≥ 3, cada região possui, no mí-
nimo, 3 arestas. Portanto, tem-se que 2m ≥ 3f. Substituindo f pela fórmula de Euler, tem-se que 2m ≥ 3(2+m-n),
provando o corolário do Teorema 1.6.
Embora o corolário do Teorema 1.6 estabeleça uma condição necessária para planaridade, ela não é suficiente,
ou seja, existem grafos que satisfazem a condição e são não planares. Um exemplo é o grafo K3,3, o qual possui
m = 9, satisfazendo a condição m ≤ 3(6) – 6, mas não possui representação planar. Se K3,3 fosse planar, ele satisfaria
a fórmula de Euler e teria f = 2 + m – n regiões, ou seja, 5 regiões. Entretanto, não existe ciclo em K3,3 com menos de
4 arestas. Assim, cada região é definida por, no mínimo, 4 arestas. Uma vez que o somatório do número de arestas
em cada região é igual a 2m, teríamos f ≤ 2m/4, ou seja, f ≤ 18/4. Esse resultado é uma contradição com o resultado
anterior obtido com a fórmula de Euler. Portanto, K3,3 é não planar.
O grafo K3,3 é um dos dois grafos de Kuratowski; o outro é o K5 que também é não planar. A condição de não
planaridade do K5 é facilmente verificada pelo corolário do teorema 1.6. O número de arestas do K5 é 10, entretanto
pelo corolário do teorema 1.6 um grafo com 5 vértices pode ter, no máximo, 9 arestas para ser planar.
CAPÍTULO 1  Conceitos básicos 43

1.5 Operações com Grafos e Estruturas Parciais

Isomorfisco
Os grafos G1 e G2 são ditos isomorfos se é possível estabelecer uma correspon-
dência biunívoca entre seus vértices e arestas, bem como entre suas relações
vértices versus arestas.

Grafo Isomorfo GI
Dois grafos G1 = (N1,M1) e G2 = (N2,M2) são isomorfos se existe uma função
unívoca f: N1 → N2 tal que (i,j ) é elemento de M1 se e somente se (ƒ(i),f( j)) é
elemento de M2.

A Figura 1.73 exibe dois grafos isomorfos. Grafos isomorfos são analiti-
camente idênticos, contudo podem ser representados graficamente de forma
diferente. Para verificar o isomorfismo dos grafos da Figura 1.73, pode-se
utilizar a seguinte função: f(a) = 1, f(b) = 2, f(c) = 4, f(d) =3, f(e) = 5, f(f) = 6,
f(g) = 8, f(h) = 7. A Figura 1.74 exibe grafos isomorfos ao K4. Figura 1.73 Grafos isomorfos

Figura 1.74 Grafos isomorfos ao K4

Teorema 1.7
1. Grafos isomorfos possuem a mesma sequência de graus.
2. Dois grafos não são isomorfos se um deles contém um subgrafo que não
pertence ao outro.
44 Grafos

Homeomorfismo
Inserção de vértices: É uma operação que permite adicionar um vértice em
qualquer aresta de G, criando consequentemente duas novas arestas em G.

Fusão de arestas: É uma operação que permite suprimir um vértice v de G se


d(v) = 2, eliminando-se as arestas que incidem sobre v suprimindo-o e criando
uma nova aresta que liga os vértices que se encontravam originalmente conec-
tados ao vértice v eliminado.

(1) Inserção

Grafo Homeomorfo GH
Dois grafos G1 e G2 são ditos homeomorfos se são isomorfos ou podem ser fei-
tos isomorfos por aplicações repetidas de operações de inserção de vértices
ou fusão de arestas. Um grafo homeomorfo a G será denotado como H(G).

A Figura 1.75 exemplifica as operações de inserção de vértices e fusão de


arestas do homeomorfismo. As Figuras 1.76(2) e 1.76(3) exibem dois grafos
(2) Fusão
homeomorfos ao grafo da Figura 1.76(1) e entre si, ressaltando-se as opera-
ções de homeomorfismo que os ligam. Figura 1.75 Operações

Figura 1.76 Grafos homeomorfos

Os grafos K5 e K3,3 são considerados um exemplo clássico de estruturas não planares. Esses grafos são denomi-
nados também grafos de Kuratowski. O Teorema 1.8, utilizando as propriedades do homeomorfismo, estabelece
uma importante propriedade para os grafos planares.

Teorema 1.8 O Teorema de


Kuratowski é
Um grafo G é planar se e somente se não possui subgrafo homeomorfo ao K5 demonstrado
ou ao K3,3 – Teorema de Kuratowski. em Tutte (1963).
CAPÍTULO 1  Conceitos básicos 45

A prova do Teorema 1.8 segue do fato de K5 e K3,3 serem não planares, como já discutido anteriormente.

Grafo Minor GM
Um grafo H é chamado minor – ou menor – de um grafo G se H é isomorfo a
um grafo que pode ser obtido por uma sequência finita de contrações de arestas

A Figura 1.77(2) ilustra a contração da aresta 1-3 do grafo da Figura 1.77(1). Observe que a contração elimina a
aresta e sobrepõe arestas que ligavam os vértices terminais da aresta removida a um vértice vizinho comum como,
por exemplo, os vértices 4 e 2.

Figura 1.77 Contração de arestas

Teorema 1.9 O Teorema 1.9 é


demonstrado em
Um grafo G é planar se e somente se não possui K5 ou ao K3,3 como minor. (Lovász, 2005).

Utilizando o Teorema 1.9, a Figura 1.78 demonstra que o grafo de Petersen é não planar por conter K5 como minor.

Figura 1.78 Grafo minor do grafo de Petersen


46 Grafos

Grafo Dual G
Um grafo GΔ é dito Dual de um grafo planar G quando é obtido de G pela se-
guinte operação:

1. Atribuir um vértice a cada região do grafo planar, incluindo a região externa.


2. Se duas regiões possuem uma aresta em comum (aresta e), ligar o nó interior
a cada região por uma aresta s que cruze a aresta e.

A Figura 1.79 exemplifica a obtenção de um grafo dual. As linhas pontilhadas da Figura 1.79(2) mostram os
possíveis caminhos para a ligação das três regiões, a, b e c, da Figura 1.79(1) cruzando por sobre cada uma das
arestas do grafo G. A Figura 1.79(3) apresenta o multigrafo dual do grafo da Figura 1.79(1).

Figura 1.79 Exemplo de construção de um grafo dual

União Disjunta de Grafos Gu A união de dois grafos


disjuntos resulta em
Sendo G1 = (N1, M1) e G2 = (N2, M2) dois grafos disjuntos em vértices, sua união um grafo desconexo,
disjunta (N1  N2 = ) resulta no grafo Gu = (Nu, Mu) com Nu = N1  N2 e Mu = portanto não necessita
M1  M2 (Harary, 1972). obrigatoriamente de
rotulação.
Soma Disjunta de Grafos
Gs
Sendo G1 = (N1, M1) e G2 = (N2, M2) dois grafos disjuntos em vértices, sua Soma A operação de soma
Disjunta resulta no grafo Gs = (Ns, Ms) onde Ns = N1  N2 e Ms = M1  M2, sendo disjunta, pelo motivo
M3 o conjunto de todas as arestas que podem ser traçadas entre os conjuntos de anterior, não necessita
vértices N1 e N2 (Harary, 1972). obrigatoriamente de
rotulação.

A Figura 1.80(3) exibe o grafo obtido da união disjunta dos grafos das Figuras 1.80(1) e (2). De forma seme-
lhante, a Figura 1.81(3) exibe a soma disjunta dos grafos das Figuras 1.81(1) e (2). Observar como as operações não
CAPÍTULO 1  Conceitos básicos 47

necessitam de rotulação. No caso da existência de rotulação, a operação ainda é possível, desde que a rotulação seja
igualmente disjunta em rótulos, ou que exista uma regra para a rotulação final do grafo soma disjunta.

Figura 1.80 União disjunta

Figura 1.81 Soma disjunta

Soma em Anel Ga A soma em anel


Sendo G1 = (N1, M1) e G2 = (N2, M2) dois grafos, sua soma em anel resulta no exige grafos
grafo Ga = (Na, Ma), induzido pelo conjunto de arestas M1  M2. A operação  rotulados.
representa o ou disjunto, ou seja, as arestas que estão no conjunto Ma = (M1 
M2 ) \ (M1  M2) (Swamy & Thulasiraman, 1981).

A soma de grafos
Soma de Grafos
G+ só pode ser
definida como
G+ = (N+, M+) é um grafo soma de G1 = (N1, M1) e G2 = (N2, M2) quando: proposta se
G 1 e G2
M+ = (M1  M2) e N+ = (N1  N2). são subgrafos de
um certo grafo G.
48 Grafos

A Figura 1.82(3) exibe o grafo obtido da soma em anel dos grafos das Figuras 1.82(1) e (2). De forma seme-
lhante, a Figura 1.83(3) exibe a soma dos grafos das Figuras 1. 83(1) e (2). Observar como as operações necessitam
de rotulação.

Figura 1.82 Soma em anel

Figura 1.83 Soma de grafos

Diferenças de Grafos Gd A diferença de


grafos somente
Gd = (N,M) é um grafo diferença de G1 = (N1, M1) e G2 = (N2, M2) quando pode ser realizada
N = N1 = N2 e M = M1\M2. se o grafo G1
contiver todas as
(*) Esse grafo exige que M1  M2. arestas do grafo G2
M1  M2.
Inserção
Sendo G1 = (N1, M1) e G2 = (N2, M2) dois grafos rotulados, a interseção de
G1  G2 é um grafo G = (N1  N2,M1  M2) (Swamy & Thulasiraman, 1981). O grafo obtido pela operação de
interseção não é um grafo de
interseção!
CAPÍTULO 1  Conceitos básicos 49

A Figura 1.84(3) exibe o grafo obtido pela diferença dos grafos das Figuras 1.84(1) e (2). De forma semelhante,
a Figura 1.85(3) exibe a interseção dos grafos das Figuras 1.85(1) e (2). Observar como as operações necessitam
de rotulação.

Figura 1.84 Diferença de grafos

Figura 1.85 Interseção de grafos

Grafo Complemento
G
G= (Nc ,Mc) é um grafo complemento de G = (N,M) quando Nc = N, Mc  M =
Grafo complementar
 e Mc  M = U, onde U representa o conjunto de arestas de um grafo completo
com n vértices. e
Grafo complemento
se distinguem em
Grafo Complementar Gco função do referencial
de sua soma.
Gco = (Nco,Mco) é um grafo complementar de G = (N,M) em relação a Gh =
(Nh,Mh) quando Nco = Nh = N, Mco  M =  e Mco  M = Mh.
50 Grafos

A Figura 1.86(2) exibe o grafo complemento do grafo da Figura 1.86(1). O grafo completo, referencial da for-
mação do grafo complemento, é apresentado na Figura 1.86(3) para ilustrar a construção do grafo complemento.
De forma semelhante, a Figura 1.87(2) exibe o grafo complementar do grafo da Figura 1.87(1) e o grafo referencial
é apresentado na Figura 1.87(3). Observe que somente é possível a determinação de um complementar em um
grafo rotulado.

Figura 1.86 Grafo complemento

Figura 1.87 Grafo complementar

Operação de Adição de Arestas


Sendo v e w dois vértices distintos em G = (N,M) tal que a aresta (v,w)  M, a A adição de arestas é
operação G/vw consiste em acrescentar a aresta (v,w) a G. também denominada
de join.

A Figura 1.88(2) exibe uma adição de arestas sobre o grafo da Figura 1.88(1).
CAPÍTULO 1  Conceitos básicos 51

Figura 1.88 Operação de adição de arestas

Operação de União Total de Grafos +


O símbolo  indica a
operação de união de
Sendo G1 = (N1,M1) e G2 = (N2,M2) dois grafos rotulados, sua união total resulta conjuntos múltiplos
no grafo Gut = (Nut, Mut) tal que: (multisets ou bags).
+
Nut = N1  N2 e Mut = M1  M2

(Swamy & Thulasiraman, 1981)


A união total pode
resultar em multigrafos.

A Figura 1.89(3) exibe uma união total dos grafos das Figuras 1.89(1)-(2).

Figura 1.89 Operação de união total


52 Grafos

Produto Cartesiano de Grafos X


G
A formalização da
Dados os grafos G1 = (N1,M1) e G2 = (N2,M2), N1 = {u1,...,ur}, N2 = {v1,...,vs}, o
operação de
produto cartesiano de G1 e G2, é o grafo
produto
X cartesiano pode
G = (NX, MX) onde NX = (N1xN2), produto cartesiano dos conjuntos N1 e N2,
ser encontrada em
Nx = {w1,...,wz}, z = r x s, e existe aresta (wk,wc)  Mx, wk = [ui,vj] e wc = [ua,vb], se:
Beineke & Wilson (2004).
ui = ua e  (vj,vb)  M2 ou vj = vb e (ui,ua)  M1

A Figura 1.90 ilustra a opera-


ção de produto cartesiano dos gra-
fos G1 e G2.

Figura 1.90 Produto cartesiano de grafos

O produto cartesiano entre determinados grafos produz alguns grafos notáveis, como:

Produto Cartesiano Grafo Resultante Produto Cartesiano Grafo Resultante

Pn † Pm Grafo Grade Gn,m Cn † Pm Grafo Prisma Yn,m

Pn † P2 Grafo Escada Ln Sn+1 † P2 Grafo Livro Bn

Pn † Pm † Pl Grafo Grade Gn,m,l Sn+1 † Pm Grafo Livro Bn,m

Cn † P2 Grafo Prisma Yn

Os grafos acima serão abordados em tópicos específicos.


CAPÍTULO 1  Conceitos básicos 53

1.6 Estruturas de Dados para Grafos


A representação geométrica de um grafo é conveniente ao ser humano por ser visual. Contudo, computacional-
mente tal forma de representação ainda é inviável. Um grafo pode ser representado por diversas estruturas de
dados diferentes. Nesta seção serão apresentadas cinco dessas representações: matriz de adjacência, matriz de
incidência, lista de adjacência, vetorial e estrela direta e reversa.

Matriz de Adjacência
A matriz de
Uma matriz A = [aij ] quadrada de ordem n é denominada matriz de adjacência de adjacência
G = (N,M) quando: ocupa O(n2)
posições de
aij =1, se (i,j)M memória.
aij = 0 em caso contrário.

As Figuras 1.91 e 1.92 apresentam exemplos de matrizes de adjacências para grafos não direcionados e direcio-
nados, respectivamente. As matrizes são quadradas de ordem n.

(1) Grafo não direcionado G (2) Matriz de adjacência de G

Figura 1.91 Matriz de adjacências de grafo não direcionado

(1) Grafo direcionado G (2) Matriz de adjacência de G

Figura 1.92 Matriz de adjacência de grafo direcionado


54 Grafos

Matriz de Incidência
A matriz de
Uma matriz A = [aki] de dimensão m × n é denominada matriz de incidência de incidência
um grafo G = (N,M) quando:
ocupa O(nm)
posições de
aki = +1, se a aresta uk tem origem no vértice i
memória.
aki = –1, se i é o vértice destino da aresta uk
aki = 0, se a aresta uk não incide no vértice i

As Figuras 1.93 e 1.94 apresentam exemplos de matrizes de incidência para grafos não direcionados e direcio-
nados, respectivamente. O número de 1s na coluna i da matriz de incidência corresponde ao número de arestas
incidentes no i-ésimo vértice. Por exemplo, na coluna 1 da matriz da Figura 1.93(2) observa-se que apenas uma
aresta incide no vértice 1. A dimensão de uma matriz de incidência é m × n.

(1) Grafo não direcionado G (2) Matriz de incidência

Figura 1.93 Matriz de incidência de um grafo não direcionado

(1) Grafo direcionado G (2) Matriz de incidência

Figura 1.94 Matriz de incidência de um grafo direcionado


CAPÍTULO 1  Conceitos básicos 55

Lista de Adjacência A lista de


adjacência
A lista de adjacência é composta por um vetor V de dimensão n. Cada elemento ocupa O(n+m)
de V contém dois campos: a identificação de um vértice e um ponteiro para
posições de
uma lista encadeada contendo os vizinhos do vértice correspondente.
memória.

A identificação dos vértices pode ser omitida caso o vértice corresponda ao índice do vetor. Neste caso, a lista
de adjacência será composta por um vetor de ponteiros e pelas listas encadeadas correspondentes. Além do espaço
necessário para representar o vetor V na memória, as listas encadeadas ocupam, para o caso dos grafos não dire-
cionados, um espaço proporcional a 2m posições, uma vez que as vizinhanças são recíprocas.
A Figura 1.95(2) exemplifica a representação em lista de adjacência do grafo não direcionado da Figura 1.95(1).
No caso dos grafos direcionados, a lista encadeada correspondente a um vértice i é composta pelos vértices j, tais
que existe uma aresta com origem no vértice i e destino no vértice j. No caso dos dígrafos, o espaço na memória
necessário para representar as listas encadeadas é proporcional a m.

(1) Grafo não direcionado G (2) Lista de adjacência

Figura 1.95 Exemplo de lista de adjacência de um grafo não direcionado

Representação Vetorial
A
Neste tipo de representação são utilizados dois vetores, V e W, com dimensões representação
n e m, respectivamente. Cada elemento i do vetor V registra o grau do vértice
vetorial
i. Os elementos de W correspondem aos vizinhos dos vértices representados
em V. Os elementos W[1] até W[V[1]] correspondem aos vizinhos do vértice ocupa O(m+n)
1, os elementos W[V[1]+1] até W[V[1]+V[2]] correspondem aos vizinhos do posições de
vértice 2, e daí por diante. Generalizando, dado um vértice j > 1, seus adjacentes memória.
encontram-se em W[V[1]+...+V[j-1] +1] a W[V[1]+...+V[j-1]+V[j]].
56 Grafos

A Figura 1.96(2) apresenta a representação vetorial do grafo da Figura 1.96(1).

(1) Grafo não direcionado G (2) Representação vetorial

Figura 1.96 Exemplo de representação vetorial de um grafo

Matriz de Pesos

Quando o grafo é ponderado, é possível aproveitar a estrutura em matriz de


adjacência, incidência e lista de adjacência para representar os pesos na própria
estrutura. No caso da matriz de adjacência substituem-se os elementos “1”s pelo
peso da aresta associada. Denominaremos essa matriz no presente texto matriz
de pesos. A Figura 1.97 exemplifica uma matriz de pesos em adjacência.

Uma representação comum para grafos direcionados que permite recu-


perar eficientemente as listas de arcos que chegam ou saem de um vérti-
ce é chamada de estrela direta-reversa (Ahuja et al., 1988). Primeiro será
apresentada a estrela direta, depois a estrela reversa e finalmente a estrela
direta-reversa. Figura 1.97 Grafo G

Representação em Estrela Direta


A
São utilizadas duas listas de tamanho m+1 referentes aos arcos e uma lista de representação
tamanho n+1 contendo inteiros. O k-ésimo elemento da primeira lista guarda o em estrela
peso do k-ésimo arco. A segunda lista contém m pares, cada um identificando direta
o vértice inicial e o vértice final do arco correspondente. A posição m+1 é so- ocupa O(m+n)
mente uma posição de referência. Na terceira lista, chamada pont, o elemento i posições de
contém o menor índice da lista de arcos que saem do vértice i. Caso não existam
memória.
arcos saindo do vértice i, o elemento pont[i] corresponde ao índice do primei-
ro arco que sai do i+1-ésimo vértice. Para efeito de consistência da estrutura,

Na representação por estrela direta, primeiro, os arcos são numerados. Inicialmente, numera-se os arcos que
saem do vértice 1, depois os que saem do vértice 2, e daí por diante até o n-ésimo vértice. A numeração dos arcos
que saem de um mesmo vértice pode ser feita arbitrariamente. Os arcos que saem do vértice i estão entre as posi-
ções pont[i] e pont[i+1]-1 na lista de arcos. Se pont[i] > pont[i+1]-1, então não existem arcos saindo do i-ésimo vér-
tice. Um exemplo da representação por estrela direta para o grafo da Figura 1.98(1) é mostrada na Figura 1.98(2).
CAPÍTULO 1  Conceitos básicos 57

(1) Grafo direcionado G (2) Listas da estrela direta

Figura 1.98 Representação por estrela direta

O grafo da Figura 1.98(1) possui cinco vértices e sete arcos. Portanto, são necessárias duas listas com oito ele-
mentos para referenciar as arestas e uma lista com seis elementos para referenciar as listas de arcos que saem dos
vértices. A Figura 1.98(2) mostra que a lista de arcos que saem do vértice 1 começa na posição 1 (pont[1]) e termina
na posição 2 (pont[2]-1) da lista de arcos. Ela contém os arcos (1,2) e (1,3) com pesos 3 e 2, respectivamente. Da
mesma forma, a lista de arcos que saem do vértice 2 começa na posição 3 (pont[2]) e termina na posição 4 (pont[3]-
1) da lista de arcos. A condição de não existência de arcos que saem do vértice 3 é mostrada nas posições pont[3]
e pont[4], onde observa-se que pont[3] > pont[4]-1. A lista de arcos que saem do vértice 4 começa na posição 5
(pont[4]) e termina na posição 6 (pont[5]-1), contendo os arcos (4,3) e (4,5). Finalmente, a lista do vértice 5 começa
e termina na posição 7 (pont[5] = pont[6]-1), contendo somente o arco (5,4).
O mesmo raciocínio é utilizado na representação por estrela reversa, onde são considerados os arcos que che-
gam a determinado vértice.

Representação em Estrela Reversa


A
São utilizadas duas listas de tamanho m+1 referentes aos arcos e uma lista de representação
tamanho n+1 contendo inteiros. O k-ésimo elemento da primeira lista guarda o em estrela
peso do k-ésimo arco. A segunda lista contém m pares, cada um identificando
reversa
o vértice inicial e o vértice final do arco correspondente. A posição m+1 é so-
mente uma posição de referência. Na terceira lista, chamada rpont, o elemento ocupa O(m+n)
i contém o menor índice da lista de arcos que chegam ao vértice i. Caso não posições de
existam arcos chegando ao vértice i, o elemento pont[i] corresponde ao índice memória.
do primeiro arco que chega ao i+1-ésimo vértice. Para efeito de consistência da

Do mesmo modo que na representação anterior, na representação por estrela reversa, primeiro os arcos são
numerados. Inicialmente, numeram-se os arcos que chegam ao vértice 1, depois os que chegam ao vértice 2, e daí
por diante até o n-ésimo vértice. Os arcos que chegam ao vértice i estão entre as posições rpont[i] e rpont[i+1]-1
na lista de arcos. Se rpont[i] > rpont[i+1]-1, então não existem arcos chegando ao i-ésimo vértice. Um exemplo da
representação por estrela reversa para o grafo da Figura 1.99(1) é mostrada na Figura 1.99(2).
58 Grafos

A Figura 1.99(2) mostra que a lista de arcos que chegam ao vértice 1 é vazia, uma vez que pont[1] > pont[2]-1.
A lista de arcos que chegam ao vértice 2 começa na posição 1 (pont[2]) e termina na posição 1 (pont[3]-1) da lista
de arcos, contendo apenas o arco (1,2). A lista de arcos que chegam ao vértice 3 começa na posição 2 (pont[3]) e
termina na posição 4 (pont[4]-1) da lista de arcos, contendo os arcos (1,3), (2,3) e (4,3). A lista de arcos que che-
gam ao vértice 4 começa e termina na posição 5 (pont[4]=pont[5]-1), contendo apenas o arco (5,4). Finalmente, a
lista do vértice 5 começa na posição 6 (pont[5]) e termina na posição 7 (pont[6]-1), contendo os arcos (2,5) e (4,5).

(1) Grafo direcionado G (2) Listas da estrela reversa

Figura 1.99 Representação por estrela reversa

Para uma recuperação eficiente das listas de arcos que chegam aos vértices e que saem deles, utiliza-se a estrela
direta-reversa, a qual reúne as duas estruturas apresentadas anteriormente. Para não ter que guardar duas listas de
pares ordenados (início, fim) com a ordem na qual os arcos chegam a cada vértice e saem deles, a estrutura possui
uma lista chamada Traço. Essa lista guarda os índices dos arcos ordenados de acordo com sua chegada a cada vér-
tice. Deste modo, a lista pont faz referência aos índices dos arcos ordenados em ordem crescente e a lista rpont faz
referência aos índices dos arcos conforme ordenação em Traço. Portanto, a lista de arcos que chegam ao vértice i
está na lista Traço, começando na posição rpont[i] e terminando na posição rpont[i+1]-1.

Representação em Estrela Direta-Reversa

São utilizadas três listas de tamanho m+1 referentes aos arcos e duas listas de
tamanho n+1 contendo inteiros. O k-ésimo elemento da primeira lista guarda
o peso do k-ésimo arco. A segunda lista contém m pares, cada um identificando A
o vértice inicial e o vértice final do arco correspondente. A posição m+1 é so- representação
mente uma posição de referência. Na terceira lista, pont, o elemento i contém em estrela
o menor índice da lista de arcos que saem do vértice i. Caso não existam arcos direta-reversa
saindo do vértice i, o elemento pont[i] corresponde ao índice do primeiro arco ocupa O(m+n)
que chega ao i+1-ésimo vértice. A quarta lista, Traço, contém os índices dos
posições de
arcos em ordem de chegada aos vértices 1, 2, ..., n. Na quinta lista, rpont, o
elemento i referencia o menor índice da lista Traço. Caso não existam arcos memória.
chegando ao vértice i, o elemento rpont[i] corresponderá ao índice do primeiro
arco relativo i+1-ésimo vértice na lista Traço. Para efeito de consistência da es-
CAPÍTULO 1  Conceitos básicos 59

A representação por estrela direta-reversa para o grafo da Figura 1.99(1) é mostrada na Figura 1.100. As pri-
meiras três colunas correspondem à representação em estrela direta mostrada na 1.98(2). A coluna Traço mostra
a ordenação dos índices dos arcos conforme sua chegada aos vértices de 1 a n. A coluna rpont faz referência aos
índices em Traço. A lista de arcos que chegam ao vértice 1 estão na lista Traço entre as posições rpont[1] = 1 e
rpont[2]-1 = 0. Portanto a lista de arcos que chegam ao primeiro vértice é vazia. Da mesma forma, a lista de arcos
que chegam ao vértice 2 está entre as posições rpont[2] = 1 e rpont[3]-1 = 1. O índice do arco na lista Traço na posi-
ção 1 é 1, que corresponde ao arco (1,2). A lista de arcos que chegam ao vértice 3 está entre as posições rpont[3] = 2
e rpont[4]-1 = 4 da lista Traço. Os índices desses arcos são 4, 2 e 5, correspondendo aos arcos (2,3), (1,3) e (4,3),
respectivamente. A lista de arcos que chegam ao vértice 4 está entre as posições rpont[4] = 5 e rpont[5]-1 = 5 da
lista Traço. A posição 5 da lista Traço contém o índice 7, correspondendo ao arco (5,4). Finalmente, a lista de arcos
que chegam ao vértice 5 está entre as posições 6 (rpont[5]) e 7 (rpont[6]+1), com os índices 3 e 6 correspondendo
aos arcos (2,5) e (4,5), respectivamente.

Figura 1.100 Representação por estrela direta-reversa

1.7 Busca em Grafos


De modo geral, pode-se dizer que o projeto de bons algoritmos para a determinação de estruturas ou propriedades
dos grafos depende do domínio de técnicas que permitam examinar com eficiência vértices e arestas. A esse tipo de
procedimento denomina-se, genericamente, “busca em grafos” ou “percurso em grafos”. O quadro Busca Genérica
descreve um algoritmo geral de busca em grafos.

A Busca Genérica
Ler G = (N,M)
Escolher e marcar um vértice i
Enquanto existir j  N marcado com uma aresta (j,k) não explorada Fazer
Escolher o vértice j e explorar a aresta (j,k)
// condição variável em conformidade com o tipo de busca //
Se k é não marcado então marcar k
Fim_do_Enquanto
60 Grafos

Uma aplicação clássica do algoritmo de busca corresponde ao problema de encontrar a saída de um labirinto.
Considere que a circulação no labirinto da Figura 1.101(1) seja feita margeando alguma parede. Os pontos de
mudança de direção são mostrados na Figura 1.101(2). Um grafo que representa o labirinto da Figura 1.102(1) é
sugerido na Figura 1.102(2), onde as arestas mostram a possibilidade de movimento no labirinto entre os pontos
de mudança de direção.

(1) Labirinto (2) Pontos de mudança de direção

Figura 1.101 Processo de transformação de um labirinto em um grafo

Uma forma de encontrar uma saída do labirinto sem nunca percorrer mais de uma vez uma mesma parede
consiste em rotular as arestas percorridas na busca de modo a nunca percorrer uma aresta anteriormente rotulada.
A busca inicia pelo vértice correspondente a entrada do labirinto e continua até que o vértice correspondente à
saída seja alcançado.

(1) Grafo no labirinto (2) Grafo do labirinto

Figura 1.102 Grafo labirinto


CAPÍTULO 1  Conceitos básicos 61

Nas Figuras 1.103(1) e (2) são exemplificadas possíveis sequências de visitas no grafo quando aplicado o algoritmo
do quadro Busca Genérica ao problema da Figura 1.103(2). A sequência da Figura 1.99(1) inicia pelo vértice 1, per-
correndo as arestas (1,2), (2,3), (3,4), (4,5), (5,6), (6,7) e (7,8), onde o ciclo se fecha sobre o vértice 4 através da aresta
(8,4). Depois as arestas (4,9), (9,10), (10,11), (11,12), (12,13) e (13,14) são rotuladas. A saída é atingida e o algoritmo
de busca pode ser interrompido nesse ponto. Na Figura 1.103(2) uma busca mais eficiente é realizada pelo algoritmo.

(1) Busca 1 (2) Busca 2

Figura 1.103 Buscas no grafo labirinto

O exame das arestas proposto pelo algoritmo pode ser, na prática, substituído por um giz de cor. Assim, basta
riscar as paredes de um labirinto sem nunca retirar o lápis da superfície para não se perder. Basta jamais riscar duas
vezes uma mesma parede.
Dependendo do critério utilizado para examinar vértices e arestas, diferentes tipos de busca são desenvolvidos
a partir do algoritmo geral genérico. Uma busca é denominada em profundidade se, para o critério de seleção de
vértices, for exigido que a escolha seja feita sobre o vértice não marcado mais recentemente alcançado na busca.
A técnica de busca em profundidade tem se mostrado bastante útil no desenvolvimento de diversos algoritmos
eficientes que resolvem problemas, tais como encontrar componentes biconexas e fortemente conexas de um grafo,
dentre outras (Tarjan, 1972; Szwarcfiter, 1984). O procedimento recursivo de busca em profundidade, BP, a partir
de um vértice v em grafos não direcionados conexos é apresentado no quadro Busca em Profundidade 1.

A Busca em Profundidade 1
Procedimento BP(v)
marcar v
Enquanto existir w  Γ(v) Fazer
Se w é não marcado
explorar (v,w)
marcar w
BP(w)
Senão
Se (v,w) não explorada
explorar (v,w)
Fim_Se
Fim_Enquanto
Grafos não direcionados
62 Grafos

Considerando a aplicação do procedimento de busca em profundidade em um grafo G conexo a partir de um


vértice v qualquer, os vértices marcados e as arestas exploradas em consequência da satisfação da condição do
primeiro comando “se” compõem uma subárvore de G, dita árvore de profundidade de G. As demais arestas são
ditas arestas de retorno.

Figura 1.104 Grafo exemplo para aplicação da busca em profundidade

A aplicação do algoritmo do quadro Busca em Profundidade 1 ao grafo da Figura 1.104 a partir do vértice 1 é
ilustrada nas Figuras 1.105(1)-(6) e na Figura 1.106(1)-(3). Considere que o grafo está representado através de uma
lista de adjacência, onde os vértices de cada lista encadeada estão ordenados lexicograficamente. O vértice inicial é
a raiz da árvore de profundidade. A aresta (1,2) é incluída na árvore como ilustrado na Figura 1.105(1).

(1) Aresta (1,2) (2) Aresta (2,3) (3) Aresta (3,1)

(4) Aresta (3,4) (5) Aresta (4,5) (6) Aresta (5,3)

Figura 1.105 Busca em profundidade em grafo não direcionado – 1ª parte


CAPÍTULO 1  Conceitos básicos 63

Uma vez que o vértice 2 é não marcado, é feita uma chamada recursiva do procedimento BP, passando
esse vértice como parâmetro de entrada. A chamada do procedimento BP(1) fica, portanto, interrompida,
esperando a volta da chamada de BP(2) para ser completada. Durante o processamento de BP(2), verifica-
-se que no vértice 1 é marcado que a aresta (1,2) já foi explorada. Prossegue-se, portanto, para o segundo
vizinho do vértice 2, o nó 3. A aresta (2,3) é incluída na árvore, como mostra a Figura 1.101(2), e o procedi-
mento BP(3) é iniciado. A lista de adjacentes do vértice 3 é composta pelos vértices 1, 2, 4, 5, 6 e 7. A aresta
(3,1), ou (1,3), é não explorada, entretanto, o vértice 1 é marcado. A aresta (3,1), portanto, não é incluída na
árvore de profundidade, uma vez que ela é uma aresta de retorno. Este fato está ilustrado na Figura 1.101(3),
onde a aresta é representada com uma linha pontilhada. A aresta (3,2) é explorada. A aresta (3,4) é incluída
na árvore, conforme a Figura 1.101(4). Uma chamada é feita ao procedimento BP(4) e a aresta (4,5) é incluí-
da na árvore, conforme a Figura 1.101(5). O procedimento BP(5) é iniciado. O vértice 3 é marcado, mas a
aresta (3,5) ainda não foi explorada. Assim, a aresta de retorno (5,3) ou (3,5) é explorada conforme ilustrado
pela Figura 1.101(6). O exame do vértice 5 termina e o procedimento BP(5) é encerrado. No processamento
do vértice 4 também não existem outros adjacentes ao vértice, terminando, também, o procedimento BP(4).
Retorna-se, então, ao procedimento BP(3). A aresta (3,5) já se encontra explorada. O próximo vizinho do
vértice 3 a ser examinado é o vértice 6. A aresta (3,6) é incluída na árvore e uma chamada para BP(6) é feita.
Como o vértice 6 não tem outros vizinhos além do vértice 3, o procedimento BP(6) é encerrado. O mesmo
ocorre no exame do vértice 7. As Figuras 1.106(1) e (2) ilustram as inclusões das arestas (3,6) e (3,7), res-
pectivamente, durante o exame do vértice 3. Finalmente, a Figura 1.106(3) mostra a árvore de profundidade
construída pela aplicação do algoritmo de busca de profundidade para o grafo da Figura 1.104, iniciando
pelo vértice 1.

(1) Aresta (3,6) (2) Aresta (3,7) (3) Árvore de profundidade

Figura 1.106 Busca em profundidade em grafo não direcionado – 2ª parte

Se o grafo é desconexo, então o procedimento BP deve ser chamado novamente enquanto existir vértice não
marcado no grafo. Neste caso, em vez de uma árvore de profundidade, o algoritmo construirá uma floresta de
profundidade.
Em algumas aplicações é importante guardar a ordem em que os vértices são incluídos na árvore pelo algorit-
mo. Para isso, uma estrutura de dados auxiliar pode ser utilizada por exemplo, como uma lista linear. No exemplo
mostrado na Figura 1.106, a ordem de entrada dos vértices na árvore coincide com seus rótulos.
64 Grafos

Complexidade Busca em Profundidade


Para cada vértice v do grafo o algoritmo percorre toda a lista de adjacentes a v.
Nos algoritmos dos quadros Busca em Profundidade cada aresta do grafo é examinada duas vezes, sendo que na
primeira vez a aresta é explorada. Portanto, se uma lista de adjacências for utilizada na representação do grafo, o algo-
ritmo de busca em profundidade terá complexidade O(n+m).

O(n+m)

A aplicação do algoritmo de busca em profundidade em grafos direcionados é essencialmente a mesma que nos
grafos não direcionados. Uma diferença é que, mesmo o grafo sendo conexo, o algoritmo de busca pode gerar uma
floresta de profundidade. O procedimento de busca é chamado enquanto ainda existir algum vértice não marcado,
conforme o quadro Busca em Profundidade 2.

A Busca em Profundidade 2
Procedimento BP Dir
Ler G = (N,M)
Enquanto existir v  N, v não marcado Fazer
BP(v)
Fim_Enquanto

Grafos direcionados

As arestas do grafo direcionado são particionadas em 4 conjuntos em vez de 2, como nos grafos direcionados.
No primeiro conjunto estão as arestas onde o vértice destino ainda não foi marcado. Tais arestas participam da
árvore (floresta) de profundidade que será construída pelo algoritmo. Se o vértice w, destino da aresta, é marcado,
então uma das três situações a seguir define o conjunto do qual a aresta participa.

1. Se w é descendente de v na floresta, então a aresta é dita de avanço.


2. Se v é descendente de w na floresta, então a aresta é dita de retorno.
3. Se nem v é descendente de w, nem w é descendente de v na floresta, então a aresta é dita de cruzamento.

As Figuras 1.108 (1)-(6) e 1.09(1)-(3) ilustram a aplicação de um algoritmo de busca em profundidade no grafo
direcionado da Figura 1.107.

Figura 1.107 Grafo direcionado exemplo para aplicação da busca em profundidade


CAPÍTULO 1  Conceitos básicos 65

Começando a busca pelo vértice 1, o algoritmo procede incluindo os arcos (1,2), (2,3) e (3,6), conforme mos-
trado nas Figuras 1.108(1), (2) e (3), respectivamente.

(1) Arco (1,2) (2) Arco (2,3) (3) Arco (3,6)

(4) Aresta (3,4) (5) Aresta (4,5) (6) Aresta (5,3)

Figura 1.108 Busca em profundidade em grafo não direcionado – 1ª parte

No exame do vértice 6 encontra-se o arco (6,2). O vértice 2 já é marcado e o vértice 6 é seu descendente na
árvore. Assim, o arco (6,2) é classificado como um arco de retorno, como mostrado na Figura 1.108(4). Os procedi-
mentos para os vértices 6, 3 e 2 são encerrados e a busca volta ao vértice 1. O arco (1,3) é explorado. Como o vértice
3 já está na árvore e é descendente do vértice 1, então o arco (1,3) é um arco de avanço, como ilustrado na Figura
1.108(5). A chamada do procedimento de busca para o vértice 1 se encerra, tendo construído uma primeira árvore
que é composta pelos arcos (1,2), (2,3) e (3,6). Entretanto, os vértices 4 e 5 ainda permanecem não marcados. Uma
nova chamada do procedimento de busca é realizada para o vértice 4. O primeiro arco explorado é o arco (4,3). O
vértice 3 já se encontra marcado. Como nem o vértice 3 descende de 4 e vice-versa, então o arco (4,3) é classificado
como arco de cruzamento.
Finalmente os arcos (4,5) e (5,3) são considerados pela busca conforme Figuras 1.109(1) e (2). A Figura 1.109(3)
mostra a floresta de profundidade do grafo da Figura 1.107.
66 Grafos

(1) Arco (4,5) (2) Arco (5,3) (3) Floresta de profundidade

Figura 1.109 Busca em profundidade em grafo não direcionado – 2ª parte

Outro tipo de busca muito utilizada é a busca em largura. Uma busca é denominada em largura se, para o
critério de seleção de vértices, for exigido que a escolha seja feita sobre o vértice não marcado menos recentemente
alcançado na busca. O pseudocódigo de um algoritmo de busca em largura é exibido no quadro Busca em Largu-
ra. É utilizada uma fila Q para controlar a ordem em que os vértices são considerados na busca.

A Busca em Largura
Procedimento BL(G = (N,M))
definir uma fila Q vazia
escolher um vértice inicial v
marcar v
insere v em Q
Enquanto Q ≠  Fazer
v ← remove elemento de Q
Para todo w  Γ(v) Fazer
Se w é não marcado
explorar (v,w)
insere w em Q
marcar w
Senão
Se (v,w) não explorada
explorar (v,w)
Fim_Se
Fim_Se
Fim_para
Fim_Enquanto
Grafos não direcionados

A aplicação do algoritmo do quadro Busca em Largura ao grafo da Figura 1.104 a partir do vértice 1 é
ilustrada nas Figuras 1.110(1)-(9). Considere novamente que o grafo está representado através de uma lista de
adjacência, onde os nós de cada lista encadeada estão ordenados lexicograficamente. O vértice inicial é a raiz da
árvore de profundidade. O vértice 1 é marcado, colocado em Q e logo em seguida removido de Q. Seu conjunto
CAPÍTULO 1  Conceitos básicos 67

de vértices adjacentes inclui os vértices 2 e 3. Uma vez que o vértice 2 é não marcado, a aresta (1,2) é incluída na
árvore, o vértice é marcado e incluído em Q, como ilustrado na Figura 1.110(2). Em seguida, o mesmo ocorre
com o vértice 3, como ilustrado na Figura 1.110(3). O elemento 2, na frente da fila Q, é removido e a aresta (2,3)
é explorada (Figura 1.110(4), aresta pontilhada). As Figuras 1.110(5)-(8) ilustram as inclusões dos vértices 4,
5, 6 e 7, respectivamente, na árvore de busca em largura e na fila Q. Depois que o vértice 4 é removido da fila, a
aresta (4,5) é explorada (Figura 1.110(9), aresta pontilhada). O algoritmo continua retirando os vértices restan-
tes da fila até que Q esteja vazia, quando a execução termina. A árvore de busca em profundidade obtida neste
processamento é exibida na Figura 1.111.

Q = {1} Q = {2} Q = {2,3}


(1) Inclusão de 1 (2) Aresta (1,2) (3) Aresta (1,3)

Q = {3} Q = {4} Q = {4,5}


(4) Aresta (2,3) (5) Aresta (3,4) (6) Aresta (3,5)

Q = {4,5,6} Q = {4,5,6,7} Q = {5,6,7}


(7) Aresta (3,6) (8) Aresta (3,7) (9) Aresta (4,5)

Figura 1.110 Busca em largura em grafo não direcionado


68 Grafos

Complexidade Busca em Largura


Apenas vértices não marcados são inseridos na fila. Uma vez inseridos, os
vértices são marcados, o que garante que cada um deles entrará na fila uma
única vez. As operações de incluir e de remover da fila requerem tempo de
processamento constante e são realizadas n vezes cada. A lista de adjacência
de cada vértice é examinada apenas uma vez. Uma vez que a soma dos com-
primentos de todas as listas de adjacência é θ(m), o tempo de execução do
algoritmo é O(n+m).

O(n+m) Figura 1.111 Árvore de busca em


profundidade do grafo da Figura

1.8 Grafos com Apelidos


Grafos com Apelidos
A Figura 1.112 exemplifica os
Grafos nominados em virtude de seu traçado ter a aparência de um objeto do
mais conhecidos grafos com ape-
mundo real. O objetivo dos nomes é facilitar a comunicação.
lidos da literatura.

(1) Diamante (2) Casinha (3) Touro (4) Pegada (5) Dardo

(6) Cadeira (7) Gema (8) Dominó (9) Guarda-chuva (10) Balão

(11) Leque (12) Bandeira (13) Grilo (14) Borboleta (15) Garra

(16) Torre Eiffel (17) Antena (18) Gêmeos (19) Sunlet (20) Peixe
Figura 1.112 Grafos com apelidos
CAPÍTULO 1  Conceitos básicos 69

Grafo Pirâmide
Também denominado 1-Pirâmide, trata-se de um grafo hierarquicamente
construído no formato de pirâmide. O número de vértices do fecho transitivo
A Figura 1.113 apresenta três
de qualquer vértice de grau dois, ou “topo” da pirâmide, cresce em função de 2h, grafos pirâmides.
onde h representa a distância entre um vértice topo e um “nível” da pirâmide.

(1) Grafo pirâmide (2) Grafo pirâmide forte (3) Grafo pirâmide dupla

Figura 1.113 Grafos pirâmide

Escorpião
Um grafo é chamado escorpião quando possui quatro tipos de vértice: um vér- A Figura 1.114 apresenta um
tice de grau 1 chamado ferrão. O ferrão é conectado a um vértice de grau 2, de- grafo escorpião.
nominado cauda. A cauda se liga a um vértice de grau n-1, denominado corpo.
O corpo liga-se, também, a n-3 vértices restantes, denominados pés.

Ressalte-se que o grafo garra


– o grafo da Figura 1.112(15), em
inglês denominado claw, destaca-
-se por sua importância no estudo
dos ciclos hamiltonianos.

Figura 1.114 Grafo escorpião


70 Grafos

As Figuras 1.115(2)-(4) apre-


Grafo Linha (Line Graph)
L(G) sentam os passos de formação de
um grafo linha L(G) a partir do
Um grafo linha é denotado por L(G) e representa a adjacência entre as arestas grafo G da Figura 1.115(1).
do grafo G.

Reconhecer que um suposto


Dado um grafo G, o grafo linha L(G) é obtido a partir de G da seguinte forma:
grafo L(G) é grafo linha de um
1. Cada vértice de L(G) representa uma aresta em G. algum grafo G é
2. Dois vértices de L(G) são adjacentes se e somente suas arestas correspon-
dentes compartilham um mesmo vértice em G, ou seja, são adjacentes em G. NP-Completo

(1) Grafo G (2) Vértices associados às arestas (3) Ligação das arestas vizinhas

Propriedades dos grafos linha


Se o grafo G é conexo, L(G) é conexo. Se o grafo G é desconexo, L(G) é
desconexo. Se G é euleriano, L(G) é hamiltoniano. Um emparelhamen-
to máximo em G corresponde a um conjunto independente máximo
em L(G). O índice cromático de G corresponde ao número cromático
de L(G).

(4) Grafo linha – L(G)

Figura 1.115 Formação de um grafo linha

O grafo linha foi introduzido por Harary & Norman (1960) a partir de trabalhos anteriores e correlatos
(Hemminger & Beineke, 1978). Também é denominado grafo derivativo (derivative), grafo derivado (derived
graph), grafo intercâmbio (interchange graph), grafo aresta (edge graph), grafo cobertura (covering graph), grafo
conjugado (conjugate graph), theta-obrazom e adjoit graph.
CAPÍTULO 1  Conceitos básicos 71

1.9 Exercícios Resolvidos do Capítulo 1


Exercício no 1:
1) Para os grafos da Figura 1 determinar:
1. Os vértices adjacentes ao vértice 7.
2. O fecho transitivo do vértice 1.
3. Um passeio ou percurso com 5 vértices e 7 arestas distintas.
4. Um caminho de comprimento 11 a partir do vértice 2.
5. A distância entre os vértices 1 e 11.
6. O índice de Wiener do vértice 1.
7. Um ciclo com cinco vértices.
8. Uma cadeia euleriana no subgrafo induzido pelo conjunto de vértices {1,2,3,7}.
9. Um ciclo hamiltoniano no subgrafo induzido pelo conjunto de vértices {2,3,4,6,7,8,10,11,12}.
2) Para o grafo da Figura 2 determinar:
10. A cintura, circunferência, excentricidade do vértice 5, raio e diâmetro.
11. d(G) e D(G).
3) Para o grafo da Figura 3 determinar:
12. Um percurso pré-hamiltoniano e um pré-euleriano.

Exercício no 2:
Para o grafo da figura a seguir, determine um subgrafo próprio, um subgrafo parcial, um subgrafo indu-
zido por vértices, um subgrafo induzido por arestas e um supergrafo.
72 Grafos

Exercício no 3:
Para o grafo da figura abaixo, determine um conjunto de corte de arestas, um conjunto de corte em vér-
tices, uma ponte, um conjunto de articulação que não seja um corte e dois blocos.

Exercício no 4:
Para o grafo da figura abaixo, determine a nulidade, o rank, o número ciclomático e o número de cruza-
mento de arestas.

Exercício no 5:
Prove que o somatório dos graus dos vértices de um grafo simples que possui n vértices e m arestas é igual
a 2m.
CAPÍTULO 1  Conceitos básicos 73

Exercício no 6:
Prove que um grafo com n vértices não é bipartido se ele possuir um número de arestas maior que
Exercício no 7:
Considerando um grafo G tal que os vértices possuem grau k ou k+1, prove que se G possui nk vértices de
grau k e nk+1 vértices de grau k+1, então nk = (k+1)n – 2m.
Exercício no 8:
Se existem nove times de futebol em uma liga, é possível programar um torneio em que cada time jogue
com exatamente três outros times?
Exercício no 9:
Para o grafo G = (N,M) da figura abaixo, dê um exemplo de um subgrafo próprio que não seja induzido
nem por vértices nem por arestas.

Exercício no 10:
Dado um grafo G com n vértices e m arestas, criar um algoritmo O(m+n) que determine se o grafo G é
conexo.
Exercício no 11:
Os grafos abaixo são planares? Em caso positivo, exiba um grafo isomorfo em que as arestas não se cruzem.
74 Grafos

Exercício no 12:
Dados os grafos G1 e G2 abaixo, fazer:

G1 G2

1) G3 = Soma em anel de G1 e G2.


2) G4 = Grafo soma de G1 e G2.
3) G5 = Grafo Interseção de G1 e G2.
4) G6 = Complemento de G1.
5) G7 = Diferença de G1 e G6.
Exercício no 13:
Considere os grafos P3, C4 e o grafo G da figura abaixo. Escreva a matriz de adjacência e a matriz de inci-
dências de cada um deles. Obtenha o quadrado e o cubo de cada matriz de adjacência. Qual o significado
dessas matrizes?

Exercício no 14:
Determine a matriz de cortes fundamentais do grafo do exercício em relação à árvore destacada pelas
arestas em negrito.
CAPÍTULO 1  Conceitos básicos 75

Exercício no 15:
Uma mineradora procura explorar uma jazida do raro e valioso acrônio. O minério está alojado no solo, de
forma que deve ser escavado. A jazida é dividida em i blocos de exploração, que estão distribuídos em pro-
fundidade em até k camadas, sendo bik o i-ésimo bloco da mina localizado na camada k. Para que o bloco
bik seja explorado, é necessário que certos blocos da camada k-1 sejam removidos para que exista o acesso
físico ao bloco. A figura do exercício mostra a distribuição dos blocos em uma dada mina de acrônio. Os
blocos em destaque – blocos 8 e 21 – são os que contêm o minério. Os demais blocos somente deverão ser
removidos caso isso seja necessário para o acesso aos blocos do minério. Formular o problema da remoção
do menor número possível de blocos dessa mina de forma a permitir a retirada dos blocos com o acrônio.
Solucionar o problema para o caso apresentado neste exercício.

(1) Perfil da mina (2) Planta das camadas e numeração dos blocos
Figura do exercício com a mina e a localização dos blocos de acrônio.

Exercício no 16:
Dê dois exemplos de grafos que possuem a mesma sequência de graus e a mesma sequência de ciclos (uma
sequência de ciclos é a lista do número de ciclos de mesmo comprimento) e não são isomórficos.

1.10 Exercícios Propostos do Capítulo 1


Os exercícios do capítulo estão divididos por temas envolvendo teoria, algoritmos e desafios.

Teoria

1.1: Deduza a fórmula do número máximo de arestas de um grafo bipartido.


1.2: Mostre que não é possível ter um grupo de 7 pessoas no qual cada um conhece exatamente 3 outras pessoas.
1.3: Prove que quaisquer dois grafos conexos com n vértices, todos de grau 2, são isomorfos.
1.4: Mostre que dois grafos simples são isomorfos se e somente se os seus complementares são isomorfos.
1.5: Prove que um grafo conexo continua conexo depois da remoção de uma aresta ai se e somente se ai faz parte
de um ciclo.
76 Grafos

1.6: Prove que um grafo simples que contém n vértices é necessariamente conexo se ele tem mais de (n–1)
(n–2)/2 arestas.
1.7: Um torneio é um grafo direcionado cujo grafo subjacente é um grafo completo. Prove que nesse tipo de gra-
fo não pode existir mais de um vértice de grau de entrada nulo e mais de um vértice de grau de saída nulo.
1.8: Mostre que a união de dois caminhos disjuntos (que não têm aresta em comum) entre dois vértices resulta
em um ciclo.
1.9: Prove que um grafo é bipartido se e somente se todos os seus ciclos tiverem comprimento par.
1.10: Um grafo é autocomplementar se ele é isomorfo ao seu grafo complemento G. Apresente um exemplo de
grafo autocomplementar, justificando sua resposta.
1.11: Prove que uma aresta “e” de um grafo conexo G é uma ponte se e somente se existem vértices u e w tais que
“e” está em todo caminho u-w em G.
1.12: Prove que uma aresta de um grafo conexo G é uma ponte se e somente se ela não está em qualquer ciclo de
G.
1.13: Sendo o grafo G um grafo bipartido, o que se pode concluir sobre o seu grafo complemento? Prove que o
grafo complementar de um grafo bipartido completo não é conexo.
1.14: Prove que, se um grafo conexo G pode ser obtido pela soma de dois subgrafos G1 e G2, existe necessariamen-
te pelo menos um vértice comum entre G1 e G2.
1.15: Prove que, G (um grafo simples) e seu complementar G não podem ser ambos desconexos.
1.16: É possível um grafo bipartido possuir como subgrafo K3?
1.17: Qual é o número máximo de arestas que um grafo bipartido Kr,s poderá ter?
1.18: Demonstre que o complemento de um grafo bipartido não é necessariamente bipartido.
1.19: Demonstre que o número de vértices em um grafo regular de grau k é par se k é ímpar.
1.20: Prove que, para um grafo G que possui dois ou mais vértices, pelo menos dois vértices possuem o mes-
mo grau. Genial afirmou que, diante da afirmativa anterior, em qualquer reunião social (com qualquer
número de pessoas maior que 1), onde as pessoas se cumprimentem com apertos de mãos quando se
conhecem, pelo menos duas pessoas apertarão o mesmo número de mãos. Mostre como Genial chegou a
sua conclusão.
1.21: Se um grafo G é k-regular e bipartido, com k ≥ 1 e uma bipartição (A,B), demonstre que |A| = |B|.
1.22: Demonstre que qualquer grafo simples, G, deve possuir pelo menos dois vértices de mesmo grau.
1.23: É verdadeira a afirmação de que dois grafos isomorfos possuem o mesmo número de vértices e de arestas?
1.24: É verdadeira a afirmação, que dois grafos isomorfos possuem a mesma sequência de graus em seus vértices?
Se dois grafos possuem a mesma sequência de graus, são obrigatoriamente isomorfos?
1.25: Caracterize a diferença entre bloco e componente conexo.
1.26: É possível traçar um grafo com as condições listadas em cada item abaixo? Justifique sua resposta.
1. Um grafo simples com 1 aresta e 2 vértices.
2. Um grafo com 6 vértices e os graus de seus vértices na sequência
(1,2,3,4,5,5).
3. Um grafo com 6 vértices e os graus de seus vértices na sequência (2,3,3,4,5,5).
1.27: É possível construir um grafo bipartido planar com no mínimo cinco vértices de grau 3?
CAPÍTULO 1  Conceitos básicos 77

1.28: Prove que todos grafos simples e 4-regular contêm um subgrafo 3-regular.
1.29: Escreva V no caso de a alternativa ser verdadeira e F em caso contrário.
Um caminho segundo a Teoria dos Grafos é:
(   ) qualquer conexão entre dois vértices.
(   ) uma sequência de arestas contínua sem vértices repetidos.
(   ) uma sequência de arestas sem repetição de arestas ou vértices.
(   ) qualquer sequência de arestas, desde que seja aberta.
Um grafo é conexo se:
(   ) para qualquer vértice pertencente ao grafo sempre for possível encontrar um caminho até outro vértice
distinto e também pertencente ao grafo.
(   ) para qualquer vértice do grafo sempre é possível encontrar um ciclo.
(   ) o grafo for simples e o número de arestas for igual a pelo menos n+1.
(   ) o menor grau dos vértices do grafo for dois.
Um grafo será planar se:
(   ) não contiver como subgrafo um K5 ou um K33.
(   ) o grau máximo de seus vértices for 3.
(   ) for isomorfo ao grafo de Petersen.
(   ) for um subgrafo do grafo de Petersen.
(   ) for um grafo roda.
De forma geral:
(   ) o número de vértices de um grafo com todos os vértices com grau ímpar é sempre par.
(   ) é impossível existir um grafo com um número par de vértices com grau par se nesse grafo existirem dois
vértices com grau ímpar.
(   ) em um grafo direcionado e conexo a soma dos semigraus interiores é no mínimo igual a n/2.
(   ) um grafo desconexo deve possuir pelo menos duas cinturas.
(   ) um grafo desconexo não possui cintura.
É possível traçar os seguintes grafos?
(   ) Uma grafo simples com 3 vértices e 4 arestas.
(   ) Um grafo simples com 6 vértices e possuindo sequência de graus 1; 2; 3; 4; 5; 5.
(   ) Um grafo simples com sequência de graus 2; 3; 3; 4; 4; 5.

Toda clique é:
(   ) um grafo completo.
(   ) um grafo próprio.
(   ) um subgrafo próprio.
(   ) um subgrafo gerador.
(   ) um grafo fortemente regular.
1.30: Uma criança diz ter posto a ponta do lápis numa das bolinhas da figura a seguir e, com movimentos contí-
nuos (sem levantar e sem retroceder o lápis), ter traçado as linhas que formam o desenho da casa, fazendo
78 Grafos

cada linha uma única vez. A mãe da criança acha que ela trapaceou, pois não foi capaz de achar nenhuma
sequência que pudesse produzir tal resultado. Demonstre se a criança trapaceou ou não.

Grafo do exercício 1.30: A casinha

1.31: Mostre, utilizando grafos com quatro vértices e três arestas, que grafos com o mesmo número de vértices e
arestas podem possuir diferentes sequências de graus.
1.32: Se a sequência dos graus dos vértices de um grafo G é conhecida, então é possível determinar o número
de vértices e de arestas de G. Se a afirmativa for incorreta fornecer um exemplo. Se for verdadeira, explicar
como calcular o número de vértices e arestas de G.
1.33: Em um grafo G com n vértices e m arestas, demonstre que: se todos os vértices de G possuem um grau maior
ou igual a seis, então m ≥ 3n. Se G é um grafo planar, então pelo menos um vértice de G deve possuir um
grau menor ou igual a cinco.
1.34: Demonstre ou forneça um contraexemplo para a afirmação: um subgrafo de um grafo bipartido é sempre
bipartido.
1.35: Demonstre que um grafo G só é conexo se e somente se, para qualquer partição de vértices de G em dois
conjuntos não vazios, existe pelo menos uma aresta com extremidades em ambos os conjuntos.
1.36: Se em um grafo δ(G)≥3, prove que G possui um circuito de comprimento par.
1.37: Prove ou forneça um contraexemplo:
1. Um subgrafo conexo e induzido por vértices em um grafo completo é completo.
2. Um subgrafo conexo e induzido por arestas em um grafo completo é completo.
3. Um subgrafo de um grafo planar é sempre planar.
4. Se o minor de um grafo planar for não planar, o grafo é não planar.
1.38: Exemplifique em um grafo G de sua escolha ou prove que não existe:
1. um caminho que seja maximal em G, mas não seja máximo.
2. uma clique que seja maximal em G, mas não seja máxima.
3. um subgrafo induzido por vértices que seja maximal em G, mas não seja máximo.
1.39: Demonstre ou dê um contraexemplo para as afirmações:
1. O grafo obtido pela união de dois caminhos disjuntos em um grafo simples e conexo – caminhos que não
possuem aresta em comum – possui um ciclo.
2. O grafo obtido pela união de dois caminhos hamiltonianos disjuntos em um grafo simples possui um
ciclo.
1.40: Para o grafo da figura a seguir dê um exemplo de subgrafo não induzido.
CAPÍTULO 1  Conceitos básicos 79

Grafo do exercício 1.40

1.41: Demonstre que em todo grafo G existe um corte que contém pelo menos a metade das arestas de G.

Aplicações

1.42: Trace um multigrafo, um pseudografo e um grafo reflexivo com oito vértices.


1.43: Trace um hipergrafo com sete vértices e quatro arestas, sendo cada aresta incidente em três vértices.
^
1.44: Identifique os vértices adjacentes ao vértice 3 do grafo, bem como Γ+(3), Γ–(2) e Γ+2(4).

Grafo do exercício 1.44

1.45: No grafo misto abaixo, determine os graus dos vértices 1, 3 e 6. Transforme o grafo misto em um grafo dire-
cionado equivalente.

Grafo do exercício 1.45

1.46: Qual dos seguintes pares dos conjuntos N e M pode definir um grafo G=(N,M)?
1. N={a,b,c,d,}; M={e,f,g,h} com e={a,a}; f={b,b}; g={c,c}; h={c,d}
2. N={a,b,c,d,}; M={e,f,g,h} com e={a,a}; f={e,e}; g={c,c}; h={c,d}
80 Grafos

3. N={a,b,c,d,}; M={e,f,g,h} com e={a,a}; f={a,a}; g={a,a}; h={a,a}


4. N={e,f,g,h,}; M={a,b,c,d} com e={a,a}; f={a,a}; g={a,a}; h={a,a}
1.47: Se um grafo é não direcionado e possui 100 vértices, sendo que o maior grau de um vértice desse grafo é 5,
qual o número máximo de arestas do grafo?
1.48: Desenhe todos os grafos regulares de grau 2 que é possível construir com 3, 4 e 5 vértices.
1.49: Exemplifique em G um percurso com seis vértices, uma cadeia com oito arestas, um caminho que passe por
cinco vértices e um ciclo com sete vértices.

Grafo do exercício 1.48


1.50: Considerando todas as arestas de G de comprimento igual a 1, calcule o índice vienense do vértice ressaltado
no grafo abaixo.

Grafo do exercício 1.50


1.51: Para o grafo do exercício 1.8, calcule ou determine: o número ciclomático, a circunferência, o raio, o diâme-
tro, a cintura, a excentricidade e o centro.
1.52: Determine a cintura e a circunferência do K3,4, do C5 e do A5.
1.53: Encontre o centro dos grafos que se seguem.

Grafos do exercício 1.53


CAPÍTULO 1  Conceitos básicos 81

1.54: Exiba um grafo que, mesmo não sendo uma árvore, possui dois centros.
1.55: Exiba um grafo que possui três centros.
1.56: Para os grafos do exercício 1.52 determine, se possível: um ciclo hamiltoniano, um percurso pré-euleriano,
um percurso pré-hamiltoniano e uma corda.
1.57: Para os grafos que se seguem, determine: um subgrafo de G1 com cinco vértices, um subgrafo de G2 induzido
por vértices, um subgrafo de G1 induzido por arestas com quatro vértices, um supergrafo de G2, um subgrafo
próprio de GG2, um subgrafo parcial de G1, o grafo resultante da soma G1 + G2, os grafos complementos de
G1 e G2, o grafo resultante da interseção G1  G2.

G1 G2
Grafos do exercício 1.57

1.58: Determine o grafo complemento do grafo da Figura que se segue:

Grafos do Exercício 1.58


___ ___ ___
1.59: Para os___grafos da figura que se segue, calcule: (G1)+(G2); (G1)–(G2); (G1)(G2); (G1)(G2); (G1)(G2); (G1)–
(G2); (G2)+(G2).

G1 G2
Grafos do exercício 1.59
82 Grafos

1.60: Determine o grafo resultante da soma (G1)+(G2). G2 é subgrafo de G1?

G1 G2
Grafos do exercício 1.60

1.61: Quais dos grafos da figura que se segue são bipartidos?

Grafos do exercício 1.61

1.62: Trace todos os gráficos cúbicos com até oito vértices.


1.63: Trace todos os grafos isomorfos possíveis de cada grafo simples com 4 vértices.
1.64: Determine todos os grafos não isomorfos de ordem 3 e de ordem 4.
1.65: Para o grafo da figura que se segue, trace um grafo isomorfo, um subgrafo, um subgrafo próprio e seu grafo
complementar.

Grafos do exercício 1.65

1.66: Identifique os grafos isomorfos dos conjuntos 1 e 2. Para cada par de grafos dos conjuntos 3, 4 e 5, demonstre
se os grafos são ou não isomorfos.

Conjunto 1
CAPÍTULO 1  Conceitos básicos 83

Conjunto 2

Conjunto 3

Conjunto 4

Conjunto 5
Grafos do exercício 1.66
84 Grafos

1.67: Desenhe o grafo cúbico com seis vértices.


1.68: Determine as matrizes de incidência e adjacência dos grafos dos exercícios 1.3, 1.4 e 1.16.
1.69: Represente o grafo da figura que se segue através de lista de adjacência, matriz de incidência, matriz de ad-
jacência e representação vetorial.

Grafos do exercício 1.69

1.70: Determine o número de cruzamentos de arestas dos grafos do exercício.

Grafos do exercício 1.70

1.71: Determine o grafo dual do grafo da figura que se segue.

Grafos do exercício 1.71

1.72: Desenhe um grafo com oito nós que possua dois pontos de articulação.
1.73: Desenhe um grafo que possua seis nós e não admita que qualquer aresta seja removida sem ocasionar sua
desconexão.
1.74: Desenhe um grafo cuja remoção de duas arestas resulta na formação de quatro componentes conexos.
1.75: Desenhe um grafo com oito vértices que seja isomorfo ao seu complemento.
1.76: Dado o grafo G da Figura (1), classificar seus subgrafos mostrados nas Figuras de (2) a (4).
CAPÍTULO 1  Conceitos básicos 85

(1) Grafo G (2) Ns=N e AS=A

(3) NS=N e AS  A (4) NSN e AS  A

Grafos G e subgrafos de G do exercício 1.76

1.77: Dado o grafo G da figura abaixo, fornecer: um subgrafo próprio de G, um supergrafo de G e um subgrafo
não induzido de G.

Grafo do exercício 1.77

1.78: Determine o número de cruzamento de arestas do grafo da figura.

Grafo do exercício 1.78

1.79: Para o grafo da figura, determine os seguintes elementos, invariantes e responda às questões:
1. δ (G) – grau mínimo
2. Δ (G) – grau máximo
3. O índice vienense de um vértice de menor grau
4. g(G) – cintura de G
86 Grafos

5. c(G) – circunferência de G
6. diam(G) – diâmetro de G
7. Ex(8) – excentricidade do vértice 8
8. κ(G) – conexidade em vértices
9. λ(G) – conexidade em arestas
10. γ – número ciclomático
11. O grafo complemento – G
12. O número de cruzamentos de arestas – cross(G)
13. O rank de G – r
14. Um conjunto de desconexão em G
15. Um grafo minor de G
16. O subgrafo regular máximo
17. G é euleriano? Justifique a resposta.

Grafo do exercício 1.79

1.80: A nomenclatura da área de Teoria dos Grafos ainda não está perfeitamente estabilizada de forma que, em
não raras ocasiões, conceitos semelhantes recebem nomes diferentes. Os dois conceitos do exercício podem
ser obtidos em Jackson, B. & Wormald, N. C. (1990). k-Walks of graphs, Austral. J. Combin., 2: 135-146.

q–Passeio
Um passeio gerador fechado onde cada vértice é atravessado no máximo q
vezes é chamado de q-passeio.

q–Árvore
Uma árvore geradora de grau máximo q é uma q-árvore.

Definições do exercício 1.80

Para os dois conceitos acima: Qual a estrutura designada como 1-passeio e 1-Árvore? Qual estrutura é de-
signada como 2-passeio e 2-árvore?
CAPÍTULO 1  Conceitos básicos 87

1.81: Considerando as definições que se seguem, calcule a distância dtour entre os vértices v e u, a excentrici-
dade eD(v) do vértice v, o raio dtour e o diâmetro dtour do grafo do exercício. Existe uma relação entre
os invariantes dtour e seus invariantes clássicos associados, como a excentricidade, o raio e o diâmetro? Se
houver, esclareça qual seria essa relação.

Grafo do exercício 1.81

Distância Dtour
Em um grafo conexo o comprimento do maior caminho entre um par de vértices u-v é denominado
distância dtour ou D(u,v).

Excentricidade Dtour
Em um grafo conexo a excentricidade dtour ou eD(v) de um vértice v é a distância dtour entre o vértice
v e o vértice mais afastado de v em G.

Raio Dtour
Em um grafo conexo o raio dtour ou radD(G) é a mínima excentricidade dtour entre os vértices de G.

Diâmetro Dtour
Em um grafo conexo o diâmetro dtour ou diamD(G) é a máxima excentricidade dtour entre os vértices
de G.

Definições do exercício 1.81

1.82: Considerando as definições que se seguem, dê um exemplo de um grafo antipodal com seis vértices.

Grafo Antipodal
Um grafo conexo D é dito antipodal quando:
1. cada vértice v possui um único vértice v satisfazendo:
D(v,v) = d, onde d é o diâmetro do grafo D
2. se e = [v,w] é uma aresta de D, então e = [v, w] pertence a D.

Vértice Antipodal
São vértices que satisfazem à condição 1 de um grafo antipodal.

Aresta Antipodal
Uma aresta e é dita antipodal de e quando é formada por vértices antipodais aos vértices que definem a

Definições do exercício 1.82


88 Grafos

1.83: Determine os grafos linha – L(G) – dos grafos 1 e 2 da figura abaixo. Verificar se esses grafos são também
grafos linha de algum outro grafo. Em caso positivo, exiba os grafos que, supostamente, poderiam ter por
grafo linha os grafos da figura abaixo.

Grafos do exercício 1.83

Algoritmos

1.84: Desenvolva um algoritmo O(n+m) para identificar se um vértice não é um vértice de articulação.
1.85: Desenvolva um algoritmo O(n+m) para identificar a menor sequência de remoções de vértices em G tal que
desconecte o grafo G.
1.86: Desenvolva um algoritmo O(n+m) para, em um grafo não direcionado G, determinar o máximo subgrafo
induzido por vértices H de G em que cada vértice possui um grau maior ou igual a k, ou prove que o grafo
não existe.
1.87: Crie algoritmos para:
1. converter uma matriz de adjacência em matriz de incidência e vice-versa.
2. converter uma matriz de adjacência em lista encadeada e vice-versa.
3. calculando suas complexidades de pior caso.
1.88: Dado um grafo G com n vértices e m arestas e um inteiro k, crie um algoritmo O(m+n) que determine o máximo
subgrafo H induzido de G tal que H possua um grau maior ou igual a k, ou prove que tal grafo não existe.
1.89: Dado um grafo G com n vértices e m arestas, crie um algoritmo O(m+n) que determine se o grafo possui um
vértice de articulação.
1.90:  Considerando um grafo ponderado em arestas cij e nos vértices wi, desenvolva um algoritmo eficiente para a
determinação do caminho mais curto entre um par de vértices quaisquer i-j nas seguintes condições: wi =1
para qualquer vértice i pertencente ao grafo G e wi ≥1 para qualquer vértice i pertencente ao grafo G.
1.91: Supondo serem G1 e G2 dois grafos com todos os vértices de grau superior a dois, desenvolva um algoritmo
em O(n) para determinar se os grafos são isomorfos.

Desafios

1.92: Um hidrocarboneto saturado é uma molécula que atende à fórmula geral de CnHk, em que cada átomo
de carbono (C) possui quatro ligações e cada átomo de hidrogênio (H) possui apenas uma ligação. Nesse
composto nenhuma sequência de ligações forma um ciclo. Demonstre que, se um hidrocarboneto saturado
– CnHk existe, então k=2n+2.
CAPÍTULO 1  Conceitos básicos 89

1.93: Um centro de artesanato produz bonecas aninhadas – matryoshkas. As matryoshkas também são produzi-
das manualmente, por isso o seu encaixe é um processo impreciso. O tamanho das matryoshkas é medido
em cinco direções de modo a formar um vetor de medidas v-w-x-y-z. Como no caso das caixas, para que
uma matryoshkas seja aninhada no interior de outra é necessário que cada uma das suas medidas seja es-
tritamente menor que a boneca de fora, contudo as peças aninhadas não podem ser giradas. O preço das
matryoshkas depende do número de bonecas aninhadas. Formule um problema em que, dado um conjun-
to de n matryoshkas, se deva determinar o maior aninhamento possível.
1.94:  Suponha que, para o mesmo centro de artesanato do exercício 1.90, a produção de bonecas foi substituída
pela de caixas aninhadas – caixas que ficam umas dentro das outras. Quanto maior é o número de caixas
aninhadas em uma só peça, maior é o seu valor. Sabe-se que as caixas possuem três dimensões (x,y,z) e que
podem ser giradas à vontade. Sabe-se ainda que uma caixa pode ser aninhada no interior de outra quando
possui dimensões estritamente menores do que a que a contém. Então, dado um conjunto de n caixas, for-
mule, via um modelo em grafos, um problema em que se deva determinar o maior aninhamento possível
de caixas em uma só peça.
1.95:  Um grafo G é dito autocomplementar se é isomorfo ao seu complemento. Demonstre que um grafo auto-
complementar possui número de vértices n atendendo a relação n  0 ou 1 (mod 4).
1.96:  Determine todos os n tal que exista um grafo 4-regular planar com n vértices.
1.97: Prove que não existe um grafo 5-regular planar com 14 vértices.
1.98: Prove que existe um grafo 5-regular com 16 vértices com diâmetro igual a 2.
1.99: Construa um grafo com a sequência de graus 5-5-4-3-3-3-3 e três conexo.
1.100: Prove ou dê um contraexemplo: Todo grafo 4-regular planar possui um k3.
1.101: De quantas maneiras é possível distribuir 6 ovos de páscoa para 4 crianças se:
1. os ovos são todos iguais e é possível que crianças fiquem sem ovos?
2. os ovos são todos iguais e não é possível que crianças fiquem sem ovos?
3. existem dois tipos diferentes de ovos e somente uma criança poderá ficar sem ovos (coitada!)?
4. os ovos são todos diferentes e nenhuma criança poderá ficar sem ovos?

1.11 Referências
Ahuja, R. K., Magnanti, T. L. & Orlin, J. B. (1988). Network Flows, Working Paper. Operations Research: Massachusetts
Institute of Technology.
Beineke, L. W. & Wilson, R. J. (2004). Topics in Algebraic Graph Theory. New York: Cambridge University Press.
Bretto, A. (2004). Introduction to Hypergraph Theory and its Applications to Image Processing. Monograph. In:
Advances in Imaging and Electron Physics. Academic Press.
Erdös, P., Goodman, A. W. & Pósa, L. (1966). The representation of a graph by set intersections, Canada. J. Math
18:106-112.
Fan, K. (1953). Minimax theorems. In: Proceedings of the National Academy of Sciences of the United States of
America 39(1):42-47.
Harary, F. (1972). Graph Theory. Addison-Wesley.
Harary, F. & Norman, R. Z. (1960). Some properties of line digraphs. Rendiconti del Circolo Matematico di Palermo
9(2):161-169, doi:10.1007/BF02854581.
Harary, F. Read, R. (1973). Is the null graph a pointless concept. In: Graphs and Combinatorics 406:37-44, Springer.
90 Grafos

Hemminger, R. L. & Beineke, L. W. (1978) Line graphs and line digraphs. In: Beineke, L. W. & Wilson, R. J. Selected
Topics in Graph Theory. Academic Press Inc., 271-305.
Lovász, L. (2005). Graph minor theory. Bulletin of the American Mathematical Society 43(1):75-86.
Reinhard, D. (1997). Graph Theory, Springer. Versão eletrônica disponível em:
<http://wwwcs.uni-paderborn.de/fachbereich/AG/agmadh/WWW/english/scripts_from_www/diestel_graph_
theory_ii.pdf>. Acesso em setembro de 2011.
Robertson, E. & Munro, I. (1978). NP-completeness, puzzles, and games. Utilitas Mathematica 13:99-116.
Swamy, M. N. S. & Thulasiraman, K. (1981) Graphs, Networks and Algorithms. John Wiley & Sons.
Tutte, W. T. (1963). How to draw a graph. In: Proceedings of the London Mathematical Society 13:743-767.
capítulo
92 Grafos

2.1 Exemplos de Aplicação dos Modelos em Grafos


A modelagem em grafos pode ser utilizada em uma enorme gama de aplicações, tanto no que concerne à solução
de problemas práticos (do mundo real), como para aplicações na matemática discreta. Entre as aplicações desta-
cam-se, classicamente, as seguintes:

 Mapas, especialmente os rodoviários, de rotas aéreas e os ferroviários.


 Representações geométricas, como as pertinentes às estruturas moleculares e à identificação de componentes
químicos.
 Modelagem dos pontos de articulação de estruturas móveis.
 Sistemas de transporte, como redes ferroviárias e metrôs.
 Representações de estruturas hierárquicas, como árvores genealógicas e organogramas de administração.
 Representação de estruturas de relacionamentos sociais.
 Manufaturas para a representação de rotas ou fluxo de materiais.
 Inúmeros modelos de programação matemática representando atribuição de tarefas ou facilidades, loca-
lização de facilidades, roteamento de veículos, empacotamento e carregamento de veículos, atribuição de
frequências, projeto de redes de água, eletricidade, computacionais.
 Computação gráfica.
 Arquitetura.
 Genética.
 Compondo as Redes Pert-CPM e o planejamento de projetos.

Este item vai apresentar algumas aplicações gerais de modelagem, e em cada capítulo serão apresentadas apli-
cações específicas.

Grafo de Visibilidade

Uma utilização do modelo de grafos pode ser encontrada no tratamento da representação da visibilidade, com
aplicações em Robótica e Geometria. Considerando-se um grafo G = (N,M) no qual os vértices representam po-
sições de observação e as arestas (i,j) marcam se o vértice i enxerga o vértice j. A Figura 2.1(1) mostra a planta de
um cenário em que os pontos de observação são representados pelos pequenos círculos. Uma aresta pontilhada
ligando dois pontos de observação implica que não existe visibilidade entre esses pontos. As linhas contínuas
representam a situação contrária. A Figura 2.1(2) mostra uma situação em que os próprios pontos de observação
representam obstáculos.
A Figura 2.1(3) mostra a visibilidade do vértice A em relação ao grafo da Figura 2.1(1). Assim, o ponto A pode ver
os pontos B, D e F, e não pode ver os pontos C, E e G. Eventualmente, os pontos de visibilidade poderão ser conside-
rados transparentes. Nesse caso, somente as barreiras seriam obstáculos para a visão. Com base nas regras anteriores,
a Figura 2.1(4) exibe o grafo de visibilidade do problema. No exemplo, nenhum ponto de observação impede a visão
de outro ponto de observação, podendo-se desconhecer se o ponto é ou não transparente.
CAPÍTULO 2 
Modelos de aplicação 93

C
E

B
B
D G D
F

A
A
(1) Cenário (2) Ponto obstáculo

E
C

D G
F

A
(3) Visibilidade do ponto A

E
C

D G
F

A
(4) Grafo de visibilidade

Figura 2.1 Formação de um grafo de visibilidade


94 Grafos

Grafo de Discos
o
Dados n pontos distribuídos em um plano e uma unidade de distância r, um grafo de disco G é obtido conside-
rando-se que os n pontos formam o conjunto N e que existe a aresta (i,j) se o ponto j está localizado dentro de um
circulo de raio r traçado a partir de i, como ilustra a Figura 2.2(1). Se a distância r é única, independentemente
do vértice examinado, o grafo é não direcionado. A Figura 2.2(1) mostra o processo de criação do grafo. A Figura
2.2(2) mostra o grafo não direcionado relativo à Figura 2.2(1).

(1) Aresta (2) Pontos distribuídos à distância r

(3) Grafo não direcionado (4) Grafo de disco da Figura (2)

Figura 2.2 Construção de um grafo de discos

A Figura 2.3(1) exemplifica uma situação em que diferentes raios são possíveis. Os arcos têm origem no ponto
do centro do disco e extremidade nos pontos que se localizam dentro do disco, como mostra a Figura 2.3(2).
CAPÍTULO 2 
Modelos de aplicação 95

(1) Discos com tamanho variável (2) Grafo de discos direcionado

Figura 2.3 Construção de um grafo de discos de diferentes diâmetros

Grafo de Xadrez

Grafo de xadrez é um grafo que representa os movimentos válidos de determinada peça do jogo de xadrez. A Figu-
ra 2.4(1) apresenta o grafo dos movimentos válidos para o rei e o peão. Os movimentos válidos serão representados
pelas arestas do grafo. Os vértices representarão a posição da peça nas casas do tabuleiro. Como o peão e o rei
atacam apenas casas vizinhas em linhas e colunas, o grafo de seus movimentos é também chamado grafo grade. A
Figura 2.4(2) representa parte do grafo de movimentos de uma torre. A torre pode percorrer as linhas e colunas do
tabuleiro sem restrição na extensão dos movimentos. Ou seja, dado que a torre ocupa uma casa do tabuleiro, ela
pode se deslocar para qualquer casa na mesma linha ou coluna da casa. Portanto, a torre possui os mesmos movi-
mentos do peão e rei (grafo 2.4(1)), acrescidos dos movimentos de deslocamento mais amplo, em linhas e colunas,
que é representado na Figura 2.4(2). A Figura 2.4(2) exibe as possibilidades de arestas de uma linha do tabuleiro
para a movimentação da torre. As arestas estão traçadas ao longo de seis linhas para facilitar a visualização, per-
mitindo intervalos entre os traçados. O grafo que modela o movimento de uma torre é um grafo grade que possui,
adicionalmente, as arestas exemplificadas na Figura 2.4(2) para todas as linhas e colunas do grafo.
A Figura 2.4(3) exibe os movimentos de vizinhança para o bispo.

(1) Grafo xadrez-rei e peão (2) Complemento para o grafo xadrez-torre


96 Grafos

Sugere-se ao leitor, como


exercício, que determine os
grafos de movimentos do
cavalo e da rainha.

(3) Grafo dos movimentos de vizinhança do bispo

Figura 2.4 Grafo xadrez – movimentos rei, peão e torre

Grafo de Estado

Um grafo de estado representa o espaço de estados de um sistema e exibe como esses estados se relacionam. O
conjunto de vértices do grafo de estado está normalmente associado às configurações do sistema, que também são
denominadas estados. O estado de um sistema pode ser compreendido também como uma dada atribuição de
valores para as suas variáveis livres. Em um grafo de estado, o conjunto de arestas indica as alternativas (ou ca-
minhos) possíveis para executar uma transformação nas configurações do sistema. Os vértices representam essas
configurações. Por exemplo, em um grafo de estado, uma aresta pode representar a possibilidade de movimentar
uma peça em um tabuleiro. Os tabuleiros, antes e depois de a peça ser movimentada, representam possíveis estados
do grafo ou seus vértices.
Observe que uma transformação na configuração do sistema não obrigatoriamente determina a alteração do
estado do sistema. Um grafo de estado pode também modelar um processo de decisão. Nesse caso, cada vértice do
grafo representa o resultado de certa decisão, enquanto as arestas modelam a forma de transformação sofrida pela
decisão anterior para transformá-la na decisão corrente.
A Figura 2.5 exemplifica os elementos envolvidos em um grafo de estado. As mudanças de configurações / de-
cisões (1-2) e (2-3) não modificam o estado 1. A mudança ocorre na alteração (3-4).

Transição
 Mudança de decisão

 Mudança de configuração

Estado1 Estado2
2 4

1 3 5

 Decisão
 Configuração

Figura 2.5 Evolução de um grafo de estados


CAPÍTULO 2 
Modelos de aplicação 97

►Exemplo 1 – Um Grafo de Estado para a Solução de um Problema de Lógica

O problema:
Um barqueiro recebeu a empreitada de atravessar em sua canoa de dois lugares uma ovelha, um lobo e um pa-
cote de alface. O barqueiro será pago tão logo faça o transporte e entregue a encomenda do outro lado do rio.
Se o lobo permanecer em alguma das margens sozinho com a ovelha, fatalmente a devorará. Por outro lado se
a ovelha permanecer sozinha com o pacote de alface, o comerá. Em nenhuma das margens o barqueiro pode
contar com alguém que o possa ajudar vigiando os animais. Como programar a travessia de modo que a carga
seja transportada em segurança?
A modelagem:
Considerando (B) o rótulo para representar o barqueiro, (L) o rótulo para representar o lobo, (A) o rótulo para
representar o pacote de alface e (O) o rótulo para representar a ovelha, pode-se interpretar o problema como
sugere o esquema de movimentos da Figura 2.6.

A Figura 2.6(1) exibe a solução do problema. O problema inicia com todos em uma margem e termina com
todos na outra. Em nenhum momento, em nenhuma margem, o lobo e a ovelha (LO) ficam sozinhos ou a ovelha
com a alface (AO). Todavia, com o esquema da Figura 2.6(1), qual seria a necessidade de um grafo para solucionar
o problema? Então, considere um grafo de movimentos cujos vértices representam a população da margem inicial
e as arestas representam as viagens na canoa, como exemplifica a Figura 2.6(2).

BLOA
BO
LA
B

LA O Margem inicial Margem inicial
BL antes do movimento após o movimento
A O
BL
A L BLOA OA
BO
A L
B
BL
O LA
BO

∅ LA
Transporte na canoa

(1) A solução do problema (2) O modelo do grafo

Figura 2.6 Elementos de modelagem do problema do barqueiro

Com base nessa formulação, é possível organizar um grafo, como mostra a Figura 2.7, que analisa parte das
opções de movimento do problema e controla a margem inicial do problema.
98 Grafos

BLA
Retorno sem sentido.
Repete a viagem
BA
LO L BOL O
BO BL

BA BA
LA BLA
BO B
BLOA

BL BL BOA O
BO BA

OA A
BL

Retorno sem sentido. BLA


Repete a viagem

Figura 2.7 Grafo de estado parcial do problema do barqueiro – margem inicial

Observe que os movimentos de retorno à margem inicial foram representados através de arestas reforçadas.
O problema será solucionado quando a margem inicial ficar vazia, ou seja, um vértice vazio for alcançado no
desenvolvimento do grafo. Como o grafo não necessita explorar movimentos que implicam violação das regras
de segurança nas margens ou repetem operações, o grafo da Figura 2.7 pode ser reduzido ao grafo da Figura 2.8.

A
BL
BA
L BOL O BLA
BO BL

BA B BO
LA
BO B BLA Volta BO
Volta
L
BO
BLOA
BL BOA BL
BOL
Volta BO BA
A O ∅
B BO

BO
Volta

Figura 2.8 Grafo de movimentos do problema do barqueiro – margem inicial


CAPÍTULO 2 
Modelos de aplicação 99

►Exemplo 2 – Um Grafo de Estado para a Solução do 8-Puzzle

O jogo denominado 8-Puzzle é um quebra-cabeça que consiste em movimentar os números de uma matriz de
peças deslizantes utilizando movimentos horizontais e verticais que aproveitam uma posição vazia nessa matriz.
A Figura 2.9(1) mostra uma matriz do 8-puzzle. A matriz de números é usualmente denominada tabuleiro. O
objetivo do jogo é alcançar uma dada configuração para os números do tabuleiro, como, por exemplo, a sugerida
na Figura 2.9(2).
O grafo de modelagem para esse problema vai considerar uma configuração da matriz em cada vértice. Por-
tanto, um vértice será uma configuração do tabuleiro. As arestas vão modelar os movimentos de deslizamento das
peças. A Figura 2.10(1) exemplifica um grafo de modelagem com nove vértices. O vértice inicial representa sempre
a configuração inicial do jogo.

1 2 3 1 2 3
7 8 4 8 4
6 5 7 6 5

(1) Quadro inicial (2) Quadro final desejado

Figura 2.9 Configurações do 8-Puzzle

1
1 2 3
7 8 4
6 5
Esquerda Direita
2 3 Abaixo 4
1 2 3 1 2 3 1 2 3
7 8 4 7 4 7 8 4
6 5 6 8 5 6 5
Esquerda Direita
Abaixo Abaixo
5 6 7 Abaixo 8 9
1 2 3 1 2 3 1 3 1 2 3 1 2 3
8 4 7 4 7 2 4 7 4 7 8
7 6 5 6 8 5 6 8 5 6 8 5 6 5 4

Figura 2.10 Grafo para modelar os movimentos do 8-Puzzle


100 Grafos

Como definido anteriormente, o grafo da Figura 2.10 é um grafo de estado. Os vértices são registrados ao lado
das respectivas configurações para formalizar sua rotulação. O rótulo das arestas descreve o movimento realizado.
Para o exemplo do jogo 8-Puzzle, os estados do problema são as possíveis distribuições dos números no tabu-
leiro e as arestas são os deslocamentos efetuados nele para produzir a transição de estado.
É comum associar um potencial aos vértices de um grafo de estado. Tal técnica, em várias situações, poderá re-
sultar na possibilidade de reduzir o exame de todas as possíveis configurações geradas pelos movimentos permitidos
pelas transições de estado válidas.
No caso deste exemplo existem pelo menos dois critérios capazes de avaliar o potencial de uma configuração
do 8-Puzzle:

1. Número de alocações no tabuleiro que já se encontram na posição desejada.


2. Número de movimentos que ainda faltam para alcançar a configuração desejada.

A Figura 2.11 exemplifica o cálculo dos dois critérios anteriormente descritos para os vértices iniciais do grafo
da Figura 2.10.

1 2 3
7 8 4
6 5
Esquerda Direita
Abaixo

1 2 3 1 2 3 1 2 3
Posição = 6 Posição = 4
7 8 4 7 4 7 8 4
Movimentos = 2 Movimentos = 4
6 5 6 8 5 6 5

Posição = 5
Movimentos = 4

Figura 2.11 Cálculo do potencial dos vértices

O critério número 1 deve ser maximizado, enquanto o critério número 2 deve ser minimizado. Analisando-se
os resultados da aplicação dos critérios, conclui-se que o vértice 2 é o que possui o melhor potencial de desenvol-
vimento em relação aos demais examinados. Ao ser desenvolvido, esse vértice produz o vértice 5 da Figura 2.10
e é representado novamente na Figura 2.12. O vértice 5, por sua vez, possui potencial ainda melhor que 2, e pelos
mesmos motivos pode ser agora desenvolvido. Finalmente, quando o vértice 5 é desenvolvido, é possível chegar à
configuração desejada, como mostra a Figura 2.12.
CAPÍTULO 2 
Modelos de aplicação 101

1 2 3
1 7 8 4
6 5

1 2 3
2
Posição = 6
7 8 4
Movimentos = 2
6 5

1 2 3
3 8 4
Posição = 7
Movimentos = 1
7 6 5
5
1 2 3 2 3
8 4 Posição = 6
7 6 5
4 1 8 4
Movimentos = 2
7 6 5

Figura 2.12 Desenvolvimento do grafo de configurações do 8-Puzzle

►Exemplo 3 – Grafos para a Modelagem de Jogos

Existem inúmeras atividades humanas que podem ser modeladas através de jogos. Os jogos de interesse mate-
mático são aqueles em que seus participantes, atendendo a um conjunto de regras que definem o jogo, escolhem
diferentes ações na tentativa de melhorar seu desempenho. Um jogo é, normalmente, uma atividade competitiva
em que um objetivo ou recursos escassos são disputados. Nos jogos, vários agentes tomam suas decisões e o resul-
tado depende do conjunto das decisões tomadas. O jogo consiste de um conjunto de jogadores, um conjunto de
movimentos (ou estratégias) disponíveis para esses jogadores e um conjunto de regras de bonificação para cada
combinação de movimentos (ou estratégias).
Existem duas formas comuns para a representação de jogos:

1. a forma normal, em que o jogo é representado por uma matriz que mostra os jogadores, estratégias e as
bonificações.
2. a forma extensiva, em que o jogo representa situações em que a ordem da tomada de decisão é importante.
Os jogos de forma extensiva são convenientemente representados através de uma árvore, em que cada vér-
tice representa um ponto de decisão para um jogador. O jogador usualmente é especificado por um número
102 Grafos

listado no vértice. Um caminho da raiz da árvore até uma folha representa o desenvolvimento de uma se-
quência de jogadas capazes de finalizar o jogo. As bonificações são especificadas nas folhas da árvore.

Os principais tipos de jogos são classificados:

Quanto à simetria:
1. Simétricos: Nesse tipo de jogo as bonificações para os jogadores dependem somente da estratégia escolhida
pelo jogador, e não de quem está jogando. Se as identidades dos jogadores puderem ser trocadas sem alterar
as bonificações obtidas pela aplicação das suas estratégias, então o jogo caracteriza-se como simétrico.
2. Assimétricos: Diferentes identidades implicam diferentes bonificações.

Quanto à bonificação:
1. Soma zero: Os benefícios totais dos jogadores e para cada combinação de estratégias sempre somam zero
(um jogador só lucra com base no prejuízo de outro).
2. Soma diferente de zero: são jogos em que todos, simultaneamente, podem ganhar ou perder.

Quanto ao processo de decisão:


1. Simultâneos: São jogos em que os jogadores movem-se simultaneamente ou, se eles não o fazem, ao menos
desconhecem previamente as ações de seus adversários.
2. Sequenciais: São jogos em que o próximo jogador tem algum conhecimento da jogada de seu antecessor. O
conhecimento não é obrigatoriamente perfeito nem quanto às razões da escolha, tampouco aos detalhes de
sua execução, mas algo deve ser conhecido, como as regras que o oponente deverá seguir.

Quanto à informação:
1. Informação perfeita: todos os jogadores conhecem previamente os movimentos realizados por seus opo-
nentes. Somente jogos sequenciais podem ser jogos de informação perfeita.
2. Informação imperfeita: existem dúvidas sobre os movimentos dos jogadores.

A forma extensiva é usada para representar jogos sequenciais.


Nos jogos de soma zero, simétricos, de informação perfeita e com dois oponentes, a estratégia de ganhos/perdas
de cada um dos jogadores é exatamente oposta à do outro. É comum associar ao primeiro jogador, o que inicia o
jogo, o objetivo de maximização de seu próprio ganho – porque possui a iniciativa. Ao segundo jogador associa-se
o objetivo de minimizar as ações do primeiro. Postos tais objetivos, está criado um cenário denominado MinMax,
onde as ações dos oponentes intercalam iniciativas de maximização e minimização dos valores das configurações
do jogo.
O Teorema 2.1 é o fundamento para o desenvolvimento de grafos de estado que modelem jogos soma zero
de informação perfeita, porque garante, a princípio, que as jogadas no jogo são do tipo MinMax e podem ser
computadas.

Teorema 2.1
Para todo jogo Soma Zero de dois oponentes, existe uma estratégia de vitória para um dos jogadores, ou de empate para
ambos – van Neumann em Fan (1953).

É modelar as jogadas de dois oponentes através de uma árvore em que os vértices representem o valor esperado
para a configuração do jogo e que o desenvolvimento do grafo seja feito em altura, alternando-se as possibilidades
de jogar dos jogadores de maximização e minimização. O grafo pode representar de forma diferente os vértices
associados à jogada de cada jogador. A Figura 2.13 exemplifica o grafo MinMax com seus dois tipos de vértice.
CAPÍTULO 2 
Modelos de aplicação 103

Vértice do jogador Vértice do jogador


que maximiza o que minimiza o
ganho ganho
Opções

Valores obtidos ao final do jogo

Figura 2.13 Grafo MinMax

As arestas do grafo MinMax são as opções de decisão do jogo que podem envolver desde a movimentação de
peças no tabuleiro, colocação ou retirada de peças do tabuleiro ou nenhuma ação.
A Figura 2.14 exemplifica uma situação de um jogo qualquer cujas regras são desconhecidas, mas que oferece
nove possibilidades de conclusão, todas conhecidas e valoradas. Os valores de conclusão estão registrados dentro
dos vértices folha. Os vértices quadrados decorrem de uma jogada do oponente de maximização. Os círculos
referem-se às jogadas finalizadas pelo minimizador. Em virtude dos resultados possíveis para a conclusão do jogo
– as possibilidades de finalização do jogador de maximização –, o nível imediatamente superior ao nível das folhas
pode ser deduzido do comportamento lógico esperado para o jogador de minimização. Assume-se sempre que os
jogadores jogam de forma lógica e que não cometem erros de avaliação.

Conhecidas as condi-
ções de finalização do
jogo no nível i será pos-
sível determinar como
agirá o próximo para
formar o nível i+1 da
sequência de jogadas.

4 20 13 5 -1 2 -7 2 6

(1) Inicialização do jogo

Por exemplo, para o


vértice circular em que
são disponíveis os valo-
res 4, 20 e 13 (o vértice
Min circular mais a esquer-
4 -1 -7
da do grafo), o jogador
de minimização optará
por 4, minimizando o
4 20 13 5 -1 2 -7 2 6 valor possível da joga-
da.

(2) Jogador de minimização faz sua escolha


104 Grafos

De modo semelhante,
Max 4 optará por –1 e –7 nas
outras duas decisões.
Após ser preenchido
o nível do jogador de
4 -1 -7
minimização, o jogador
de maximização exami-
nará as opções 4, –1
4 20 13 5 -1 2 -7 2 6 e –7 e escolherá a de
valor 4, encerrando-se
o cálculo do valor final
(3) Jogador de maximização faz sua escolha do jogo.

Figura 2.14 Desenvolvimento do jogo no modelo de grafos

►Exemplo 4 – Modelando o Jogo da Velha Através de Grafos

Seja o tradicional jogo da velha, uma matriz 3 × 3 em que os jogadores, alternadamente, escolhem posições vazias
na matriz e fazem nelas uma marca “X” ou “O” – os símbolos de cada jogador. O jogo é concluído quando uma
sequência de três marcas contínuas é concluída, ou quando não existem mais posições vazias para serem preen-
chidas. No primeiro caso, vence o jogador da marca que obteve a sequência. No segundo caso, decreta-se o empate
– dá velha. A Figura 2.15 exibe como será formado o grafo associado às jogadas. A decisão é a alocação de um
“x” na grade, para o jogador de maximização, e uma “bola” na grade para o jogador de minimização. Em caso de
vitória do jogador de max o resultado será +1. O empate é representado por zero, e a vitória do minimizador por
–1. A Figura 2.16 exibe a enumeração parcial do jogo da velha através de um grafo de estado em que os vértices
são configurações possíveis do jogo.

x x x
x x x
x x x

x x x x x x x x

x x
x x x x x x x x x
x x x

Figura 2.15 Configurações associadas aos vértices


CAPÍTULO 2 
Modelos de aplicação 105

Verifica-se, na Figura 2.16, a herança dos resultados obtidos na enumeração exemplificada no grafo da Figura
2.15. O grafo de estado do jogo permite o exame das possibilidades de jogadas e a dedução do resultado final, mas
pode exigir uma enumeração proibitivamente grande. Para obter os resultados do último nível do jogo, é necessá-
rio explorar todas as suas possibilidades combinatórias. Essa exigência pode obrigar a enumeração de um número
de configurações exponencial em relação ao número de decisões que será necessário tomar.
Uma alternativa para não desenvolver necessariamente o grafo completo é a utilização de técnicas que permi-
tam avaliar as configurações de forma independente da sequência das jogadas. Para o jogo da velha, à semelhança
do exemplo 3, existem critérios que permitem tal independência. De posse dessas regras, a tomada de decisão dos
jogadores pode ser guiada com a dependência exclusiva das jogadas realmente realizadas pelo oponente, e a pri-
meira jogada pode igualmente ser deduzida da regra.
Um primeiro critério capaz de guiar o jogador no jogo da velha é o de maximizar / minimizar o número de
trilhas que podem levar à vitória.
Considerando que cada alocação feita na matriz abre diferentes possibilidades de trilhas de comprimento três,
o critério de avaliação do jogador de maximização claramente procurará manter para si o maior número possível
de opções que permitam formar uma sequência de alocação desse comprimento. Esse critério é ilustrado na Figura
2.17(1) e pode avaliar o potencial de cada jogada. Basta examinar quantas trilhas são mantidas abertas para cada
alocação possível. Com a aplicação do critério, a primeira jogada do maximizador seria realizada sempre no centro
da matriz.

x
o x x
o o
Max(-1,-1,0)=0

x x x x x
o x x o x x o x x
o o o o o x o
Min(1,-1)=-1 Min(0,-1)=-1 Min(0,1)=0

x x o x x x o x x x x o x o
o x x o x x o x x o x x o x x o x x
o o o o o o o o o o o x o o x o
1 -1 0 -1 0 1

x x o x o x x o x x x o
o x x o x x o x x o x x
o x o o x o o x o o x o
1 0 0 1

Figura 2.16 Desenvolvimento parcial do jogo da velha


106 Grafos

3-0=3

2-3=-1 *

2-1 =1

2-0 = 2

4-0=4 2-2=0 2-2=0 3-2=1

(1) Critério do maximizador (2) Critério do minimizador

Figura 2.17 Exemplo dos critérios de max e min no Jogo da Velha

Por outro lado, o jogador de minimização visará exatamente o contrário, bloquear a formação de sequências
do jogador de max, como mostra a Figura 2.17(2). Nesse caso, ao examinar a alocação proposta pelo jogador de
maximização – que joga erradamente no canto superior esquerdo da matriz –, o jogador de min teria sua jogada
lógica visando ocupar o centro da matriz.
A Figura 2.18 exibe o exame das duas primeiras jogadas do jogo da velha. As outras jogadas não explicitadas no
grafo podem ser derivadas das representadas através de uma rotação no tabuleiro de jogo.

Início
Max
1
x
x
Min -1 1

x x x x x o o
o o x x
o o o
3-2=1 3-3=0 3-2=1 3-3=0 3-4=-1 x 4-3=1 4-2=2
-2

o o o
x x x x o x o
2-3=-1 3-3=-0 2-2=-0 2-2=-0 2-4=-2

Figura 2.18 Vértices avaliados nas duas primeiras jogadas


CAPÍTULO 2 
Modelos de aplicação 107

2.2 Modelando Problemas Através de Grafos


Os grafos são ferramentas extremamente úteis para representar diferentes tipos de problemas, desde estruturas
matemáticas e situações de tomada de decisão até problemas geométricos. No presente item dois desses modelos
são discutidos. Ao longo do livro, vários outros problemas reais serão modelados via grafos em outros capítulos.

►Modelo 1: O Problema da Insanidade Instantânea

O problema denominado insanidade instantânea consiste em dispor quatro cubos coloridos de cores diferentes
formando um conjunto contínuo de modo que apresente quatro cores diferentes em cada face visível. Conside-
rando as cores Amarelo 1, Vermelho 2, Verde 3 e Azul 4, a Figura 2.19 exibe uma parte visível do que seria uma
solução desse problema.

4 3 1 2

1 2 3 4

Figura 2.19 Solução do problema da insanidade instantânea com 4 cubos

O jogo foi proposto em 1900, com o nome de Great Tantalizer. Uma versão com 30 cubos foi proposta em New
Mathematical Pastimes, por Percy Alexander MacMahon. O problema generalizado para um conjunto de n cubos é
NP-Completo (Robertson & Munro, 1978). Mesmo no problema com quatro cubos, o número de configurações a ser
examinado é alto. Cada cubo possui seis possibilidades para uma face livre. Fixada essa face, existem 4 possibilidades
restantes (por rotação) para posicionamento do cubo. Cada cubo possui 24 alinhamentos possíveis. Então a sequên-
cia total possui 244 configurações, mas 8 tipos de configurações são indistintas. Qualquer uma das faces restantes
pode iniciar
4
o processo e a coluna pode sofrer uma rotação, sendo quatro colunas (4  2). Portanto existem um total
de: 24 = 41.472 diferentes configurações a examinar.
8
Claramente, as faces dos quatro cubos devem possuir uma composição de cores que permita a solução do pro-
blema. Uma solução trivial seria alcançada com um cubo de cada cor. A Figura 2.20 apresenta uma distribuição
de cores pelas faces que torna o problema de solução viável. Cada cor será representada também por um diferente
número.

1 4 3 1
2 1 3 3 4 1 2 2
2 4 1 1 3 2 4 2
3 2 4 3
Cubo A Cubo B Cubo C Cubo D

Figura 2.20 Uma coloração viável para as faces

A solução desse problema pode ser obtida através de um modelo em grafos, segundo a formulação descrita a
seguir.
108 Grafos

Forme um grafo cujos vértices são as quatros cores e as arestas representam a ligação entre cores que se opõem
em cada um dos quatro cubos. No grafo as arestas serão indicados com o rótulo do cubo que representam para faci-
litar a solução. O grafo proposto pela formulação para a distribuição de cores da Figura 2.20 é apresentado na Figura
2.21(13). As Figuras 2.21(1) a (4) apresentam um esquema que mostra o posicionamento das faces opostas do cubo.
As faces opostas são representadas pela letra F de mesmo índice. Cada conjunto de faces opostas dará origem a uma
aresta no grafo de posicionamento. Portanto, os grafos para cada cubo possuirão três arestas, uma vez que os cubos
possuem três conjuntos de faces opostas. As Figuras 2.21(5), (7) (9) e (11) mostram os grafos dos cubos associados
às Figuras 2.21(6), (8), (10) e (12). Por exemplo, o grafo da Figura 2.21(6) possui a aresta (1-3), que representa a
ligação das faces F1 do grafo cubo da Figura 2.21(5).

F1 F1
F3 F2 F2 F3
F1 F3 F1 F3
F2 F2
(1) Faces opostas (2) Aresta 1 (3) Aresta 2 (4) Aresta 3

1 3 3
A
4 B
2 1 3 3
1 4 1 4
2 4 1 1 B
A B
A
3 2 2 2
(5) Cubo A (6) Arestas de A (7) Cubo B (8) Arestas de B
C 3
3 3
1
D
4 1 C 2 2
1 4 1 4
3 2 4 2 D
C
4 2 3 D 2
(9) Cubo C (10) Arestas de C (11) Cubo D (12) Arestas de D
C
3
B
D
A

C
1 B 4
D
A
A B C

2
D
(13) Grafo final

Figura 2.21 Construção do grafo para o problema da insanidade instantânea


CAPÍTULO 2 
Modelos de aplicação 109

Uma solução para o problema pode ser encontrada na determinação de um ciclo hamiltoniano no grafo, resul-
tado da união de todas as arestas de posicionamento de todos os cubos, tal que um mesmo rótulo de aresta (A, B,
C, e D) seja repetido no ciclo. A Figura 2.22 exibe os dois distintos ciclos hamiltonianos que podem ser traçados
no grafo da Figura 2.21(13).

3 3
B D
A
B C
1 4 1 4
D
A
C
2 2
(1) Ciclo 1 (2) Ciclo 2

3
3
A D

1 4
4 A
1
D
2 2
(3) Parte superior e inferior dos cubos A e D (4) Parte esquerda e direita dos cubos A e D

Figura 2.22 Posicionamento dos cubos

Um ciclo resolve as cores na parte da frente e de trás dos cubos, o outro as cores à esquerda e à direita. As Fi-
guras 2.22(3) e (4) exemplificam como posicionar os cubos A e D. Deve-se examinar o cubo A, verificando sua
ocorrência nos ciclos. As arestas rotuladas com A ligam as cores 1 e 3 na Figura 2.22(1) e as cores 2 e 4 na Figura
2.22(2). Assim deve-se colocar o cubo A com 1 para cima e 3 para baixo, Figura 2.22(3), 2 à direita e 4 à esquerda,
Figura 2.22(4). De forma análoga, colocar o cubo D com amarelo (número 1) para cima e azul (número 4) para
baixo – Figura 2.22(3), e vermelho (número 3) à direita e verde (número 2) à esquerda – Figura 2.22(4).
Uma variante do problema da insanidade instantânea emprega seis cubos, sendo denominada na literatura
inglesa de Drive Ya Crazy. A dificuldade de solucionar esse problema manualmente é bem superior à da insanidade
instantânea. No caso do Drive Ya Crazy existem 246/8=23.887.872 configurações possíveis a examinar.

►Modelo 2: Ensinando o Computador a Girar Cubos

A modelagem através do uso de grafos possui a vantagem de, em muitas ocasiões, facilitar a representação compu-
tacional do problema e, consequentemente, sua programação. Como um exemplo do uso desse recurso, o presente
modelo sugere uma possível estratégia para organizar a estrutura de dados de um algoritmo de forma a representar
os movimentos de rotação de um cubo. A representação proposta permitirá a programação do exame exaustivo de
todas as configurações de problemas do tipo insanidade instantânea e outros semelhantes.
Considere um conjunto de n cubos coloridos, colocados lado a lado, como exemplifica a Figura 2.23, em que
cada face de cada cubo pode possuir uma cor independente das demais. Por exemplo, serão considerados cubos
com cinco cores diferentes, a saber: Amarelo 1, Vermelho 2, Verde 3, Azul 4 e Branco 5.
110 Grafos

2 1 3 1

4 3 2 3 1 2 3 5

(1) Configuração inicial – em união lateral

z
3 y 3
3 2 x
y 4 x 1
(2) Girando os cubos 1 e 3

1 1 1 1

4 2 2 3 5 2 3 5

(3) Solução

Figura 2.23 Uma solução para o problema face certa

O problema consiste em desenvolver um algoritmo computacional que gire os cubos de modo que se forme
determinado padrão de cores em uma das superfícies do conjunto – a superfície de cima, por exemplo, problema
denominado face certa. A Figura 2.23 mostra os passos de solução para o problema face certa. Observe que a Fi-
gura 2.23(1) esclarece o giro dos cubos, exemplificando o movimento em relação aos eixos x e y. O giro também
pode ocorrer sobre o eixo z.
No caso do exemplo, a solução exige a cor amarela (1) em todas as superfícies superiores dos cubos. A solução
do problema é obtida girando o cubo número 1, o primeiro da esquerda para a direita do grupo de cubos. O giro
do cubo 1 deverá ocorrer sobre o eixo y. Por outro lado, o cubo 3 deverá ser movido sobre o eixo x. As cores das
faces cultas dos cubos girados são, respectivamente, amarelo (1) e branco (5), cores das faces inferiores dos cubos.
A questão aqui é como fazer o computador entender as direções de giro no espaço, como realizar o “giro” dos
cubos e, finalmente, como detectar que a parte de “cima” do conjunto de cubos alcançou a configuração desejada.
Para programar a solução do problema proposto, em primeiro lugar será necessário criar uma estrutura de da-
dos que possa representar os cubos e as posições relativas de suas faces e cores. Também será indispensável deter-
minar o que vai definir que um cubo sofreu uma rotação e como o computador saberá distinguir os diversos eixos
e sentidos de rotação. Seja o sistema de projeção das faces dos cubos representado na Figura 2.24(1) – que guarda
forte semelhança com sistema de representação sugerido no problema da insanidade instantânea.
Na representação do cubo exibida na Figura 2.24(1) é possível definir posições relativas no espaço, desde que
um ponto de referência seja estabelecido. No caso, o ponto de referência para a representação da face “superior”
será a célula apontada pelo ponteiro de exame no algoritmo. Na Figura 2.24(3), os quatro cubos estão dispostos
segundo uma configuração em união lateral do cubo representado na Figura 2.24(1). O ponteiro de busca aponta
inicialmente para a posição inferior de cada grafo da Figura 2.24(3) – na figura representando as faces de número
2, 3, 4 e 1. Portanto, a configuração da Figura 1.24(3) apresenta na face superior as cores 2, 3, 4 e 1. A solução final
requerida para a face superior de cada grafo está mostrada nos quadros dos ponteiros, sendo definida pelas cores
1, 1, 2 e 2 para os cubos 1, 2, 3 e 4, respectivamente.
CAPÍTULO 2 
Modelos de aplicação 111

4
4
2 3 5 4 3 5 4

4 3 1
1
2
2

(1) Representação bidimensional das faces (2) Grafo associado ao cubo e suas faces

4 2 1 4

3 5 4 3 1 5 3 2 5 2 3 5

1 4 5 2

2 3 4 1

Cor 1 Cor 1 Cor 2 Cor 2

(3) Vetor de cores exigido na solução

Figura 2.24 Modelo para o problema face certa

As relações de vizinhança entre as faces do cubo são representadas pelas arestas do grafo da Figura 2.24(2).
Dada a situação de vizinhança estabelecida no grafo e o fato de o ponto de referência estar sempre fixado na parte
superior do cubo, percorrer uma aresta significa realizar uma rotação que troque a face correspondente ao vértice
inicial pela face associada ao vértice terminal da aresta. A face corrente sempre será considerada “superior” ou
visível. A busca inicia pela face visível do cubo, seja ela qual for.
No modelo da Figura 2.24(3) cada grafo corresponde a um cubo. Portanto, cada grafo Gi, i = 1...n, é definido por
seu conjunto de vértices, seu conjunto de arestas e as cores associadas aos vértices de Gi. O grafo pode ser represen-
tado por qualquer uma das estruturas descritas anteriormente. Suponha que a representação vetorial é utilizada.
A cada Gi estão associados dois vetores Vi e Wi. Cada elemento de Vi possui dois campos chamados: cores e marca.
O campo cores de um elemento j de Vi guarda a cor associada ao vértice j do grafo Gi. O campo marca recebe Ver-
dadeiro ou Falso definindo, respectivamente, se o vértice correspondente foi ou não rotulado pelo algoritmo. No
início, os campos marca de todos os vértices dos n grafos é igual a Falso. Os elementos do vetor Wi correspondem
aos nós adjacentes aos vértices de Vi. Uma vez que todos os nós possuem grau igual a 4, a lista dos adjacentes de
um vértice j do grafo Gi encontra-se entre as posições 4(j-1)+1 e 4(j-1)+4 do vetor Wi.

Quadro: Algoritmo Face_Certa

A
Algoritmo Face_Certa (n, faces_fim)
Para i  1 até n faça
Procura_cor(i, 1, faces_fim[l])
112 Grafos

Quadro: Procedimento Procura_cor

A
Procedimento Procura_cor (i, j, cor)
Se Vi[j ]  cores  cor então
Vi[j ]  marca  ‘Verdadeiro”
k  4(j – 1) + 1
Enquanto Vi[Wi[k]]  marca = ‘Verdadeiro” Faça
kk+1
Procura_cor(i, k, cor)

Dada uma configuração inicial dos grafos e uma configuração desejada para as cores nas faces superiores dos
cubos, o problema consiste em percorrer as arestas (rotacionar) de cada grafo até encontrar o vértice (face) com
a cor desejada. Os algoritmos dos quadros Algoritmo Face_Certa e Procedimento Procura_cor podem ser
utilizados para solucionar o problema. O algoritmo Face_Certa, descrito no quadro, recebe como parâmetros
o número de cubos, n, e o vetor faces_fim, de dimensão n, contendo a configuração final desejada de cores. No
algoritmo é chamado o procedimento Procura_cor, descrito no quadro, para cada grafo Gi. Se a cor do vértice
j passado como parâmetro ao procedimento Procura_cor corresponde à cor procurada, o procedimento é en-
cerrado. Caso contrário, o vértice j do grafo i é rotulado como visitado e procura-se um vértice k adjacente a j
ainda não rotulado. Quando k é encontrado, uma chamada recursiva do procedimento é realizada para o vértice
k do grafo i. A chamada recursiva representa o percurso na aresta (j,k) do grafo i, ou seja, uma rotação do cubo
colocando a face correspondente ao vértice k para cima.

►Modelo 3: Grafo de Recrutamento

Apesar das intensas campanhas de conscientização, no mundo dezenas de milhões de pessoas estão hoje
ameaçadas pela contaminação do HIV. Calcula-se que em 2009 existiam 33.3 milhões de infectados (http://
www.avert.org/worldstats.htm – acesso em setembro de 2011). Uma estratégia para alcançar as pessoas em
alto risco e providenciar ações de prevenção, testes e tratamento, quando for o caso, é usar as redes sociais.
Normalmente um caminho eficiente nesse processo é envolver pessoas contaminadas como recrutadores
desse programa. Em nove locais financiados pelo programa do DHHS (Department for Health and Human
Services) do Center for Disease Control and Prevention – USA (CDC, 2005; Jordan et al., 1998), cerca de 6%
das pessoas testadas foram recém-diagnosticadas com HIV, uma taxa prevalência seis vezes maior do que a
média da maioria dos programas CTR HIV, ilustrando o grande valor do uso de redes sociais para alcançar
as pessoas em risco de infecção pelo HIV. A rede da Figura 2.25 representa um grafo que ilustra um caso real
de recrutamento. Os vértices vermelhos são portadores de HIV e os vértices amarelos são não portadores de
HIV. Os vértices vermelhos com a linha dupla se autoclassificam como “recrutadores”. Os vértices de maior
dimensão atuam como recrutadores, mas não se consideram com tal compromisso. As setas mostram as re-
lações sociais entre as pessoas.
CAPÍTULO 2 
Modelos de aplicação 113

Figura 2.25 Rede de recrutamento


Fonte: http://www.cdc.gov/hiv/resources/guidelines/snt/overview.htm

►Modelo 4: Grafo para Análise de Personagens Literários

Franco Moretti (Moretti, 2011), comenta uma rede de interações e comunicação entre personagens em obras
literárias visando analisar a composição literária. No grafo, uma aresta (1-2) significa que os personagens 1 e 2
conversam entre si. O grafo da Figura 2.26 examina a comunicação entre os personagens de Hamlet.

7
3
1 2 4 5 6 8
9
12 10
11 14

17 13 15

18 27
20 19 16
21
22 24 26 29
25
23 28 30

Figura 2.26 Rede de comunicação entre os personagens de Hamlet, obra de Shakespeare


1 - 2nd Gravedigger 7 - Cornelius 13 - Hamlet 19 - Osric 25 - Norwegian Captain
2 - Gravedigger 8 - Voltemand 14 - Claudius 20 - Horatio 26 - Laerts
3 - Lord 9 - Messenger 15 - Queen 21 - Gentleman 27 - Ophelia
4 - 1st Player 10 - Messenger 16 - Gentleman 22 - Sailor 28 - Priest
5 - Rosencrantz 11 - Marcellus 17 - Bernardo 23 - Ambassadors 29 - Polonius
6 - Guildenstern 12 - Ghost 18 - Francisco 24 - Fortinbras 30 - Reynaldo
Mapa dos personagens
114 Grafos

Com o auxílio do grafo, Moretti faz várias análises e obtém conclusões sobre Hamlet.

►Modelo 5: O Problema dos Sinos da Catedral de Saint-Paul

A presente aplicação é descrita em Polster & Ross (2009). A Catedral de Saint-Paul possui doze sinos principais,
em tons de C# maior. O menor sino, número 1, toca a nota mais alta, e o maior, sino 12, toca a nota mais baixa.
Denomina-se cadeia de acordes o toque de uma sequência de sinos exatamente uma vez. As cadeias podem ser
tocadas com um número qualquer de sinos. Para simplificar o problema, considere somente os sinos 1 a 4. Pode-se
também considerar uma cadeia de acordes como uma permutação de toques nos sinos existentes na catedral. Por
exemplo, a cadeia 3214 se refere a tocar primeiro o sino 3, depois o 2, depois o 1 e, finalmente, o 4. Tocar cadeias
significa tocar uma sequência de cadeias seguindo três regras:

1. A sequência inicia e termina com a cadeia 1234.


2. Não é permitido repetir cadeias, exceto por 1234, que inicia e termina a sequência.
3. Dadas duas cadeias consecutivas na sequência, qualquer sino pode mudar, no máximo, uma posição na
ordem de toque.

Para exemplificar a terceira regra, a cadeia 2134 não é permitida após 3214, uma vez que o sino 3 teria que ser
movido duas posições. Na Figura 2.27 é apresentado um exemplo de uma sequência que obedece às três regras
anteriormente listadas. Essa sequência de toques é denominada sequência plain bob e visita todas as permutações
de 4 sinos.
A tabela abaixo deve ser lida de baixo para cima e da esquerda para a direita. A última linha das duas pri-
meiras colunas é igual à primeira linha da segunda e terceira colunas, respectivamente. As configurações 1342
(primeira coluna e última linha) e 1423 (segunda coluna e última linha) são repetidas apenas para mostrar a
continuidade da permutação do uso dos sinos. A configuração 1234 significa que os sinos são tocados exata-
mente nessa sequência. Pode-se verificar que a terceira regra é obedecida na transição entre cada sequência de
toques. Nas sequências, cada sino permanece em sua própria posição ou troca de lugar com o sino adjacente,
como indicado pelas setas.

1234 1342 1423


2143 3124 4132
2413 3214 4312
4231 2341 3421
4321 2431 3241
3412 4213 2314
3142 4123 2134
1324 1432 1243
1342 1423 1234

Figura 2.27 Sequência plain bob

Segundo as informações na referência citada, tocar uma cadeia leva em torno de dois segundos, o tempo apro-
ximado de um sino grande para completar seu movimento pendular natural. Os tangedores podem tocar sequên-
cias com 5.000 cadeias ou mais (conhecidas como repique), que resultam em várias horas de diversão para os
vizinhos da catedral. Por convenção, não é permitido aos tangedores qualquer ferramenta de auxílio à memória
CAPÍTULO 2 
Modelos de aplicação 115

como partituras. Também não podem receber auxílio de outros tangedores. Deste modo, um bom tangedor de
sinos deve recitar efetivamente uma sequência de milhares de números a cada dois segundos e traduzir esta se-
quência em um toque de sinos perfeito. Um tangedor pode levar vários meses para ser proficiente no toque de
um único sino (individualmente) e anos antes de poder sonhar em participar de uma maratona de toques de sino
como membro de um time.
Ao tocar sinos, um dos grandes desafios é tocar uma sequência que inclua todas as cadeias possíveis. Isto é
conhecido como extensão. Uma extensão de quatro sinos contém todas as 1×2×3×4=24 cadeias possíveis, como
no caso do plain bob. (Tradicionalmente, a primeira ocorrência da cadeia 1234 não é incluída na contagem). De
forma geral, uma extensão com n sinos consiste de todas as 1×2×3×...×n cadeias possíveis.
Se um número grande de sinos está disponível, não é fácil construir uma extensão que obedeça às regras. Com
um tangedor para cada sino da igreja, provavelmente a maior extensão humanamente possível contém oito sinos.
Isto foi, possivelmente, atingido uma única vez, em Loughborough Bell Foundry, em 1963. O toque começou às
6:52 da manhã, em 27 de julho, e terminou às 12.50 da manhã, em 28 de julho, depois de 40320 cadeias e 17 horas
e 58 minutos de toque contínuo. Claramente, tocar uma sequência tão grande de cadeias é extremamente difícil,
tanto física como mentalmente.

2341 2431

2314 2413
2134 2143

1234 1243
3214 4213
3241 4231
1324 1423
3124 4123

1342 1432
3142 4132

3412 4312

3421 4321

Figura 2.28 Grafo das permutações das cadeias de acordes

Talvez pudesse ajudar aos tangedores perceber que as permutações dos sinos podem ser modeladas através de
vértices em um grafo. Dois vértices são conectados por uma aresta se existe uma transição permitida (de acordo
com os tocadores de sino) que transforma uma cadeia na outra. O grafo completo para quatro sinos é mostrado
na Figura 2.28. Note que existem quatro tipos diferentes de transições entre as permutações, correspondendo a
quatro cores diferentes das arestas. Então, uma extensão é simplesmente um tour completo neste grafo, visitando
cada vértice exatamente uma vez e voltando ao vértice inicial (em amarelo), um ciclo hamiltoniano.
A extensão de 4 sinos corresponde a um ciclo hamiltoniano, como exemplificado no grafo da Figura 2.29. Todo
ciclo hamiltoniano em um grafo como este corresponde a duas extensões diferentes, uma vez que o ciclo pode ser
atravessado em duas direções diferentes – tocando uma extensão de trás para frente cria-se uma nova extensão.
A Figura 2.29 correspondente ao plain bob minimus. No total, existem 10792 extensões minimus diferentes que
podem ser encontradas no grafo da Figura 2.29. A Figura 2.30 exemplifica uma segunda extensão.
116 Grafos

2341 2431

2314 2413
2134 2143

1234 1243
3214 4213
3241 4231
1324 1423
3124 4123

1342 1432
3142 4132

3412 4312

3421 4321

Figura 2.29 Uma solução para uma extensão – ciclo hamiltoniano / plain bob

2341 2431

2314 2413
2134 2143

1234 1243
3214 4213
3241 4231
1324 1423
3124 4123

1342 1432
3142 4132

3412 4312

3421 4321

Figura 2.30 Uma segunda solução para uma extensão

Descrição detalhada dessa aplicação disponível em: http://plus.maths.org/content/issue/53 – Acesso em setem-


bro de 2011.
CAPÍTULO 2 
Modelos de aplicação 117

►Modelo 6: Manejo Ecológico de Reservas Vegetais

Qualquer área do planeta que preserve suas características naturais é um sistema complexo de relações simbió-
ticas. Animais, vegetais e micro-organismos interagem de forma a equilibrar o sistema de vida. Intervenções
nesses sistemas causam, inexoravelmente, prejuízo para esse equilíbrio. Por outro lado, é inegável que uma
significativa parte do planeta acabará sempre sujeita à interferência humana, no mínimo em áreas destinadas
à moradia, ao plantio de alimentos, extração mineral etc. Um desafio do futuro será conciliar as demandas da
população humana com a preservação dos sistemas bióticos naturais. Considere que determinada área vegetal
seja economicamente explorada para a extração de madeira de lei; considere ainda que as árvores sejam corta-
das perto do fim de seu ciclo de vida natural ou quando, por outros motivos, tenham sua saúde comprometida
naturalmente; leve em conta que as árvores removidas são substituídas por mudas de outras árvores da mesma
espécie e localizadas no ponto da retirada. A Figura 2.31 da aplicação exemplifica a planta de um lote de distri-
buição de espécies vegetais em uma área verde maior, que é explorada economicamente. As árvores que podem
ser retiradas são os vértices em amarelo. Os traços representam caminhos preexistentes. O retângulo amarelo é
um posto florestal.

Figura 2.31 Distribuição das árvores no lote de exploração

Considere que o plano de manejo de um dado ano contemple a retirada e o replantio de 6 árvores da reserva.
Considere também que, para minimizar o impacto ambiental da remoção das árvores, duas remoções nunca
podem ocorrer menos de 300 metros afastadas entre si e o total de trilhas abertas na mata para a remoção da
árvore não pode ultrapassar 1000 metros. A Figura 2.32 exibe o modelo em grafos das restrições desse proble-
ma. Caso duas árvores estejam localizadas dentro do raio de 300 metros de afastamento mínimo, são ligadas
por uma aresta.
118 Grafos

Figura 2.32 Grafo de proximidade

A Figura 2.33 exibe uma solução viável para a exploração anual desse lote. As árvores escolhidas pertencem a
um conjunto independente (ver Capítulo 5 para a definição do conceito de conjunto independente) do grafo des-
conexo de proximidade, tal que a soma da distância de cada vértice do conjunto aos caminhos já existentes dentro
do lote seja minimizada.

Figura 2.33 Árvores escolhidas e as trilhas de retirada


CAPÍTULO 2 
Modelos de aplicação 119

►Modelo 7: As Torres de Hanói

Um problema muito conhecido em Ciência da Computação é o das Torres de Hanói. O problema clássico das
Torres de Hanói consiste em, dados n discos e 3 suportes ou pinos, mover com o menor número possível de movi-
mentos todos os n discos de um suporte origem para um suporte destino, de acordo com as seguintes condições:

 Apenas um disco pode ser movimentado de cada vez.


 Os discos movidos deverão ser apoiados sempre em discos de menor tamanho ou na base de algum suporte.

Denominando os três pinos que recebem os


A Hanoi discos movimentados por 1, 2 e 3, e represen-
tando o movimento do disco do topo da pilha
Hanoi (n, 1, 2, 1)
do pino 1 para o topo da pilha do pino 2 por
Se (n = 1) então 1  2;
12.
Senão
Hanoi (n – 1, 1, 3, 2); O quadro Hanói apresenta um algoritmo re-
12 cursivo para a solução desse problema. A cha-
Hanoi (n – 1, 3, 2, 1); mada Hanói(n,1,2,3) se refere a n discos que
Fim_Senão tem como origem o pino 1, como destino ao
pino 2 tendo o pino 3 como intermediário. A
Exato chamada Hanói(n,3,2,1) se refere a n discos
que tem como origem o pino 3, como destino
Quadro: Hanói ao pino 1 tendo o pino 2 como intermediário.
A Figura 2.34 exibe os movimentos do desafio das Torres de Hanói. Por convenção, uma configuração de pratos
será representada por um vetor com tantas posições quantas forem os pratos (Figura 2.34(1)). Na posição do prato
será marcado o pino onde o prato está assentado, como ilustra a Figura 2.34(2)-(4). A Figura 2.34(5) exemplifica
como formar um grafo que representa as possibilidades de movimento dos pratos. Cada vértice representa uma di-
ferente configuração do desafio. As configurações são ligadas por arestas se uma configuração pode ser alcançada
a partir de outra pelo movimento legal de um prato.

(1,1,1)
Pino do Prato A Pino do Prato B Pino do Prato C
C

(.....,... ..,.....)
B
A
x y z
(1) Vetor de representação do posicionamento
(2) Vetor de posicionamento no início do desafio
dos pratos

(1,1,2) (1,3,2)

B C B
A C A
x y z 1 2 3
(3) Movimento de x para y (4) Movimento de x para z
120 Grafos

(1,1,1)
1 2 3

B B

A C A C

(1,1,2) (1,1,3)

1 2 3 1 2 3

(5) Formação do grafo de movimentos dos pratos

Figura 2.34 Representação das configurações e movimentos das Torres de Hanói

A Figura 2.35 apresenta o grafo de movimentos do desafio das Torres de Hanói para o caso de três pratos. A
Figura 2.36 apresenta uma solução do problema com o menor número possível de movimentos. Existem O(3n)
vértices no grafo para o caso do problema com três pinos e n pratos.

(1,1,1)

(1,1,2) (1,1,3)

(1,3,2) (1,2,3)

(1,3,3) (1,1,2)
(1,3,1) (1,2,1)
(2,3,3) (3,2,2)

(2,3,1) (2,3,2) (3,2,3) (3,2,1)

(2,2,1) (2,1,2) (3,1,3) (3,3,1)

(2,2,2) (3,3,3)
(2,2,3) (2,1,3) (2,1,1) (3,1,1) (3,1,2) (3,3,2)

Figura 2.35 Grafo de movimentos das Torres de Hanói com três pinos e três pratos
CAPÍTULO 2 
Modelos de aplicação 121

(1,1,1)

(1,1,2) (1,1,3)

(1,3,2) (1,2,3)

(1,3,3) (1,1,2)
(1,3,1) (1,2,1)
(2,3,3) (3,2,2)

(2,3,1) (2,3,2) (3,2,3) (3,2,1)

(2,2,1) (2,1,2) (3,1,3) (3,3,1)

(2,2,2) (3,3,3)
(2,2,3) (2,1,3) (2,1,1) (3,1,1) (3,1,2) (3,3,2)

Figura 2.36 Uma solução das Torres de Hanói com três pinos e três pratos

2.3 Exercícios Resolvidos do Capítulo 2


Exercício no 1
O problema das formigas dentro do tubo
Dentro de um tubo são colocadas quatro formigas de forma que fiquem equidistantes entre si. As formigas
somente podem caminhar pelo fundo do tubo. Elas caminham sempre na direção em que sua cabeça enxerga
(caminham para a frente) e todas com a mesma velocidade. Uma formiga nunca para de caminhar e jamais
passa por cima da outra dentro do tubo. Quando duas formigas se encontram, ambas invertem a direção da
caminhada. Elas são lentas para inverter o movimento, de forma que gastam o tempo de percorrer meio tubo
para girar o corpo e inverter a direção de movimento. Quando uma formiga alcança o fim do tubo, ela vai em-
bora. Elabore um grafo de estado que permita determinar uma forma de dispor as formigas ao longo do tubo
(a posição relativa de sua cabeça em relação às saídas do tubo e que vai determinar o sentido de seu movimento
inicial) de modo a maximizar o tempo de a última formiga deixar o tubo (por qualquer extremidade).
Exercício no 2
O Primeiro julgamento de Salomão no caso do caixeiro implicante
Um atacadista da antiga Jerusalém era conhecido por dar troco com moedas falsas. Fraudava seus fornecedores
misturando uma moeda falsa com 11 moedas verdadeiras no troco. A estratégia do atacadista era, supostamente,
raspar levemente a moeda de prata para fraudar o pagamento das mercadorias dos caixeiros-viajantes. Como a
quantidade de prata removida era bem pequena, as balanças simples do comércio eram capazes de detectar a
fraude com certeza. Um dado caixeiro não se conformou com o fato ser conhecido de todos e pediu ao sábio rei
Salomão para pesar as moedas de seu troco recebido do falsário na precisa balança real e provar a fraude. Salomão,
além de sábio, era ocupado. Assim, decidiu aceitar o pedido e ceder a preciosa balança mediante a condição de
que o queixoso realizasse apenas três pesagens para provar sua afirmação. Com somente três argumentos, diz
122 Grafos

Salomão, um homem pode provar o que fala. Assim exigiu que o caixeiro encontrasse, com as três pesagens, a
moeda falsa e provasse que era mais leve. Caso a moeda falsa fosse realmente identificada, seria queimada e as de-
mais recolhidas ao tesouro do rei. O crime seria severamente punido com o enforcamento. Já caso o caixeiro não
pudesse apontar exatamente a moeda falsa, seria vendido como escravo. Sabendo que o comerciante atacadista
é realmente desonesto, desenvolva um modelo em grafos de estado que permita ao caixeiro identificar a moeda
mais leve em apenas três pesagens para não ser vendido como escravo.
Exercício no 3
O segundo julgamento de Salomão no caso do caixeiro implicante
O atacadista desonesto do primeiro julgamento de Salomão foi enforcado. Todavia, os demais atacadistas deso-
nestos não se conformaram com o fato de não poderem mais fraudar os caixeiros. Então, mudaram o método
de fraude: passaram a raspar a prata e substituí-la por chumbo, de modo que não ficassem mais leves. Como
ninguém em Jerusalém possuía uma balança com a precisão da balança real, usada na fabricação de moedas, as
moedas falsificadas acabavam sempre um pouco mais leves ou mais pesadas do que as moedas não fraudadas.
Agora, sem a possibilidade de saber se a moeda falsa é mais pesada ou mais leve, os falsários se sentiram mais
seguros contra o já conhecido caixeiro implicante. Todavia, o caixeiro não cedeu e, ao detectar a fraude, apelou
para o julgamento de Salomão mais uma vez. Tudo se repetiu com Salomão decretando a mesma exigência e
prometendo os mesmos castigos do caso anterior (como todos esperavam, inclusive os falsários, que achavam
impossível solucionar o caso). Nesse caso, o atacadista foi enforcado ou o caixeiro implicante foi vendido como
escravo? Prove a resposta analisando as possibilidades de pesagem.
Exercício no 4
O terceiro julgamento de Salomão no caso do caixeiro implicante
Como o leitor poderá comprovar, o atacadista do segundo julgamento de Salomão também foi enforcado. O
fato levou os demais atacadistas desonestos de Jerusalém à fúria. Agora o desafio tornara-se pessoal! Estudaram
o problema e resolveram enfrentar o caixeiro implicante com uma armadilha. Usariam as palavras do rei: so-
mente três argumentos são necessários para provar uma acusação. Assim, insistiram exatamente no mesmo
golpe do segundo julgamento para levar o caixeiro a apelar novamente ao rei. E isso aconteceu. Contudo, à
noite, antes do dia do julgamento e com a ajuda de um escravo subornado, misturaram três novas moedas ao
conjunto das 12 que já haviam sido entregues ao rei como prova. Quando a audiência de julgamento começou
e a prova foi trazida à presença do rei Salomão, havia 15 moedas. Ninguém sabia agora quantas moedas eram
verdadeiras e quantas falsas. O que se sabia é que poderiam ser até quatro. O caixeiro implicante ficou muito
perturbado quando percebeu a possibilidade de ser obrigado a provar quais eram essas moedas com apenas três
pesagens. Desesperado, apelou para a sabedoria de Salomão. Ele havia denunciado uma fraude em 12 moedas,
não em 15. Todavia, como a palavra do rei não poderia voltar atrás, Salomão, em sua sabedoria, decretou: com
três pesagens o acusador deve provar que existe pelo menos uma moeda falsa nesse troco. Se as balanças caírem
em qualquer das três pesagens, este rei vai decretar o castigo aos acusados. Mas, se elas ficarem equilibradas, o
acusador será vendido para pagar sua calúnia. Sabendo-se que o caixeiro implicante era suficientemente hábil
para encontrar a solução caso ela existisse, responda: foi ele vendido como escravo?
Exercício no 5
O problema da divisão do azeite
Dois amigos foram ao mercado e, aproveitando uma oferta extraordinária, compraram um latão de azeite ex-
travirgem de 8 litros. A compra foi realizada pensando em dividir o azeite entre os dois amigos. Eles moram em
bairros diferentes e distantes, e desejam levar o azeite imediatamente após a compra. O caso é que eles possuem
no carro dois recipientes com capacidade para 5 e para 3 litros. Um dos amigos pode levar os 4 litros na própria
embalagem de compra, todavia é necessário medir 4 litros e despejá-los no recipiente de 5 litros do outro amigo.
Formule o problema através de um grafo.
CAPÍTULO 2 
Modelos de aplicação 123

Exercício no 6
A reunião do clube
Um clube possui um grupo de sócios problemáticos. Ninguém admite sentar-se ao lado de um inimigo. O pre-
sidente do clube deseja fazer uma reunião com todos os sócios e encontrou dificuldade de distribuir os sócios
em uma mesa redonda de forma que ninguém sente ao lado de um inimigo. Intrigado, contrata um especialista
em Teoria dos Grafos para resolver o problema. O especialista apresenta um diagnóstico. Se houvesse um sócio
a menos nesse clube o problema poderia ser solucionado, mas com o atual número de sócios isso é impossível.
Quantos sócios possui o clube?

2.4 Exercícios Propostos do Capítulo 2

Modelos

2.01: Grafos para moléculas. Trace os grafos associados às moléculas da figura que se segue.

H H H H
Cl
H C H H C C H C C
H Cl
H H H

1 2 3

Figura do exercício 2.01


2.02: Os canibais. Três canibais e três missionários estão viajando juntos e chegam a um rio. Eles desejam atra-
vessar o rio, sendo que o único meio de transporte disponível é um barco que comporta no máximo duas
pessoas. Há outra dificuldade: em nenhum momento o número de canibais pode ser superior ao número
de missionários em uma das margens, pois desta forma os missionários estariam em grande perigo de vida.
Como administrar a travessia do rio?
2.03: O problema das n torres. Em um tabuleiro de xadrez deseja-se alocar 8 torres de modo que nenhuma delas
seja atacada por qualquer outra, conforme a figura. Modele o problema através de um grafo. Supondo que
a alocação de uma torre seja representada em uma matriz A=[aij ] em que o primeiro índice diz respeito às
linhas e o segundo representa as colunas do tabuleiro, contadas sequencialmente a partir do canto inferior
esquerdo. Modele através de um grafo o problema de alocar torres, objetivando maximizar a soma dos índi-
ces das células ocupadas pelas oito torres alocadas no tabuleiro.

Figura do exercício 2.03


124 Grafos

2.04: O problema das n rainhas. Em um tabuleiro de xadrez deseja-se alocar 8 rainhas de modo que nenhuma delas
seja atacada por qualquer outra, conforme a figura do exercício. Modele o problema através de um grafo.

(1) Localização uma de rainha (2) Localizações incompatíveis


Figura do exercício 2.04
2.05: As matryoshkas. Um centro de artesanato produz bonecas aninhadas – matryoshkas. As matryoshkas
também são produzidas manualmente, assim o seu encaixe é um processo impreciso. O tamanho das ma-
tryoshkas é medido em cinco direções de modo a formar um vetor de medidas (v-w-x-y-z). Como no caso
das caixas, para que uma matryoshka seja aninhada no interior de outra, é necessário que cada uma das suas
medidas seja estritamente menor que a boneca de fora, contudo as peças aninhadas não podem ser giradas.
O preço das matryoshkas depende do número de bonecas aninhadas. Formule um problema em que, dado
um conjunto de n matryoshkas, se possa determinar o maior aninhamento possível.
2.06: Planejamento de disciplinas. Um departamento de informática pretende oferecer 9 disciplinas para a séti-
ma fase do Curso de Computação no próximo semestre e 2 disciplinas específicas para ênfase no petróleo.
As disciplinas estão relacionadas abaixo:
Ênfase no Petróleo
1. (PO) – Elementos de Pesquisa Operacional Aplicados ao Petróleo
2. (TA) – Aplicação de Grafos à Exploração e Distribuição de Petróleo
Curso Normal
1. (EE) – Engenharia de Software
2. (SO) – Sistemas Operacionais
3. (IA) – Inteligência Artificial
4. (RA) – Redes de Alta Velocidade
5. (TG) – Teoria dos Grafos
6. (CO) – Complexidade de Algoritmos
7. (ST) – Sistemas em Tempo Real Embutidos
8. (LP) – Linguagem de Programação Conceitos e Paradigmas
9. (SD) – Sistemas Distribuídos

Os seguintes professores podem ministrar as disciplinas constantes da Matriz 1:

Professor Disciplinas Professor Disciplinas


Bruno (B) LP – EE Iran (I) LP – SO – RA
Thais (T) SD – SO – RA Regivan (R) CO – IA
Jair (J) ST – SD – EE Anne (A) CO – IA
David (D) ST – LP Fábio (F) RA – EE
Elizabeth (E) TA – TG – CO Marco (M) PO – TG – CO

Matriz 1: Habilitação dos professores


CAPÍTULO 2 
Modelos de aplicação 125

1. Partindo do princípio de que cada professor pode ministrar até duas disciplinas para o período designado,
e de que cada disciplina deverá ocupar um dos horários da distribuição da carga horária semanal (Matriz
2) e ser programada para ser ofertada em dois dias da semana, segundo esse horário, modele o problema de
distribuição de disciplinas através de um grafo.
2. O modelo deverá ser elaborado com os professores relacionados.
3. As disciplinas deverão ser programadas para serem ministradas pelos professores respeitando a disponi-
bilidade deles, dentro dos horários e turnos disponíveis, conforme o quadro “tempo livre para o sétimo
período”.
4. As disciplinas poderão ser programadas para serem ministradas em qualquer turno (manhã (M) ou Tarde
(T)) e em qualquer horário, desde que as duas aulas da disciplina sejam ministradas no mesmo turno e no
mesmo horário.
5. Existe somente uma sala disponível para atender as disciplinas do curso normal. Para as disciplinas do curso
sobre petróleo, se necessário, poderá ser utilizada uma sala extra.
6. As disciplinas do curso normal não podem ser ministradas em dias contínuos.

Dia 1 Dia 2 Dia 3 Dia 4


M T M T M T M T

M,E,J, M,E,J, M,E,J, M,E,J, M,E,J, M,E,J, M,E,J


1o Horário T,F,A
R,I R,I R,I R,I R,I R,I T,F,A

M,E,J M,E,J M,E,J M,E,J


2o Horário Todos Todos Todos Todos
D,B D,B T,F,A T,F,A
T,F,A, T,F,A, T,F,A, T,F,A, T,F,A, T,F,A, R,I R,I
3o Horário
D,B D,B D,B D,B D,B D,B D,B D,B
R,I R,I R,I R,I
4o Horário Todos Todos Todos Todos
D,B D,B D,B D,B
M,E,J M,E,J I,D I,D I,D M,E,J M,E,J M,E,J
5o Horário
I,D I,D T,A T,A T,A T.A F.A A
6o Horário Todos – Todos – Todos – Todos –

Matriz 2: Tempo livre para o sétimo período

A Matriz 3 apresenta uma atribuição parcial válida, ressaltando-se a alocação das disciplinas ao horário e aos
professores. O objetivo do quadro é exemplificar as regras dessa alocação.

Dia 1 Dia 2 Dia 3 Dia 4


M T M T M T M T
PO PO
1o Horário
M M
ST ST
2o Horário
D D
LP LP
3o Horário
I I
EE EE
4o Horário
B B

Matriz 3: Um exemplo de atribuição parcial e válida


126 Grafos

2.07: Labirinto. Encontre uma saída do labirinto da figura abaixo através de um grafo.

Figura do exercício 2.07: labirinto


2.08: Celebridade. Considerando que uma pessoa é uma celebridade em um grupo quando é conhecida por to-
das as pessoas que fazem parte dele, mas não conhece ninguém desse grupo, modele o fenômeno através de
um grafo para um grupo com 6 pessoas e uma celebridade. O que acontece quando dois membros, um de
cada grupo e que possuem sua celebridade, são apresentados?
2.09: Grafos em xadrez. Trace os grafos associados aos movimentos dos seguintes componentes do jogo de xa-
drez: grafo-rainha, grafo-cavalo, grafo-rei, grafo-bispo.
2.10: Grafo de visibilidade. Trace o grafo de visibilidade da figura abaixo. Observe que os pontos A e B estão lo-
calizados em um nível superior ao a das barreiras. Contudo, o ponto A não pode enxergar o ponto K, porque
uma barreira de mesmo nível que a sua locação se coloca entre A e K, a barreira onde B está localizado.

J
E
I
K B
D

H A F G

Grafo do exercício 2.10: visibilidade


2.11: Completando as arestas de G. Sabendo-se que (G) é o grau mínimo de G, um jogo consiste em permitir
aos jogadores acrescentar arestas ligando vértices não adjacentes de G, um grafo com n 5. Cada jogador
deve acrescentar uma aresta na sua jogada. O primeiro jogador obrigado a acrescentar uma aresta que faça
(G)>k um valor inteiro sorteado no início do jogo com k n–2 perde o jogo. Existe uma estratégia de jogo
que garanta a vitória sempre ao primeiro jogador? Dê um exemplo dessa estratégia (se houver) no grafo do
exercício com k = 5.
CAPÍTULO 2 
Modelos de aplicação 127

Grafo do exercício 2.11

2.12: Torres de Hanói bicoloridas. Dado o problema das torres de Hanói com a configuração de cores exibidas
na figura abaixo, exiba o grafo de movimento que organiza os pratos de modo que sejam formadas duas
torres com a mesma cor. Como no problema original, não são permitidos movimentos que empilhem pratos
maiores sobre pratos menores, todavia pode haver empilhamento sobre pratos iguais.

1 2 3

Figura do exercício 2.12

Desafios

2.13: Barras em Queda. Dada a configuração inicial da figura do exercício (1), o desafio consiste em deslocar
horizontalmente as barras da figura de forma a obter a configuração final apresentada na figura do exercício
(2). Na medida em que uma barra ou um conjunto de barras perdem seu apoio em um nível inferior da fi-
gura, essa barra ou conjunto de barras caem pelo efeito da gravidade exatamente na posição em que estavam
antes de a base ser desestabilizada. Uma barra pode ser deslocada para cima desde que exista um espaço livre
imediatamente acima de sua posição e com o tamanho suficiente para receber a barra. Observe que as barras
2 e 4 podem ocupar o comprimento da área de jogo quando colocadas lado a lado. Desenvolva o grafo de
movimentos desse desafio lógico.

3 5
5 4
2 3
4 2
1 1
(1) Configuração inicial (2) Configuração final do jogo
Figura 1 do exercício 2.13: Configuração inicial e final do jogo
128 Grafos

(1) Movimento lateral (2) Outro movimento lateral (3) Quedas dos blocos

(4) Movimento lateral de blocos (5) Queda e ascensão (6) Novo deslocamento horizontal
Figura 2 do exercício 2.13: Movimentos válidos do jogo

2.5 Referências
CDC (2005). Use of social networks to identify persons with undiagnosed HIV infection — Seven US Cities — October
2003–September 2004. MMWR 2005; 54:601–605.
http://www.cdc.gov/hiv/resources/guidelines/snt/overview.htm. Acesso em setembro de 2011.
Jordan, W. C, Tolbert, L. & Smith., R. (1998).Partner notification and focused intervention as a means of identify-
ing HIV-positive patients. Journal of the National Medical Association 90:542–546.
Moretti, F. (2011). Network Theory, Plot Analysis – Hamlet, by Numbers, New Left Review 68, March-April 2011.
http://www.newleftreview.org/?view=2887. Acesso em setembro de 2011.
Polster, B. & Ross, M. (2009). Ringing the changes, +Plus Magazine 53: http://plus.maths.org/content/issue/53.
Acesso em agosto de 2011.
capítulo
130 Grafos

3.1 Conceitos Básicos


O Capítulo 1 definiu uma árvore como um grafo conexo sem ciclos. Trata-se de uma definição correta, contudo
sucinta. Outras propriedades exclusivas das árvores podem ser utilizadas como definição. A mais tradicional está
apresentada abaixo.

Árvore
É um grafo conexo T em que existe um e somente um caminho entre qualquer
par de vértices de T.
Um subgrafo conexo e
Grafo Estrela acíclico de um grafo é
Um grafo G com n vértices é denominado estrela quando G é uma árvore que denominado subárvore.
possui um vértice de grau n–1 e os demais vértices com grau 1.

(S)

As árvores são uma das mais importantes estruturas da Teoria dos Grafos, encontrando aplicações na formação
das estruturas de dados e na solução de grande número de problemas reais. Os modelos vão desde as estruturas
de dados na Ciência da Computação até problemas de comunicação. A Figura 3.1 apresenta exemplos de árvores.

(1) Árvore ponderada (2) Árvore não ponderada (3) Estrela

Figura 3.1 Exemplos de árvores

Algumas Propriedades das Árvores


1. Todo grafo G conexo possui pelo menos uma subárvore que contém todos
os seus vértices.
2. Toda árvore é um grafo planar.
3. Toda árvore finita com n > 1 possui pelo menos dois vértices terminais.

O Teorema 3.1 relaciona propriedades equivalentes de uma árvore. Os Teoremas 3.2 e 3.3 abordam a contagem
das árvores em um grafo G.
CAPÍTULO 3  Árvores 131

Teorema 3.1
As seguintes proposições são equivalentes para um grafo G:

1. G é uma árvore.
2. Existe exatamente um caminho entre cada par de vértices de G.
3. G é conexo e m = n – 1.
4. G é acíclico e m = n – 1.
5. G é acíclico. Caso dois vértices não adjacentes de G sejam conectados por
uma aresta, então o grafo resultante conterá exatamente um ciclo.

Teorema 3.2
Uma demonstração
Em um grafo G o número de subgrafos árvores com n vértices e com grau do Teorema 3.2 pode
especificado k, é igual a: ser encontrada em
Dimakopoulos
(2000).

Teorema 3.3 Uma demonstração da


fórmula de Caley pode ser
(Fórmula de Caley)
encontrada em Shukla &
India
O número de árvores distintas em um grafo completo com n vértices é nn–2. (2009).

A Figura 3.2 apresenta 11 diferentes árvores geradoras do grafo res-


saltado com o número 1. O conceito de árvore geradora será visto
a seguir.
132 Grafos

Figura 3.2 Árvores geradoras de G

Por constituição, uma árvore é um grafo conexo minimal no sentido de seu número de arestas. A remoção de
uma aresta em uma árvore implica a desconexão de pelo menos um vértice do grafo.

Árvore Geradora Como


consequência das
Uma árvore geradora de um grafo G é um subgrafo gerador conexo e acíclico. propriedades de uma árvore,
todo grafo conexo possui
pelo menos uma árvore

A Figura 3.3(2) exemplifica uma árvore geradora do grafo da Figura 3.3(1). A árvore mostrada na Figura
3.3(3) não é geradora, uma vez que o vértice 4 não pertence a ela.
CAPÍTULO 3  Árvores 133

Figura 3.3 Árvores de um grafo G

Floresta
Uma floresta é um conjunto de árvores sem vértices em comum.

Uma floresta geradora é uma floresta que contém todos os vértices de G.

As Figuras 3.4(2) e (3) exemplificam duas floresta do grafo G da Figura 3.4(1). A floresta da Figura 3.4(2) é uma
floresta geradora.

Figura 3.4 Florestas em G

Uma floresta geradora é um tipo de subgrafo que generaliza o conceito de árvore geradora. Na floresta geradora
cada componente conexo é uma árvore e cada vértice do grafo original está em alguma árvore. Uma floresta gera-
dora em G é um subgrafo acíclico e gerador.

Coárvore Geradora – CoT


Uma coárvore
O grafo complementar de uma árvore geradora em relação a um grafo G é de- geradora não é
nominado coárvore geradora. obrigatoriamente
uma árvore!

A Figura 3.5(3) exemplifica uma coárvore geradora do grafo exibido na Figura 3.5(1) em relação à árvore ge-
radora da Figura 3.5(2). Observe que a coárvore geradora não é obrigatoriamente uma árvore, tampouco deve ser
um subgrafo conexo.
134 Grafos

Figura 3.5 Coárvore geradora

Aresta Elo
Considerando um grafo G = (N,M) e T = (N, MT ), uma árvore geradora de G,
uma aresta e M | MT é denominada elo de G em relação a T.

A adição de um elo em uma árvore produz um único ciclo no grafo resultante. A Figura 3.6(2) mostra uma
aresta e selecionada da coárvore geradora do grafo da Figura 3.6(1) e sua inclusão na árvore geradora T com a
formação de um ciclo fundamental do grafo G na Figura 3.6(3).

Figura 3.6 Ciclo fundamental produzido por aresta elo

Teorema 3.4
Um grafo G contém m – n + 1 ciclos fundamentais.
CAPÍTULO 3  Árvores 135

Prova: Sendo m o número total de arestas do grafo, e n–1 o número total de arestas em uma árvore geradora, o
número total de arestas que pertencem ao grafo e não pertencem à árvore é m– (n–1) = m–n+1.
As Figuras 3.7(1) e (2) mostram, respectivamente, um grafo G e uma árvore geradora de G. As Figuras 3.7(3) e
(4) exibem os dois ciclos fundamentais associados à árvore geradora da Figura 3.7(2).

Figura 3.7 Ciclos fundamentais associados à árvore geradora

Grafo Caminho Pn
Um grafo caminho (Pn) é uma árvore com n vértices que possui apenas dois
vértices com grau 1.

A Figura 3.8 exemplifica dois diferentes grafos caminho.

Figura 3.8 Grafos caminho

Distância entre Árvores


A distância entre duas árvores geradoras T1 = (N, M1) e T2 = (N,M2) de um grafo
G = (N,M), d(T1,T2), é dada pelo módulo da diferença entre o conjunto de
arestas de T1 e T2, d(T1, T2) = | (M1– M2) |.

Seja o grafo da Figura 3.9(1) e duas árvores geradoras desse mesmo grafo T1 e T2, exibidas nas Figuras 3.9(2) e 3.9(3).
As distâncias entre T1 e T2 e T2 e T1, tomadas sobre G são calculadas, respectivamente, nas Figuras 3.9(4) e (5).
136 Grafos

(1) Grafo exemplo

(2) Árvore T1 (3) Árvore T2

(4) d(T1,T2) =3 (5) d(T2,T1) =3

Figura 3.9 Cálculo de distâncias entre árvores


CAPÍTULO 3  Árvores 137

3.2 Árvores Geradoras


Árvore Geradora Mínima – AGM TMin A determinação da AGM pode
ser feita em tempo
A árvore geradora mínima (TMin) é a árvore geradora de menor custo, dentre
todas as possíveis em G.
polinomial
O custo de uma árvore geradora T de um grafo ponderado G é dado pelo so-
matório dos custos das arestas de T.
A determinação da AGMa
pode ser feita em tempo
Árvore Geradora Máxima – AGMa TMax
polinomial
Trata-se da árvore geradora de maior custo em G.

A Figura 3.10(2) exibe a árvore geradora mínima e a 3.10(3) mostra a árvore geradora máxima do grafo da
Figura 3.10(1). As árvores determinam importantes problemas de otimização combinatória.

(1) Grafo G (2) Árvore geradora mínima (3) Árvore geradora máxima

Figura 3.10 Árvore geradora mínima e máxima

O problema da k-ésima melhor AGM


p Garey & Johnson (1979) pro-
vam que o problema da k-ési-
Em um grafo G = (N, M ) ponderado em arestas, o problema da k-ésima melhor ma melhor AGM é
árvore geradora mínima consiste em encontrar k árvores geradoras T1,T2,...,Tk
distintas tal que não existam árvores geradoras com pesos menores em G.
NP-Difícil
138 Grafos

Encontrar uma AGGM em


Árvore Geradora de Grau Mínimo – AGGM um grafo sem características
particulares é
É uma árvore geradora desenvolvida em um grafo não ponderado e possuindo
o menor grau máximo possível.
TGMin NP-Difícil

Árvore Geradora Mínima com Mínimo Grau Encontrar uma AGMMG em


um grafo sem características
A AGMMG é a árvore geradora mínima de um grafo ponderado a qual possui particulares é
o menor grau máximo possível.
Min
TAGM NP-Difícil
Árvore Geradora de Grau Restrito – AGM-GR
Decidir se existe uma AGM-GR
Considerando um grafo G e um inteiro positivo k, é uma árvore geradora de G para um dado k é
tal que o máximo grau de seus vértices seja menor ou igual a k. k
TG
NP-Completo

(1) Grafo G (2) AGGM do grafo (1) (3) Grafo G ponderado

(4) AGMMG do grafo (3) (5) Grafo G (6) AGM-GR de (5) com k = 4
CAPÍTULO 3  Árvores 139

Figura 3.11 AGGM / AGMMG / AGM-GR

❂ AGGM/AGMMG e AGM-GR – Trabalhos no Tema

AGGM
Fürer & Raghavachari (1994) apresentam um algoritmo polinomial de solução que encontra uma árvore de máximo
grau igual a O(* + logn), onde * é o grau de alguma árvore ótima para o problema. Krishnan & Raghavachari (2001)
apresentam um algoritmo polinomial de solução O(nlog nlog n) que encontra uma árvore de máximo grau para o caso de
grafos direcionados com o grau máximo igual a O(* + logn).

AGMMG
Fischer (1993) relata um algoritmo sequencial com um grau no máximo b* + logb n em tempo O(n 4+1/log b) para
alguma constante b > 1. Chaudhuri et al. (2005) propõem um algoritmo sequencial quase-polinomial para deter-
minar a árvore geradora mínima de mínimo grau com aproximação para o menor grau em relação ao grau ótimo
de * + O(log n/log n logn). Lavault & Valencia-Pabon (2008) relatam um algoritmo distribuído com um grau no
máximo b* + logb n em tempo O(n 2+1/log b) para alguma constante b > 1 requerendo O(n 3+1/log b) mensagens e
O(n) posições por vértice, onde  é o grau máximo de uma árvore geradora mínima inicial.

AGM-GR
Papadimitriou (1978) demonstrou que o problema de decisão da AGM-GR é NP-Completo. Narula & Ho (1980) apre-
sentam um estudo pioneiro. Algoritmos com as técnicas de combinação de arestas (Savelsbergh & Volgenant, 1985), fluxo
em redes (Fekete et al., 1997), relaxação Lagrangeana (Andrade et al., 2006) e algoritmos genéticos (Zhou & Gen, 1997;
Raidl, 2000) foram apresentados para o problema. Uma abordagem exata é apresentada por Krishnamoorthy et al. (2001).

Dados um grafo G e um conjunto independente de vértices I em G, determinar uma árvore geradora que mini-
mize o grau dos vértices que pertencem a I pode ser feito em tempo polinomial (Lawler, 1976).

O conceito de conjunto independente de vértices é apresentado no Capítulo 5.

❂ Algoritmo Simultâneo para AG Mínima e Máxima

Gabow (1977) relata dois algoritmos polinomiais que determinam, simultaneamente, as árvores geradoras mínima e
máxima.

Árvore Geradora Isomorfa A verificação de que duas árvores


são isomorfas pode ser feita em
Árvore geradora isomorfa é uma árvore que representa, através de diferentes tempo
traçados, uma mesma árvore em G.
TISO polinomial
140 Grafos

As Figuras 3.12(2) e (3) exemplificam duas árvores geradoras isomorfas do grafo da Figura 3.12(1).

(1) Grafo G (2) Árvore geradora em G (3) Árvore geradora isomorfa

Figura 3.12 Árvore geradora isomorfa

Árvore Geradora MinMax_MinSum M 3S A determinação da árvore


geradora MinMax_MinSum
Dado um grafo bi-ponderado em arestas, onde Pi é o peso e Ci o custo da aresta
pode ser realizada em tempo
ui  M, a árvore geradora M 3S em G é uma árvore geradora Tk que minimiza a
seguinte função objetivo Z(Tk):
polinomial

representa o valor da árvore geradora Tk segundo os custos Ci e

representa o valor da aresta máxima segundo os pesos em Tk


Grafo G do exemplo

As Figuras 3.13 (1) e (2) exibem os custos e os pesos associados às arestas do grafo G do exemplo. As Figuras
3.13(4) e (5) exibem os custos associados à árvore geradora da Figura 3.13(3). Observe que o critério MinMax_
MinSum é a soma dos custos mais o maior peso das arestas da árvore geradora, como mostra a Figura 3.13(6). No
exemplo, o valor MinMax_MinSum é 10.
CAPÍTULO 3  Árvores 141

(1) Custos associados às arestas do grafo (2) Pesos associados às arestas do Grafo


(3) Árvore geradora em G
G G

(4) Custo das arestas para (6) Avaliação


(5) Pesos das arestas para a árvore em G
a árvore em G MinMax_MinSum = 10

Figura 3.13 Exemplo de árvore geradora com critério MinMax_MinSum

❂ M3S – Dicas de Trabalho sobre o Tema

O modelo (Duin & Volgenant, 1991) possui aplicações práticas que abrangem:

✓ roteamento de meios terrestres na defesa de costa (Moreira Neto, 1995);


✓ projeto de redes de comunicações (Punnen & Nair, 1996);
✓ roteamento de veículos com função multiobjetivo (pedágio, risco etc.).

Árvore Ger. com Número Máximo de Folhas A aproximação da solução


AGNMF pertence à classe
Considerando um grafo G, Tf é uma árvore geradora de G tal que possui o
maior número possível de folhas.
AGNMF Apx-Completo

Árvore Ger. com no Máximo k Folhas


A AGkF é uma variante do problema AGNMF, onde o objetivo é localizar em A determinação de uma AGkF é
um grafo G uma árvore geradora com no máximo k folhas
AGkF NP-Difícil

A Figura 3.14 exemplifica duas árvores geradoras com número máximo de folhas restrito a 3 (Figura 3.14(2))
e a 7 (Figura 3.14(3)). Galbiati et al. (1994) demonstram que a aproximação da solução da árvore geradora com
número máximo de folhas pertence à classe Apx-Completo.
142 Grafos

(1) Grafo G (2) Árvore com 3 folhas (3) Árvore com 7 folhas

Figura 3.14 Árvore geradora mínima com número máximo de folhas

❂ AGNMF/AGkF – Dicas de Trabalho sobre o Tema


Para a AGNMF, os trabalhos de Kleitman & West (1991) e Lu & Ravi (1992) apresentam algoritmos aproximativos. Fujie
(2003) propõe um algoritmo exato para o problema. Singh (2009) relata um algoritmo em uma colônia de abelhas.

Para a AGkF, Rahman & Kaykobad (2005) demonstram que AGkF é NP-Difícil. Li & Toulouse (2006) abordam o caso
em grafos bipartidos.

Árvore Ger. de Mínimo Diâmetro – AGMD A determinação da AGMD é

A árvore geradora de menor diâmetro T dmin é uma árvore geradora tal que possui
o menor diâmetro dentre todas as árvores geradoras de G. Min
NP-Difícil
Td

Árvore Ger. Mínimo Diâmetro Lim. em Grau A determinação da AGMDLG é


A AGMDLG é uma variante do problema AGMD com a restrição adicional de
ser também limitada em grau.
AGMDLG
NP-Difícil

Árvore Ger. Mínima Limitada em Diâmetro A determinação da AGM limitada


em diâmetro é
A árvore geradora mínima limitada em diâmetro é uma árvore geradora tal
que, possuindo um diâmetro menor ou igual a d, possui o menor custo em G.
T dL NP-Difícil

(1) Grafo G (2) Árvore geradora mínimo diâmetro T dMin, diâmetro = 4

Figura 3.15 Árvore de mínimo diâmetro


CAPÍTULO 3  Árvores 143

A Figura 3.15(2) exemplifica uma árvore de mínimo diâmetro do grafo da Figura 3.15(1). Uma árvore de mí-
nimo diâmetro pode ser definida de forma equivalente em função do menor caminho entre cada par de vértices
da árvore.

(1) Grafo G (2) AGM do grafo (3) (3) AGMD do grafo (3)

(4) Grafo G (5) AGMD e B = 4 (6) AGMD e B = 3

(7) Grafo G (8) T Ld T = 30 d=2 (9) T Ld T = 10 d=6

Figura 3.16 Árvore geradora mínima limitada em diâmetro

A Figura 3.16(1) mostra um grafo exemplo. Por comparação, a árvore ge-


O caso da determinação da radora mínima de G é exibida na Figura 3.16(2), ao lado da árvore gera-
árvore geradora dora de mínimo diâmetro na Figura 3.16(3). Na Figura 3.16(5) é exibida a
de mínimo diâmetro em árvore de mínimo diâmetro do grafo da Figura 3.16(4). O maior grau da
grafo com arestas com pesos árvore da Figura 3.16 é 4. A Figura 3.16(5) é equivalente a uma árvore de
idênticos é mínimo diâmetro, caso o grau máximo admitido na árvore (B) seja 4. A
Figura 3.16(6) apresenta a árvore geradora restrita em grau 3 (B = 3), resul-
polinomial tando em um diâmetro igual a 4, o qual é maior que o diâmetro da árvore
da Figura 3.16(5). As Figuras 3.16(8) e (9) exibem árvores geradoras de
diâmetro limitado com d ≤ 6.
144 Grafos

❂ AGMD/AGMDLG/AGMLD – Trabalhos sobre o Tema

A AGMD é NP-Difícil quando G possui ciclos negativos (Camerini et al., 1980). Para o caso das arestas positivas, o
problema pode ser solucionável em O(mn + n2log n) operações, conforme demonstram Hassin & Tamir (1995). Biu et
al. (2004) apresentam um algoritmo distribuído O(n), com complexidade O(nm(logn + logW)) de comunicação entre
processadores, onde W é o maior peso das arestas de G.

O problema de decisão da AGMDLG é NP-Completo (Könemann et al., 2005). Considerando uma árvore com n vértices
e B o limite dos graus, esses autores propõem um algoritmo aproximativo O(logB n).

Alfandari & Paschos (1999) provam que o problema da AGMLD é NP-Difícil. Kortsarz & Peleg (1999) demonstram
que a menos que P=NP, não é possível garantir a determinação de solução cujo valor esteja a menos de log(n) do óti-
mo. Kortsarz & Peleg (1997;1999) descrevem um algoritmo que encontra solução para o problema que nunca excede
o ótimo de O(d.log(n)). Abdalla et al. (2000) desenvolvem um algoritmo guloso baseado no algoritmo de Prim para a
solução aproximativa do problema. Raidl & Julstrom (2003) apresentam um algoritmo evolucionário, onde os opera-
dores são baseados em duas heurísticas sugeridas no trabalho. Posteriormente, Julstrom (2004) propôs dois algoritmos
evolucionários. Singh & Gupta (2007) sugerem melhorias nos algoritmos propostos por Raidl & Julstrom (2003).

Árvore (n,k) Banana


Uma árvore (n,k) banana é um grafo obtido pela conexão de uma folha de cada
uma das n cópias de um grafo k-estrela com um vértice raiz que é distinto de
todas as estrelas.

A figura ao lado do conceito exemplifica a união de dois grafos 5-estrela (n=2, k=5), formando uma árvore (2,5)
banana.

❂ Árvore Banana – Dicas de Trabalho sobre o Tema

Bhat-Nayak & Deshmukh (1996), Chen et al. (1997) e Sethuraman & Jesintha (2009) estudam as propriedades das árvores
banana.

Árvore Geradora Duplamente Limitada A determinação da AGM duplamen-


te limitada é
A árvore geradora duplamente limitada é uma árvore geradora com um custo
menor ou igual a k e diâmetro menor ou igual a d.
Tdk NP-Difícil
CAPÍTULO 3  Árvores 145

As Figuras 3.17(2) e (3) exemplificam árvores duplamente limitadas do grafo da Figura 3.17(1).

(1) Grafo G (2) T 723 (3) T 645

Figura 3.17 Árvore duplamente limitada

❂ Árvore Duplamente Limitada – Dicas de Trabalhos

Variações desse problema foram estudadas por Ho et al. (1991), que demonstram que o problema de decisão é
NP-completo.

Árvore Geradora Compacta – AGC


A determinação da AGC é
A árvore geradora compacta é uma árvore geradora tal que possui a menor
soma de todos os caminhos dij entre todos os seus pares de vértices.
NP-Difícil
TC
(Garey & Johnson, 1979).

Árvore Geradora k Compacta


A determinação da AG k compacta
A árvore geradora k compacta possui a soma de todos os caminhos entre todos é
os seus pares de vértices menor ou igual a k.

T [k] NP-Difícil
C

A Figura 3.18(1) exibe um grafo e a Figura 3.18(2) exibe sua matriz de distâncias associadas. Observe que a
soma de todos os menores caminhos da matriz da Figura (2) representa um limite para o menor valor desses ca-
minhos em qualquer árvore geradora de G. A Figura 3.18(3) exibe a árvore compacta do grafo da Figura 3.18(1).
146 Grafos

A matriz de distância da árvo-


re compacta (Figura 3.18(4))
apresenta apenas dois valores
maiores que os constantes na
matriz de distância de G com
um somatório de 14 unidades
superior à soma dos menores
caminhos existentes no grafo.

(1) Grafo G (2) Matriz de distância de G

A título de exemplo, desen-


volve-se a matriz de distância
da árvore geradora mínima. A
soma de todos os menores ca-
minhos da AGM (baseados na
Figura 3.18(6)) é 23 unidades
superior em à soma observada
em TC.

(3) TC (4) Matriz de distância de TC

Para k = 276, a soma de todos


os caminhos da matriz da Fi-
gura 2.18(6), a árvore geradora
mínima será uma árvore gera-
dora k compacta. Observe que
a árvore compacta é sempre k
compacta para qualquer k que
conduza a uma árvore viável.

(5) Árvore geradora mínima (6) Matriz de distância de AGM

Figura 3.18 Árvore geradora compacta e k compacta

A determinação da AGM
Árvore Geradora Mínima k-hop k-hop k-hop é

Árvore geradora mínima k-hop é aquela de menor custo total, tal que, definindo-
se uma raiz r, o caminho mais longo entre r e uma folha tenha no máximo k
NP-Difícil
arestas.

Também denominada árvore geradora mínima com caminhos de


comprimento limitado (Oh et al., 1997).
CAPÍTULO 3  Árvores 147

A Figura 3.19(2) mostra a árvore geradora mínima 3-hop do grafo da Figura 3.19(1). O vértice raiz é destacado
com a letra “r”.

(1) Grafo G (2) Árvore k-hop do grafo da Figura (1)

Figura 3.19 Árvore geradora k-hop

❂ Árvore k-hop – Dicas de Trabalho sobre o Tema

Hassin & Levin (2003) desenvolvem um algoritmo O(m3n3) para a solução da árvore k-hop, para o caso de grafos
2-conexos e com custos inteiros e positivos. Althaus et al. (2005) apresentam um algoritmo O(logn) aproximado para
o problema com o tempo O(kn5).

A determinação da AGM capacitada é


Árvore Geradora Mínima Capacitada Tcap
Na árvore geradora mínima capacitada, uma central serve a um conjunto
NP-Difícil
de n vértices de determinada rede R = (N, M), onde N representa o con-
junto de vértices, N = {0,1,...,n}, e M representa o conjunto de arestas, M =
{1,...,m}. Os vértices e arestas de R são ponderados. A cada vértice i  N é Se bi = 1 para todo vértice i,
atribuído um peso bi não negativo, sendo que a central representada pelo i = 1,...,n, então o problema se reduz
vértice 0, também chamado de raiz, possui b0 = 0. Um custo cij é atribuído a encontrar a árvore geradora
a cada aresta i-j  M. Dada uma restrição de capacidade Q, o problema mínima tal que as subárvores
consiste em encontrar a árvore geradora mínima de R tal que a soma dos da raiz possuam no máximo
pesos dos vértices em cada subárvore da raiz não exceda a capacidade Q. Q vértices.

O conceito é ilustrado na Figura 3.20 para o grafo da Figura 3.16(7), cujo vértice central, amarelo, é escolhido
como raiz e bi = 1 para todo i  N.

(1) Tcap = 30, Q = 1 (2) Tcap = 18, Q = 2 (3)Tcap = 14, Q = 3

Figura 3.20 Árvores mínimas capacitadas


148 Grafos

❂ AGM Capacitada – Dicas de Trabalho sobre o Tema

Papadimitriou (1978) demonstrou que o problema de decisão é NP-Completo. Dentre as meta-heurísticas aplicadas ao
problema, encontram-se Simulated Annealing e Busca Tabu (Amberg et al., 1996; Patterson et al., 1999) e Colônia de
Formigas (Reimann & Laumanns, 2006). Algoritmos exatos são apresentados nos trabalhos de Fukasawa et al. (2003) e
Gouveia & Martins (2005).

AG de Cruzamento Mínimo – AGCM A determinação da


Dados um grafo G = (N,M) e uma família de cortes C = {C1,C2,...,Cq}, a árvore AGCM é
de cruzamento mínimo é uma árvore geradora T = (N,MT ) que minimiza o
cruzamento máximo de qualquer corte, onde o cruzamento de um corte Ci é NP-Difícil
dado por |MT  Ci|.

Problema proposto e formalizado


por Bilò et al. (2004), que provam
ser NP-Difícil.

Figura 3.21 Grafo exemplo para a AG de cruzamento mínimo

Bilò et al. (2004) apresentam um algoritmo guloso que produz uma aproximação O(r logn) para o número de
cruzamentos, onde r é o número de arestas que participam de algum corte. Os autores também apresentam uma
algoritmo aleatorizado para grafos completos, que fornece um limite para o número de cruzamentos em O((logm
+ logn)(otm logn)), onde otm denota o número mínimo de cruzamentos para qualquer árvore.
A Figura 3.21 apresenta uma família de cortes sobre um grafo G. As Figuras 3.22(1) e (2) mostram árvores ge-
radoras para o grafo da Figura 3.21. Na Figura 3.22(1) o cruzamento do corte C2 é igual a 4, que dá o valor máximo
de cruzamento para a árvore da figura. O cruzamento de cada corte com a árvore da Figura 3.22(2) é igual a 1.
Portanto, a árvore da Figura 3.22(2) é a árvore de cruzamento mínimo.

(1) Árvore não ótima (2) Árvore ótima


CAPÍTULO 3  Árvores 149

Figura 3.22 Árvore geradora de cruzamento mínimo

NP-Difícil

AG Mínima Bicolorida – AGMB


O problema foi proposto por
Sendo um conjunto S de pontos no plano constituído por pontos de duas cores
Grantson (2005). Borgelt et
R e B, a árvore geradora mínima bicolorida é aquela desenvolvida de forma a
al. (2009) provam ser
unir todos os pontos de S por arestas, ligando sempre vértices dos conjuntos R
NP-Difícil e propõem um
e B sem que duas arestas jamais se cruzem.
algoritmo O(nm2) de solução
para um caso especial.

A Figura 3.23(2) exibe uma árvore geradora bicolorida para o grafo ponderado da Figura 3.23(1).

(1) Grafo G (2) Árvore geradora bicolorida

Figura 3.23 Árvore geradora bicolorida

Árvore Taturana – Caterpillar Tree


É uma árvore na qual existe um caminho que contém todo nó de grau 2 ou O problema de determinar se um grafo
mais, ou ainda, a árvore em que todos os vértices estão à distância máxima de possui uma árvore geradora taturana é
uma aresta de um caminho principal (Harary & Schwenk, 1973).
NP-Completo
Árvore Geradora Mínima Taturana
Tan & Zang (2007).
É a árvore
á taturana
t t geradora
d de
d menor custo
t de f G.
d um grafo

O caminho principal ao qual se refere a definição é denominado espinha ou coluna. A árvore taturana
possui aplicações na modelagem de moléculas, especialmente hidrocarbonetos (El Basil, 1990). No Capítulo
5 será exibida uma aplicação dessa árvore, na difusão de informações em redes. A Figura 3.24 exemplifica as
árvores taturana.
150 Grafos

(1) Árvore taturana – 1o exemplo (2) Árvore taturana – 2o exemplo

Figura 3.24 Árvores taturanas

Teorema 3.5
Denomina-se árvore lagosta
O número de árvores taturana em um grafo não rotulado de n vértices é: (lobster tree) a árvore que
pode ser reduzida a uma árvore
taturana pela eliminação de
todas as suas folhas.
Harary & Schwenk (1973)

Observe que diversas variantes de árvores geradoras são encontradas na literatura. O Capítulo 8 abordará al-
guns desses modelos dentro do tema de árvores de Steiner.

3.3 Árvores Geradoras Mínimas


Um dos mais importantes modelos, tanto em virtude de aplicações no mundo real como em solução de outros
problemas de grafos, é a árvore geradora mínima. A Tabela 3.1 resume os principais trabalhos publicados. A im-
CAPÍTULO 3  Árvores 151

portância do tema pode ser facilmente comprovada pelo exame dos trabalhos de pesquisa, visando ao aperfeiçoa-
mento dos algoritmos de solução para o modelo.

Tabela 3.1 Evolução dos Algoritmos de Solução da Árvore Geradora Mínima – 1a Parte

Trabalho Técnica Utilizada Complexidade

Boru˚ vka (1926) União de conjuntos disjuntos O(mlog n)

União de conjuntos disjuntos e heap-


Kruskal (1956) O(mlog n)
sort

Prim (1957) Seleção de arestas O(n2)

Algoritmo de Prim implementado


Johnson (1975) O(nd logd n + mlogd n)
com d-Heap

Algoritmo de Boru˚ vka implementado


Yao (1975) O(mlog log n)
utilizando heaps e seleção

Algoritmo de Boru˚ vka com fila du-


Cheriton & Tarjan (1976) plamente ligada, heap e união de con- O(mlog log n)
juntos disjuntos

Heap de Fibonacci com pacotes e


Gabow et al. (1986) O(mlog (m, n)) (a)
união de conjuntos disjuntos

Algoritmo de Prim implementado


Fredman & Tarjan (1987) O(n log n + m)
com heap de Fibonacci

Algoritmo de Boru˚ vka implementado


Fredman & Tarjan (1987) O(m (m, n))
com heap de Fibonacci

Karger (1993) Aleatorização O(n log n + m)

Aleatorização, recursão e verificação


Karger et al. (1995) O(m) (b)
de tempo linear

Heap com particularidades de movi-


Chazelle (1997) O(m(m,n) log(m,n)) (c)
mentação (soft heap)

Divisão do problema em subproble-


Pettie (1999) mas e procedimentos de retração e O(m(m,n))
extensão

Aperfeiçoamento da técnica em soft


Chazelle (2000a) O(m(m,n)log(m,n) )
heap

Divisão do problema em subproble-


Pettie (1999) mas e procedimentos de retração e O(m(m,n))
extensão

Aperfeiçoamento da técnica em soft


Chazelle (2000a) O(m(m,n)log(m,n) )
heap

Aperfeiçoamento da técnica em soft


Chazelle (2000b) O(m(m, n))
heap
152 Grafos

Aperfeiçoamento do trabalho Pettie


Pettie & Ramachandran (2002) Entre Ω(m) e O(m(m,n)) (d)
(1999)

Pettie & Ramachandran (2008) Aleatorização O(m) (b)

Observações constando da 2a parte

Tabela 3.2 Evolução dos Algoritmos de Solução da Árvore Geradora Mínima

(a) (m, n) = min [i |log(l) n  m/n} e log(0) n = n;

(b) Tempo de processamento esperado;

(c) (m, n) é a inversa da função de Ackermann, (m, n) = min{i  1: A(i, m/n)  log2 n}, onde:
b+1 se a = 0
A(a, b) = A(a – 1,1) se a > 0 e b = 0
A(a – 1, A(a, b – 1) se a > 0 e b > 0

(d) Complexidade assintótica

Na solução do problema, a invenção da heap de Fibonacci permitiu um significativo avanço no desempenho


computacional, sendo empregada nos trabalhos de Gabow et al. (1986) e Fredman & Tarjan (1987). Considerando
que é possível formular o problema em termos da determinação de um conjunto independente de máximo peso
em um matróide ponderado (Schrijver, 2002), existe a expectativa de que seja possível solucioná-lo de forma efi-
ciente através de algoritmos gulosos. Nesse sentido, os três primeiros algoritmos da Tabela 3.1 se destacam por
terem sido os primeiros apresentados para o problema e servirem de base para outros. Os algoritmos citados na
Tabela 3.1 após Chazelle (1997) trabalham com uma máquina de ponteiros na linha do trabalho de Tarjan (1979).
Nesses algoritmos, o peso das arestas está sujeito exclusivamente a comparações binárias. Se, além disso, o acesso é
realizado em uma cadeia perfeita de bytes aleatórios, Karger et al. (1995) demonstram que a AGM pode ser compu-
tada com grande probabilidade em tempo linear. Uma revisão completa do problema da árvore geradora mínima
é apresentada nos trabalhos de Bazlamaçci & Hindi (2001) e Mareš (2008).

Algoritmo de Prim

O algoritmo foi proposto por Robert C. Prim (1957). Na verdade, o algoritmo também foi proposto anteriormente
por Jarník (1930), em checo. A estratégia do algoritmo é incluir, de forma gulosa, um a um, os vértices da árvore.
Considerando os conjuntos TMin, T, e V, onde TMin  M, T  N, V  N, o algoritmo de Prim pode ser descrito como
proposto no quadro que se segue.
CAPÍTULO 3  Árvores 153

A Prim
Ler G = (N,M) e D = [dij ] a matriz de pesos de G
Escolha qualquer vértice i  N
T{i}
V  N \{ i }
Tmin 
Enquanto T ≠ N Faça
Encontrar a aresta (j, k)  M tal que j  T, k  V e djk é mínimo
TT{k}
V V \ { k }
TMin  TMin  (j,k)
Fim_Enquanto
Escrever TMin {o conjunto das arestas da árvore geradora mínima}

O algoritmo parte de qualquer vértice de G. A cada passo, acrescenta a menor aresta incidente no conjunto de
vértices que já foi selecionado e que possui uma extremidade em vértices fora desse conjunto.
Complexidade Prim
Utilizando-se a matriz de adjacência e uma busca linear no conjunto de arestas, a versão apresen-
tada do algoritmo de Prim é O(n 3), uma vez que o comando de encontrar a menor aresta (j,k) 
M analisa até n-1 arestas na primeira iteração, 2(n-2) arestas na segunda iteração, 3(n-3) arestas
na terceira iteração e daí por diante. O comando é repetido n-1 vezes. Portanto, no final tem-se
complexidade O(n3). Utilizando uma heap binária, este algoritmo pode ser implementado em
O(mlogn) (Jonhson, 1975). Finalmente, com a utilização de uma heap de Fibonacci, a complexi-
dade pode ser reduzida para O(nlogn +m) (Fredman & Tarjan, 1987).

O(nlogn+m)

A Figura 3.25 exemplifica o funcionamento do algoritmo de Prim para a solução do grafo marcado com o passo 1.
O passo 6 da figura exibe a árvore final. Observe que a cada passo do algoritmo um novo vértice é acrescentado à
árvore em formação através da aresta mais barata incidente no conjunto de vértices já examinados. Por exemplo,
no passo 3 as arestas examinadas são (2,4); (2,5); (3,4) e (3,5). Na Figura 3.25 o conjunto já examinado é represen-
tado pela nuvem pontilhada e azul.
154 Grafos

Figura 3.25 Evolução do algoritmo Prim

Algoritmo Prim Colorido

O algoritmo de Prim pode ser tornado mais eficiente com um controle das arestas que são examinadas. Essa
versão do algoritmo Prim é denominada Prim Colorido. O quadro da página seguinte resume os passos do
algoritmo.
De forma semelhante ao Prim clássico, o Prim colorido escolhe aleatoriamente o vértice inicial da árvore gera-
dora. No exemplo das Figuras 3.26(a) e (b), o vértice 1 é o selecionado.
CAPÍTULO 3  Árvores 155

A Prim Colorido
Ler G = (N,M) e D = [dij ] a matriz de pesos de G
Escolha qualquer vértice j N
i0
Definir T = (NT ,MT); NT  {j }; MT 
Colorir com verde as arestas incidentes ao vértice j
Enquanto i < n-1 Faça
Selecionar a aresta verde (j,k), j  NT, tal que djk é mínima e colori-la de azul
MT  MT  (j,k); NT  NT  {k}
Para cada aresta (k,z), z  NT Fazer
Se não existir aresta verde incidente em z, colorir (k,z) com verde
Senão
Se existe aresta verde (w,z) tal que dwz > dkz colorir (w,z) com vermelho
e (k,z) com verde
Fim_Para
i i+1
Fim_Enquanto
Escrever Ti {a árvore geradora mínima}

As Figuras 3.26, 1a parte, e 3.26, 2a parte, apresentam o desenvolvimento do algoritmo Prim colorido para o
grafo da Figura 3.26(a)(1). Os detalhes de cada iteração são descritos abaixo da figura.

Complexidade Prim Colorido


O algoritmo Prim colorido pode ser implementado em O(n 2).

O(n2)
156 Grafos

(1) Grafo G exemplo para a aplicação do algoritmo Prim colorido

(2) Vértice 1 examinado. (3) A menor aresta verde é colorida de azul e inserida na
Arestas (1,2) e (1,3) são coloridas de verde solução

(4) Vértice 2 escolhido para ser examinado


(5) z=3 aresta (1,3) colorida de vermelho
z=4 aresta (2,4) colorida de verde
z=3 aresta (2,3) colorida de azul
z=5 aresta (2,5) colorida de verde

(6) Vértice 3 escolhido para ser examinado (7) Dentre as arestas verdes alguma menor,
z=5 aresta (3,5) colorida de verde (3,5) por exemplo, é colorida de azul
z=5 aresta (2,5) colorida de vermelho (e incluída na solução)

Figura 3.26 Desenvolvimento do algoritmo Prim colorido – 1a parte


CAPÍTULO 3  Árvores 157

(8) Vértice 5 escolhido é para ser examinado (9) z = 4 aresta (5,4) colorida de verde
z = 6 aresta (5,6) colorida de verde z = 4 aresta (2,4) colorida de vermelho

(10) Dentre as arestas verdes, a menor (5,4) (11) Vértice 4 é escolhido para exame
é colorida de azul e incluída na solução z = 6 aresta (4,6) colorida de vermelho
Aresta (5,6) colorida de azul i = n–1 e Fim
Figura 3.26 Desenvolvimento do algoritmo Prim colorido – 2a parte

A Figura 3.26(11) ressalta a árvore geradora mínima obtida pelo algoritmo em azul.

Algoritmo de Kruskal

O algoritmo foi proposto por Joseph B. Kruskal (1956). O raciocínio de Kruskal está voltado para a formação da
árvore através de inclusões de arestas, não de vértices, como em Prim.

A Kruskal
Ler G=(N,M) D=[dij ] a matriz de pesos de G
Ordene as arestas em ordem não crescente de pesos dij no vetor
H = [ hi ], i = 1,2,...,m
T  h1
i2
Enquanto |T | < n Faça
Se T  hi é um grafo acíclico então
T  T  hi
ii+1
Fim_Enquanto
Escrever T {arestas da árvore geradora mínima}

Dessa forma, a “árvore” que se forma é, de fato, uma floresta. H representa o vetor das arestas ordenadas, e hj um
elemento de H. T é a árvore em formação. As Figuras 3.27 1a e 2a partes exemplificam o funcionamento do algorit-
mo de Kruskal através das primeiras inclusões de arestas. Na Figura 3.27(7) a inclusão da aresta (2,6) é recusada,
porque leva à formação de um ciclo em T. A próxima aresta em H (6,7) é então examinada e incluída na Figura
3.27(8). A próxima etapa do algoritmo do algoritmo de Kruskal incluiria a aresta (3,1), concluindo o procedimento.
158 Grafos

(1) Grafo G exemplo para o algoritmo Kruskal (2) Ordenação das arestas de G em H

(3) Inserção da primeira aresta em T (4) Inserção da segunda aresta em T

(5) Inserção da terceira aresta em T (6) Inserção da quarta aresta em T

Figura 3.27 Desenvolvimento do algoritmo de Kruskal – 1a parte

(7) Tentativa de inserção da quinta aresta em T (8) Inserção da quinta aresta em T

Figura 3.27 Desenvolvimento do algoritmo de Kruskal – 2a parte


CAPÍTULO 3  Árvores 159

Complexidade Kruskal
A ordenação das arestas pode ser feita em O(mlogm) e domina a complexidade do algoritmo de
Kruskal, uma vez que a escolha das arestas será realizada O(n) vezes, e a verificação da formação
de um ciclo pelo acréscimo de uma aresta em um grafo acíclico é O(n). Esse procedimento, sem
propriedades particulares para arestas, é, portanto, O(mlogm).

O(mlogm)

Visando responder à questão anterior, a Figura 3.28 confronta as árvores obtidas pelos algoritmos, demons-
trando que elas podem ser diferentes.

(1) Prim – iniciando pelo vértice 1 (2) Kruskal – com a sequência


e com a sequência (1-3),(1-2), (2-5), (5-8), (5-6), (6-7), (6-9), (1-3), (6-7), (5-8), (5-6), (6-9), (9-10), (4-6), (2-5), (1-2)
(7-10), (7,4)

Figura 3.28 A questão Prim x Kruskal


160 Grafos

Algoritmo de Borůvka

O algoritmo foi proposto por Otakar Borůvka (1926). Esse algoritmo abre uma terceira linha de raciocínio para
a decisão gulosa na formação de uma árvore geradora mínima. O algoritmo desenvolve, simultaneamente, uma
floresta minimal no grafo G. Não examina nem vértices nem arestas de forma independente. Chamando de Tj uma
subárvore de G, e de Fi uma floresta em G, podemos formalizar o algoritmo como dado a seguir:

A Bor ůvka
Ler G=(N,M) e D=[dij ] a matriz de pesos de G
F0 é uma floresta inicial com n subárvores Tj , j = 1,.., n de G (todos os vértices isolados)
i0
Enquanto Fi não for uma árvore Faça
Para cada Tj  Fi. Determine a aresta (x,y) tal que d xy  é mínimo e x Tj e
y  Tj

Faça Fi + 1  Fi   (x, y)


[ ]
ii+1
Fim_Enquanto
Escrever Fi { arestas da árvore geradora mínima}

A Figura 3.29 exemplifica o funcionamento do algoritmo. Como cada árvore da floresta inclui a menor aresta
incidente na solução em cada iteração, na primeira iteração F1 inclui a aresta (1-3); F2 inclui a aresta (2-5); F3
inclui a aresta (1-3) – a mesma incluída por F2; F4 inclui a aresta (4-7); F5 inclui a aresta (5-8); F6 inclui a aresta
(6-7); F7 inclui a aresta (6-7) – a mesma incluída por F6; F8 inclui a aresta (8-9); F19inclui a aresta (8-9) – a mesma
incluída por F8 e, finalmente, F10 inclui a aresta (7-10). As 10 arborescências então são reduzidas a três, como
mostra a Figura 3.29(3). Na segunda iteração são incluídas as arestas (3-4) e (9-10), concluindo-se a execução
do algoritmo pelo fato de as arborescências estarem agora reunidas em uma única árvore, verificando-se a con-
dição de parada.
Infelizmente, o algoritmo de Borůvka pode falhar no caso da existência de arestas de mesmo valor em G. Esse
caso é exemplificado na Figura 3.30. A Figura 3.30(2) mostra a situação em que a árvore F2 inclui a aresta (9-10) e
a F3 inclui a (5-6) formando um ciclo. O algoritmo, da forma descrita acima, só funciona corretamente se as arestas
de G forem distintas. Para evitar que ocorram inclusões indevidas por ocasião das uniões das subárvores, deve-se
ordenar lexicograficamente as arestas de G.
CAPÍTULO 3  Árvores 161

(1) Grafo exemplo para o


° (2) Inicialização – formação da floresta
algoritmo de Boruvka

(3) Primeira iteração (4) Segunda iteração – formação da árvore

Figura 3.29 Execução do algoritmo de Borůvka


162 Grafos

(1) Grafo G (2) Possibilidade de formação de ciclos

Figura 3.30 Falha na execução do algoritmo de Borůvka

Complexidade Bor ůvka


Nesse caso, a complexidade do procedimento de ordenação será O(mlogn) em cada iteração do
comando, enquanto o número de árvores da floresta diminui em fator 2. Portanto, são executadas
log2n iterações do laço mais externo. Em cada iteração são examinadas O(m) arestas. Portanto, o
algoritmo, sem estruturas de dados especiais, pode ser implementado emm O(mlogn)
g ).

O(mlogn)

3.4 Exemplos de Aplicação

►Exemplo 1: Árvore Binária

A árvore binária é uma aplicação em estruturas de dados.

Árvore Binária
Em uma árvore binária
Uma árvore binária é um grafo vazio ou possui um vértice especial r chamado estendida, todos os vértices
raiz, e os demais vértices da árvore são subdivididos em dois subconjuntos internos são pais de dois filhos.
disjuntos: as subárvores esquerda e direita de r, as quais são também árvores
CAPÍTULO 3  Árvores 163

A Figura 3.31(1) ressalta, em azul, o vértice raiz da árvore binária. Os demais vértices da árvore são subdivididos
em dois subconjuntos disjuntos: as subárvores esquerda e direita de r, as quais são também árvores binárias. Con-
siderando que r está no primeiro nível da árvore, o nível de um nó v é dado pelo número de nós no caminho entre
r e v. Uma árvore binária é cheia quando todos os nós que possuem uma subárvore vazia estão no mesmo nível,
como ilustrado na Figura 3.31(2). A altura h da árvore é dada pelo máximo nível de um nó v. Considerando f(h)
a função que expressa o número de vértices de uma árvore binária cheia, o número máximo dos vértices de uma
h

árvore binária cheia de altura h é f(h) = 1+2+4+...+2h = 2 =2


i=0
i h+1
–1. Uma árvore binária é dita estendida se forem
adicionados n+1 vértices especiais, ditos vértices estendidos, um para cada subárvore vazia da árvore original,
onde n é o número de vértices da árvore não estendida. A Figura 3.31(3) representa nos quadrados os vértices
estendidos.

(1) Árvore binária (2) Árvore binária cheia (3) Árvore binária estendida

Figura 3.31 Árvores binárias

O número de vértices em uma árvore binária cheia é 2h+1 −1, onde h é a altura da árvore.

►Exemplo 2: Otimização de Distribuição de Sinal em Redes

O problema de distribuir um sinal, por exemplo de TV sob demanda, em uma rede computacional admite vários ní-
veis de decisão. Via de regra, o sinal é gerado em um ponto da rede, transita codificado até pontos de decodificação e,
finalmente, é distribuído aos usuários. O serviço de decodificação tem um custo diferente em cada ponto de decodi-
ficação, em virtude das características de demanda e operação nesses pontos. Uma rede computacional possibilita vá-
rios esquemas de distribuição. A Figura 3.32 exibe os símbolos utilizados para representar os três principais tipos de
componentes de uma rede de distribuição de sinais: vértice de geração, vértices de distribuição e vértices de consumo.

Geração

Decodificação

Consumo
(1) Simbologia (2) Conexão individual (3) Multicamada (4) Misto
164 Grafos

Figura 3.32 Configurações de distribuição


A Figura 3.33(1) apresenta um exemplo de rede de distribuição de sinal onde os valores sublinhados junto dos
vértices representam os custos do serviço de decodificação associados. Os valores nas arestas na Figura 3.33(2)
modelam os custos de transição do sinal pela aresta. Vértices de decodificação podem operar como vértices de
distribuição. Nesse caso, não existirá cobrança adicional de serviço.
Observe que, na Figura 3.33(3), a solução adotada segue o formato do sistema de conexão individual. Na solu-
ção mostrada na Figura 3.33(4), o formato é o sistema misto, onde um mesmo decodificador pode atender a mais
de um ponto de consumo – no caso atende a três. As configurações têm seu custo calculado através do custo do ca-
minho percorrido mais o custo do serviço de decodificação. No caso da configuração exibida na Figura 3.33(3), o
custo dos caminhos é 13+12+13+13=51 e o custo do serviço de codificação é 7+4+3+8=22. Portanto, o custo total
desta configuração é 73. No caso da configuração exibida na Figura 3.33(4), o custo de atendimento do primeiro
nó de consumo é igual ao do caso anterior sendo 13+7=20. Contudo, as demais demandas são concentradas no
decodificador, que cobra 4 unidades pelo serviço. Uma primeira economia torna-se possível se o vértice gerador
enviar somente um sinal para o vértice decodificador, juntamente com a mensagem de replicar o sinal para os três
demandantes. Outra economia pode ser feita se o vértice decodificador fizer a decodificação antes de replicar o
sinal, de forma a cobrar somente por um serviço de decodificação. Portanto, na nova configuração de distribui-
ção, o caminho até os vértices de demanda custará 3+4+5+6+1+4+1=24 e o serviço de decodificação custará 4.
Somando-se este custo ao do atendimento do primeiro cliente, a configuração da Figura 3.33(4) tem um custo
total de 48 unidades. O problema pode ser modelado através do modelo de árvore de Steiner (ver Capítulo 8) com
grupamentos, onde os nós de decodificação/distribuição formam um grupamento e cada um dos nós de demanda
é um grupamento.

(1) Constituição da rede (2) Custos de distribuição

(3) Solução com custo de 73 unidades (4) Solução com custo de 48 unidades
CAPÍTULO 3  Árvores 165

Figura 3.33 Soluções para a distribuição de sinal

❂ Trabalhos de Referência

Salama et al. (1997) avaliam o desempenho de vários algoritmos para o problema. Wang et al. (2004) relatam um algorit-
mo em busca tabu. Braun et al. (2006) relatam algoritmos para a backup multicast tree. Lipman et al. (2006) desenvolvem
um trabalho amplo sobre o tema. Morsy & Nagamochi (2008) apresentam algoritmos com base em vários modelos em
árvore para o problema.

►Exemplo 3: Redes Ópticas (Passive Optics Networks – PON)

O sistema de transmissão de uma rede óptica passiva (PON) apresenta três componentes fundamentais:

 terminal de linha óptica (OLT);


 unidade de rede óptica (ONT);
 rede de distribuição óptica (ODN).

Os terminais da linha óptica e a rede de distribuição óptica contêm elementos ópticos e eletrônicos. A ODN é uma
rede de distribuição passiva contendo a fibra óptica, os divisores, os conectores e outros componentes. A OLT é o
componente responsável pela gerência do sistema e pelo provimento de uma interface a da rede, podendo ser loca-
lizada na central de distribuição ou em outro local com acesso remoto. A OLT se presta ao papel de interface com a
central ou de concentrador remoto. O sinal óptico é transmitido pelo OLT através da rede de distribuição (ODN).
Na fibra óptica são feitas derivações através do uso de divisores ópticos passivos (Passive Optical Splitter – POS).
Um esquema geral de distribuição e alcance de uma PON é apresentado na Figura 3.34.

Figura 3.34 Arquitetura genérica de uma rede PON

Observe que essas redes podem possuir um tamanho razoável e envolver custos significativos, tanto de imple-
mentação como de operação. Essas redes permitem uma largura de banda de amplo espectro e serviços de alto
desempenho. De modo geral, a partir de um ponto de centralização conhecido como Central Office (CO), o sinal
é transmitido pela óptica, sendo dividido quando se aproxima dos assinantes. A divisão se processa através de
divisores ópticos denominados splitters. Posteriormente, o sinal é conduzido às tomadas de telecomunicações,
denominadas Optical Network Terminal (ONT), via de regra localizadas no contexto dos assinantes. Para atingir
vários clientes, utilizam-se diversos divisores ópticos (os splitters), elementos pequenos e de baixo custo. O fator
166 Grafos

determinante do alcance físico máximo de uma rede PON é o número de divisores ópticos usados no segmento
da rede de acesso.
A topologia de uma rede de transmissão baseada em arquitetura PON é composta pelos seguintes elementos:

1. Central de equipamentos (Headend): local onde ficam instalados os equipamentos ópticos de transmissão
e o Distribuidor Geral Óptico (DGO), responsável pela interface entre os equipamentos de transmissão e os
cabos ópticos de transmissão.
2. Backbone óptico (Feeder): composto por cabos ópticos que levam o sinal da central aos pontos de distribuição.
Os cabos ópticos podem ser subterrâneos ou aéreos.
3. Pontos de distribuição: uma solução usual para otimizar o uso das fibras ópticas é distribuir o backbone em
estrela. Dessa forma, os pontos de distribuição fazem a divisão do sinal em áreas mais distantes da central de
equipamentos, o que reduz a necessidade de fibras ópticas para atendimento aos pontos.
4. Rede óptica de distribuição: formada por cabos ópticos, leva o sinal dos pontos de distribuição às áreas de
atendimento.
5. Rede óptica drop: composta por cabos ópticos autossustentados de baixa formação (com pequeno número
de fibras ópticas). A partir da caixa de emenda terminal (NAP), os cabos drop levam o sinal óptico até ao
assinante propriamente dito.
6. Rede interna: a partir do bloqueio óptico ou distribuidor interno óptico, são utilizadas extensões ópticas ou
cordões ópticos para realizar a transição do sinal óptico da fibra ao receptor interno do assinante.

A rede PON com arquitetura point-to-multipoint permite que uma única fibra seja compartilhada por múl-
tiplos pontos finais (residências e empresas), não existindo elementos ativos entre o equipamento OLT e outros
elementos da rede (ONU – optical network units), bem como outras OLT, e com isto economizando energia, espaço
necessidade de manutenção de equipamentos eletrônicos. Já a arquitetura point-to-point não apresenta essa possi-
bilidade. A figura exibe a configuração de distribuição de uma PON a partir dos splitters (o triângulo vermelho).
Conhecida a posição dos splitters, a otimização dessa rede pode constituir uma árvore geradora sobre os pontos de
demanda, como mostra a Figura 3.35.

Figura 3.35 Rede de distribuição de fibra óptica


CAPÍTULO 3  Árvores 167

Vários outros fatores de decisão tornam a modelagem dessa aplicação em grafos bem mais complexa que o
modelo aproximativo proposto na Figura 3.35. O problema é também formulado em função da otimização da
localização dos splitters, nesse caso o problema pode ser modelado através de conjuntos dominantes.

❂ Trabalhos de Referência

Khan (2003) e (2005) apresentam modelos e algoritmos de solução. O problema é também abordado em Villalba et al.
(2009). Riziotis & Vasilakos (2007) apresentam um trabalho abrangente em tecnologia de redes de fibra óptica. Han et
al. (2010) apresentam um estudo de arquiteturas para o problema. Mitcsenkov et al. (2011) abordam outros problemas
associados ao tema.

►Exemplo 4: Otimização de Sistemas Submersos em Campos de Petróleo Off-Shore

Os campos de petróleo off-shore são sistemas extremamente complexos que visam coletar e direcionar o óleo dos
poços em solo submarino até um ponto de transporte. Os pontos de transportes podem ser plataformas ou ter-
minais flutuantes. A Figura 3.36 mostra, de forma bastante simplificada, alguns dos componentes de um sistema
submerso. Destacamos os poços, que podem ser de diferentes tipos, e dois tipos de concentradores. Os concen-
tradores têm por função reunir a produção de diversos poços, de modo a minimizar o número de tubulações que
acessam a plataforma, normalizar o fluxo de óleo, facilitar as operações de manutenção, aumentar a segurança e
confiabilidade do sistema etc. Dentre os diversos problemas de otimização combinatória que emergem do caso
descrito, um significativo problema de otimização é determinado pela necessidade de definir a localização e a
capacidade desses concentradores.
O posicionamento dos elementos desse sistema pode ser formulado como um grafo em que o posicionamento
dos poços e o das plataformas são representados pelos vértices brancos da Figura 3.37. As posições viáveis para
alocação dos concentradores é representada pelo conjunto de pontos vermelhos. A solução desse problema consis-
te em uma árvore que visita todos os vértices de demanda, utilizando os concentradores que se fizerem necessários
para estabelecer a conexão desejada. Observe que o problema possui ainda características especiais. Trata-se de
uma árvore enraizada em um vértice que representa a plataforma. Os concentradores se ligam ao vértice da plata-
forma, todavia um dado número k de poços também pode se ligar diretamente à plataforma. Os concentradores
possuem tanto capacidade máxima conhecida como um custo associado que varia em função do número de poços
atendidos. Noticia-se que esse modelo representa uma forma especial de árvore de Steiner com coleta de bônus,
modelo que será examinado no Capítulo 8.
168 Grafos

Figura 3.36 Um esquema simplificado de um sistema de óleo off-shore

Figura 3.37 Modelo em grafos associado à solução do esquema da Figura 3.36

❂ Trabalhos de Referência

O problema é abordado em Goldbarg & Fampa (1995), que sugerem um modelo de formulação e uma heurística de so-
lução.

►Exemplo 5: Otimização de Sistemas com Grau de Incerteza


CAPÍTULO 3  Árvores 169

O Problema Árvore Geradora Mínima Robusta


p
O problema da árvore geradora mínima robusta (AGM-R) é definido em um
grafo G = (N,M), cujas arestas e  M estão associadas a intervalos de custos [ce ,
ce], onde ce é o limite inferior do intervalo e ce o limite superior.
Um cenário S é uma designação particular dos custos das arestas. O desvio de
uma certa árvore T, denotado por T(S), é a diferença entre os custos de T e os
custos da árvore geradora mínima do cenário S. Portanto:

T(S) = custo (T, s) – custo (AGM, s)

O cenário onde a diferença T(S) é máxima é denominado ST*


O desvio correspondente a ST* é denominado desvio robusto e denotado *T

Uma árvore geradora é dita robusta quando seu desvio robusto é mínimo.

❂ Trabalhos de Referência

Kouvelis & Yu (1997) afirmam ser o problema NP-difícil, todavia não apresentam prova. Os seguintes trabalhos abordam
o tema: Yaman et al. (2001), Aron & Van Hentenryck (2003) e Montemanni & Gambardella (2005).

3.5 Grafos Especiais Associados às Árvores


Alguns grafos especiais estão associados às árvores e representam situações especiais importantes para certos mo-
delos e problemas.

A Figura 3.38(1) mostra a imersão


Grafo de Halin planar de uma árvore com 6 vér-
Um grafo de Halin é um grafo planar construído a partir de uma imersão pla- tices, sendo 4 deles folhas em um
nar de uma árvore T com n ≥ 4 vértices tal que não existe vértice de grau dois ciclo com 4 vértices resultando em
em T, conectando-se todas as folhas de T em um ciclo que passa em torno de um grafo de Halin.
T, ligando suas folhas sem passar pelos demais vértices da árvore – vértices in-
ternos. A Figura 3.38(2) exibe um grafo de
Halin com n = 4.
170 Grafos

(1) Grafo de Halin com dois vértices internos (2) Grafo de Halin com n=4

Figura 3.38 Exemplos de grafos de Halin

Quase-Árvore A Figura 3.39(1) exibe um grafo


quase-árvore, e identifica os vér-
Um grafo G = (N,M) é uma quase-árvore quando para algum v  N o subgrafo tices que, removidos, reduzem o
induzido pelo conjunto de vértices N1 = N \ {v } é uma árvore. grafo quase-árvore a uma árvore,
como mostrado na Figura 3.39(2).

(1) Grafo quase-árvore (v =3 ou v =1) (2) Redução a uma árvore removendo vértice 3

Figura 3.39 Quase-árvore

3.6 Aplicações Reais Selecionadas


As árvores encontram diversas aplicações para a modelagem e solução de problemas reais. O quadro de dicas
relaciona algumas aplicações clássicas.

❂ Algumas Áreas de Aplicações Reais de Árvores


CAPÍTULO 3  Árvores 171

 Projeto de redes de computadores e de comunicação.


• Instalações de telefone, hidráulicas, elétricas, TV a cabo, petróleo e gás.
 Análise de agrupamentos.
 Análise de padrões de distribuição espacial de esporos.
 Análise genética.
 Astronomia (determinação de agrupamentos de quasars).
 Geração de limites para problemas NP-Difíceis.
 Registro de imagens (com entropia de Renyi).
 Redução de armazenamento de dados na sequência de aminoácidos em uma proteína.
 Modelos de localização de interação de partículas em fluxo turbulento de fluidos.
 Nos protocolos de comunicação da internet.
 Computação móvel.
 Circuitos em placas de computador.

No sentido de esclarecer melhor as aplicações no tema, destacam-se os seguintes trabalhos:

 Tubulações de gás e óleo (Rothfarb et al., 1970).


 Redes de comunicação (Hanan, 1975).
 Redes de comunicação e de tráfego (Frank & Frisch, 1976).
 Distribuição de água e redes de drenagem (Lee, 1976).
 Planejamento de redes externas de comunicação (Luna et al., 1987).
 Várias aplicações (Hwang & Richards, 1992).
 Modelos para confecção de circuitos VLSI (Robins & Salowe, 1995).
 Modelos para fluxo turbulento (Subramaniam & Pope, 1998).
 Biologia computacional (Henzinger & Warnow, 1999).
 Imagens médicas (Ma et al., 2000).
 Computação móvel (Bhattacharya et al., 2003).
 Serviços WEB (Jain et al., 2004).
 Coloração de arestas (Theoharatos et al., 2004).
 Redes metropolitanas WDM – Wavelength Division Multiplexing (Madhyastha et al., 2005).
 Diferenciação genética (Baratti et al., 2005).
 Projeto de redes de sensoriamento (Ovalle-Martínez et al., 2005).
 Processamento de imagens em sistemas geográficos (Hero et al., 2002).
 Redes de gás natural (Klau et al., 2004).
 Irrigação (Paudyal et al., 1991).
 Operação de redes de sensores (Jia et al., 2006).
 Jogos on-line (Vik et al., 2006).
 Alocação de comprimento de ondas (Saad et al., 2008).
 Redes de distribuição de eletricidade (Avella et al., 2005).

3.7 Exercícios Resolvidos do Capítulo 3


172 Grafos

Exercício no 1:
Suponha que um grafo G =(N,M) represente uma rede de comunicações onde os vértices representam
pontos de demanda e as arestas as conexões físicas entre esses pontos de demanda. Suponha ainda que as
conexões físicas entre os vértices possuem estabilidade estocástica, de forma que as conexões possuem a
probabilidade pij de se manterem ativas, para cada possível ligação entre os vértices i e j da rede. Por outro
lado, cada ligação entre os vértices i e j da rede possui um custo cij. Formular um modelo de solução mono-
-objetivo baseado em grafos para esse problema de modo que se estabeleça uma estrutura na rede que co-

necte todos os vértices e considere tanto o objetivo de minimizar o custo da conexão quanto o de maximizar
a probabilidade de que essa conexão funcione.
Exercício no 2:
Suponha que um grafo G =(N,M) represente uma rede de comunicações onde os vértices representam pontos
de demanda e as arestas as conexões físicas entre esse pontos de demanda. Suponha ainda que uma ligação en-
tre o vértice i e o vértice j se faça através de diversas conexões entre vértices vizinhos, formando um caminho
ligando i a j em G. Dadas a matriz P = [pij] de fluxo de demanda e a matriz de caminhos mais curtos D =[dij]
entre os vértices de G, formular um modelo de solução mono-objetivo baseado em grafos para o problema de
atender toda a demanda da rede a custo mínimo.
Exercício no 3:
Discuta como seria possível implementar o algoritmo de Kruskal sem ordenar as arestas inicialmente. Forma-
lize o algoritmo. Qual a complexidade desse novo algoritmo?
Exercício no 4:
Desenvolva um algoritmo exato para a solução da árvore geradora mínima MinMax_MinSum. Formalize o
algoritmo, explique seu funcionamento e analise a sua complexidade. Exemplifique um passo do funciona-
mento desse algoritmo no grafo da figura que se segue.

Grafo dos custos – cij Grafo dos pesos – pij


Grafos do exercício 4

Exercício no 5:
Prove que se G é um grafo com n vértices e m arestas tal que m < n-1, então G não é um grafo conexo.
Exercício no 6:
CAPÍTULO 3  Árvores 173

Prove que toda árvore com n vértices, n ≥ 2, tem no mínimo duas folhas.
Exercício no 7:
1) Quantas árvores geradoras não isomorfas possui o K2,3?
2) Quantas árvores geradoras não isomorfas possui o K2,99?
3) Quantas árvores geradoras não isomorfas possui o K2,p?
Exercício no 8:
Prove que se G é um grafo conexo com n vértices, então as arestas obtidas com o algoritmo de Kruskal formam
uma árvore geradora.
Exercício no 9:
Considere T1 = (N,M1) e T2 = (N,M2) duas árvores geradoras não isomorfas de um grafo conexo G = (N,M).
Mostre que existe, pelo menos, uma aresta e M1 tal que se e for removida, então existe uma aresta a M2 tal
que o grafo induzido pelo conjunto de arestas {M1 \ {e}}  {a} é uma árvore geradora de G.
Exercício no 10:
Demonstre que, em uma árvore T, a distância máxima entre um vértice u e qualquer outro vértice v acontece
quando v é um vértice de grau 1.
Exercício no 11:
Suponha que seja dada a árvore geradora mínima T de um grafo G com n vértices e m arestas. Uma nova aresta
(u,v) de custo k é acrescentada a G. Elaborar um algoritmo de complexidade O(n) para obter a árvore geradora
mínima do novo grafo G.
Exercício no 12:
A tabela a seguir mostra a distância entre as doze cidades brasileiras que serão sedes na Copa Mundial de
Futebol de 2014, sendo elas: Belo Horizonte (BHO), Brasília (BRA), Cuiabá (CBA), Curitiba (CTB), Fortale-
za (FOR), Manaus (MAN), Natal (NAT), Porto Alegre (POA), Recife (REC), Rio de Janeiro (RJO), Salvador
(SAL) e São Paulo (SPO). Determine o grafo de conexão mínima entre essas cidades utilizando o algoritmo
de Kruskal e o de Prim.

BHO BHO

BRA 716 BRA

CBA 1594 1133 CBA

CTB 1004 1366 1679 CTB

FOR 2528 2200 3406 3541 FOR

MAN 3951 3490 2357 4036 5763 MAN

NAT 2348 2422 3543 3365 537 5985 NAT

POA 1712 2027 2206 711 4242 4563 4066 POA

REC 2061 2135 3255 3231 800 5698 298 3779 REC

RJO 439 1148 2017 852 2826 4374 2625 1553 2338 RJO

SAL 1372 1446 2566 2385 1389 5009 1131 3090 897 1678 SAL

SPO 586 1015 1614 408 3127 3971 2947 1109 2660 429 1962
174 Grafos

Exercício no 13:
Para quaisquer três vértices em uma árvore, os três distintos caminhos entre esses vértices possuem um vértice
em comum.
Exercício no 14:
Uma árvore de ordem 37 possui 25 vértices com grau 1, 3 vértices com grau 2, 3 vértices com grau 4, 1 vértice
com grau 5 e 2 vértices com grau 6. Ela também possui um vértice de grau desconhecido. Qual deverá ser esse
grau para garantir que o grafo é realmente uma árvore?
CAPÍTULO 3  Árvores 175

3.8 Exercícios Propostos do Capítulo 3

Teoria

3.1: Considere H um subgrafo conexo de G = (N,M), |N| = n. Verifique quais pares de condições abaixo implicam
que H seja uma árvore geradora de G, justificando sua resposta.
1. H contém n vértices
2. H contém n-1 arestas
3. H é conexo
4. H é acíclico
3.2: Mostre que uma árvore é um grafo bipartido e responda: Qualquer grafo bipartido completo é uma árvore?
3.3: Sugira um método para determinar o número de árvores geradoras de um grafo sem que seja preciso exibi-las.
3.4: Suponha um conjunto de n números inteiros positivos. Dê as condições necessárias para que esses números
possam representar os graus (di ) dos n vértices de uma árvore. Essas condições são suficientes? d1 + d2 +...+
dn = 2(n-1)
3.5: Quantas árvores geradoras distintas existem em um grafo completo?
3.6: Caracterizar os grafos para os quais o centro do grafo é igual ao conjunto de vértices n.
3.7: Demonstre que uma árvore com n vértices, onde n≥2 tem pelo menos dois vértices de grau 1.
3.8: Enuncie uma (ou mais de uma) condição necessária e suficiente para que um grafo possua apenas uma ár-
vore geradora mínima.
3.9: Suponha que existem exatamente duas arestas com o mesmo peso para serem incluídas em uma certa itera-
ção do algoritmo Prim. Pode-se afirmar que o algoritmo vai retornar o mesmo valor para a árvore geradora,
independentemente da aresta que for selecionada?
3.10: Os caminhos entre os pares de vértices de uma árvore geradora mínima em G representam os menores ca-
minhos entre esses pares de vértices em G? Prove a afirmação ou forneça um contraexemplo. O fato de todas
as arestas em G possuírem valores diferentes influencia ou não na veracidade da afirmação anterior?
3.11: Demonstre que, G =(N,M) é um grafo conexo e a remoção de uma aresta qualquer (i,j)M ocasiona a des-
conexão de G, então G é uma árvore.
3.12: Sabendo-se que T é uma árvore com pelo menos três vértices e T(–) é a árvore obtida pela exclusão das folhas
de T, prove ou exiba um contraexemplo para a seguinte afirmação: T e T(–) possuem o mesmo centro.
3.13: Se T é uma árvore com 120 vértices, qual será a soma dos graus dos vértices de T?
3.14: Suponha que as arestas de um grafo G não direcionado e com todos os custos diferentes sejam denominadas
indesejáveis quando, para algum ciclo em G, possuem o maior custo do ciclo. Suponha ainda que as arestas
de G que não pertençam a qualquer ciclo de G sejam ditas desejáveis. Prove que:
1. uma árvore geradora mínima em G contém todas as arestas desejáveis de G;
2. uma árvore geradora mínima em G não contém qualquer aresta indesejável de G.
3.15: Uma árvore geradora mínima em G também é a árvore geradora em G que minimiza o produto das arestas?
3.16: Suponha que T seja a árvore geradora mínima de um dado grafo G com n vértices e m arestas. Através de uma
operação de adição de pesos em G, todas as arestas de G são acrescidas de um mesmo valor k. Nesse caso, as
arestas de T ainda serão as arestas da nova árvore geradora mínima de G? Prove ou forneça um contraexemplo.
Faça uma análise semelhante para o caso de o peso das arestas de G ser multiplicado por um valor k.
176 Grafos

3.17: Prove ou dê um contraexemplo: Todo grafo com n>m possui um componente que é uma árvore.
3.18: É possível demonstrar que existem somente seis árvores diferentes de seis vértices. Trace essas árvores.

Algoritmos

3.19: Sabendo que uma árvore é um grafo bipartido, faça um algoritmo que receba uma árvore como dado de
entrada e exiba os conjuntos disjuntos de vértices que caracterizam a bipartição.
3.20: Faça um algoritmo de busca em profundidade para encontrar a árvore geradora mínima de um grafo. Qual
a complexidade do seu algoritmo?
3.21: O que acontece se, por engano, os algoritmos de Kruskal, Prim e Borůvka são executados em um grafo des-
conexo?
3.22: O que acontece se, por engano, os algoritmos de Kruskal, Prim e Borůvka são executados em um grafo que
tem pesos negativos?
3.23: Dados um grafo G e sua árvore geradora mínima T, desenvolva um algoritmo que determine o menor valor
possível de redução nos custos em uma aresta de G tal que T seja alterada.
3.24: Elabore um algoritmo eficiente para a determinação da árvore geradora de grau máximo k = 3. Aplique o algo-
ritmo no grafo da figura que se segue. O algoritmo elaborado é eficiente e exato para qualquer valor de k?

Grafo do exercício 3.24


3.25: Elabore um algoritmo eficiente para a determinação da árvore geradora máxima. Aplique o algoritmo no
grafo da figura do exercício 3.24.
3.26: Elabore um algoritmo eficiente para a determinação da árvore geradora de maior grau possível em G. Apli-
que o algoritmo no grafo da figura do exercício 3.24.
3.27: Elabore um algoritmo eficiente para a determinação da árvore geradora de máximo número de folhas em G.
Aplique o algoritmo no grafo da figura que se segue.
CAPÍTULO 3  Árvores 177

Grafo do exercício 3.27


3.28: Elabore um algoritmo eficiente para a determinação da árvore geradora que possui a menor soma de todos
os caminhos entre todos os seus pares de vértices. Aplique o algoritmo no grafo da figura que se segue.

1o Grafo do exercício 3.28 2o Grafo do exercício 3.28

3.29: Elabore um algoritmo eficiente para a determinação da árvore geradora que possui a soma de todos os cami-
nhos entre todos os seus pares de vértices menor ou igual a 100. Aplique o algoritmo no grafo do exercício
3.28.
3.30: Elabore um algoritmo eficiente para a determinação da árvore geradora de menor diâmetro. Aplique o algo-
ritmo ao grafo do exercício 3.30, considerando as arestas de G com distância igual a 1.
3.31: Elabore um algoritmo eficiente para a determinação da árvore geradora de diâmetro limitado k=30. Aplique
o algoritmo ao grafo do exercício 3.28.
3.32: Elabore um algoritmo eficiente para a determinação da árvore geradora de menor diâmetro e com grau
limitado a r. Aplique o algoritmo ao grafo do exercício 3.28 com r=4.
3.33: Elabore um algoritmo eficiente para a determinação da árvore geradora 4-hop. Aplique o algoritmo ao grafo
(1) figura que se segue, considerando o comprimento de cada aresta igual a 1. A figura (2) do presente exer-
cício exibe uma solução do problema.
178 Grafos

(1) Grafo (2) Uma árvore 4-hop


Grafos do exercício 3.33

3.34: Considerando uma árvore T=(N,M), o seguinte algoritmo é proposto para determinar o seu centro. O pre-
sente exercício considera que o centro de uma árvore ponderada é constituído pelo conjunto de vértices de
excentricidade mínima, calculadas as distâncias considerando a ponderação das arestas.

A
Ler T = (N,M)
Enquanto |N|>2 Fazer
F ← folhas(T ) // folhas(.) retorna as folhas de T //
N←N\F
Fim_Enquanto
Escrever N

Pergunta-se:
1. O algoritmo proposto encontra o centro de uma árvore ponderada?
2. No caso de uma árvore não ponderada, qual a maior cardinalidade possível para o conjunto de vértices
centro?
3. No caso de uma árvore ponderada em que não exista o peso nulo, qual a maior cardinalidade possível
para o conjunto de vértices centro?
3.35: O algoritmo de Kruskal pode ser adaptado para encontrar: uma árvore geradora de peso máximo num grafo
ponderado? Uma floresta maximal de peso mínimo num grafo ponderado?
3.36: Suponha que existem exatamente duas arestas com o mesmo peso. Pode-se dizer que o algoritmo de Prim
retornará a mesma árvore geradora, independentemente de qual aresta for selecionada?

Modelos

3.37: Uma cidade está projetando um sistema de distribuição de gás encanado. O impacto ambiental das escava-
ções é considerado elevado na região do projeto, de forma que se deseja minimizar o comprimento da rede.
CAPÍTULO 3  Árvores 179

No mapa que se segue, a localização da estação de distribuição está identificada pelo pequeno círculo. Esta-
beleça uma rede em árvore sobre o mapa da Figura (1), cobrindo todas as ruas. Resolva o mesmo problema
para o caso de a demanda ocorrer somente nos pontos assinalados na Figura (2).

(1) Grafo (2) Uma árvore 4-hop


Grafos do exercício 3.37

3.38: O Banco do Japão está implementando, no centro da cidade de Osaka, uma rede de caixas automáticos. O
centro da rede é a sede do banco (o ponto circular verde). Cada localização de caixas está representada por
um retângulo na figura do presente exercício. As fibras de comunicação devem seguir o traçado das ruas.
Deseja-se minimizar o comprimento das fibras ópticas instaladas.

Grafo do exercício 3.38

Aplicações
180 Grafos

3.39: Identifique todas as árvores geradoras dos grafos das figuras do exercício.

1o grafo do exercício 3.39 2o grafo do exercício 3.39

3.40: Represente a árvore da figura do exercício através de matriz de incidência, listas de incidência, matriz de
adjacência e em estrela direta/reversa.
3.41: Desenhe um grafo que não é uma árvore e que tem mais de dois centros.
3.42: Dados os grafos e as árvores abaixo, determine suas coárvores geradoras.

Grafos do exercício 3.42

3.43: Execute os algoritmos Prim, Kruskal, Prim colorido e Borůvka para a determinação da árvore geradora
mínima no grafo da figura do exercício.

Grafo do exercício 3.43


CAPÍTULO 3  Árvores 181

3.44: Considerando uma árvore de grau d com número máximo de vértices folha, responda:
1. Qual o grau dos vértices internos da árvore?
2. Qual o grau dos vértices folha?
3. Quantos vértices possui a árvore se sua é h?
4. Qual a altura da árvore se o número de vértices é n?
3.45: Exiba um grafo simples ponderado que possui duas árvores geradoras mínimas distintas.
3.46: Para o grafo do presente exercício, determine:
1. árvore geradora compacta.
2. árvore de mínimo diâmetro.
3. a árvore mínimo diâmetro limitada em grau 4.
4. árvore geradora de mínima 7-hop.
5. árvore geradora de grau máximo 3.

Grafo do exercício 3.46

Desafios

3.47: Genial teve a seguinte ideia: Considere uma aresta (u,v)  M. Se G = (N,M \ (u,v) ) for conexo, remova (u,v)
do conjunto M. Quando todas as arestas forem examinadas, o grafo remanescente G será uma árvore gera-
dora. A ideia de Genial pode solucionar o problema da determinação de uma árvore geradora em G? Em
caso positivo, desenvolva um algoritmo baseado nessa ideia e calcule sua complexidade de pior caso. Em
caso negativo, exiba um contraexemplo em que a ideia falhe.
3.48: Com base na prova do exercício anterior, Genial propôs o seguinte algoritmo para a árvore geradora mí-
nima: Examine as arestas de G em ordem decrescente de custos. Se uma aresta é indesejável (ver exercício
3.14), remova-a de G. O algoritmo proposto por Genial produz uma árvore geradora mínima em G? Qual é
a sua complexidade?
3.49: Seria possível desenvolver um algoritmo para a determinação de uma árvore geradora em G em O(m)?
Apresente esse algoritmo e as condições associadas ao funcionamento dele segundo a complexidade estabe-
lecida.
3.50: Desenvolva um algoritmo O(mlogm) que determine, em um grafo G ponderado, a menor mudança possível
de pesos sobre as arestas não pertencentes à AGM, de forma a incluí-las na AGM.
182 Grafos

3.51: Desenvolva um algoritmo eficiente que determine se um grafo G contém como subgrafo determinada arbo-
rescência F. O algoritmo deverá ser aplicável tanto a grafos direcionados como a não direcionados.
3.52: Exemplifique um grafo com arestas de custos iguais em que o algoritmo de Borůvka básico encontre a árvore
geradora mínima.
3.53: Genial propôs o algoritmo que se segue para a determinação da árvore geradora mínima. 1. Verifique a exa-
tidão do algoritmo 2. Calcule sua complexidade assintótica de pior caso.

A Genial
Ler G = (N,M) e D = [dij ] a matriz de pesos de G
F0 é uma floresta inicial com n subarvores Tj , j = 1,.., n de G (todos os vértices isolados)
i←0
k←n
Enquanto | F0 |>1
Para i ←1 até k Faça
Determine a menor aresta (xα, yα) incidente em Ti onde xαTj e yαTj
k ← k – | Fj |
F0 ← F0 \ Fj
M ← M \ {xαTi e yαT1}
Fim_Para
Fim_Enquanto

3.9 Referências
Abdalla, A., Deo, N. & Gupta, P. (2000). Random-tree diameter and the diameter constrained MST. Congressus
Numerantium 144:161-182.
Alfandari, L. & Paschos, V. Th. (1999). Approximating minimum spanning tree of depth 2. International Transac-
tions in Operations Research. 6:607-622.
Althaus, E., Funke, S., Har-Peled, S., Konemannk, J., Ramos, E. A. & Skutella, M. (2005). Approximating k-hop
minimum-spanning trees. Operations Research Letters 33(2):115-120.
Amberg, A., Domschke, A. W. & Voß, S. (1996). Capacitated minimum spanning trees: Algorithms using intel-
ligent search. Combinatorial Optimization: Theory and Practice 1(1):9-39.
Andrade, R., Lucena, A. & Maculan, N. (2006). Using Lagrangian dual information to generate degree constrained
spanning trees. Discrete Applied Mathematics 154:703-717.
Aron, I. & Van Hentenryck, P. (2003). On the complexity of the robust spanning tree with interval data. Operations
Research Letters 32(1):36-140.
Avella, P., Villacci, D. & Sforza, A. (2005). A Steiner arborescence model for the feeder reconfiguration in electric
distribution networks. European Journal of Operational Research 164:505–509.
Baratti, M., Goti, E. & Messana, G. (2005). High level of genetic differentiation in the marine isopod Sphaeroma
terebrans (Crustacea Isopoda Sphaeromatidae) as inferred by mitochondrial DNA analysis. Journal of Experimen-
tal Marine Biology and Ecology 315:225-234.
Bazlamaçci, C. F. & Hindi, K. S. (2001). Minimum-weight spanning tree algorithms: A survey and empirical study.
Computers & Operations Research 28(8):767-785.
Bhat-Nayak, V. & Deshmukh, U. (1996). New families of graceful banana trees. In: Proceedings. Indian Acad. Sci.
Math. Sci. 106:201-216.
CAPÍTULO 3  Árvores 183

Bhattacharya, S., Kim, H., Prabh, S. & Abdelzaher, T. (2003). Energy-conserving data placement and asynchronous
multicast in wireless sensor networks. In: The First International Conference On Mobile Systems, Applications and
Services, MobiSys. ‘03, 173-186.
Bilò, V., Goyal, V., Ravi, R. & Singh, M. (2004). On the Crossing Spanning Tree Problem. Lecture Notes in Computer
Science 3122:51-60. Springer Berlin / Heidelberg.
Biu, M., Butelle, F. & Lavault, C. (2004). A distributed algorithm for constructing a minimum diameter spanning
tree. Journal of Parallel and Distributed Computing 64:571–577.
Borgelt, M. G., van Kreveld, M., Löffler, M., Luob, J., Merrickc, D., Silveira, D. I. & Vahedi, M. (2009). Planar bi-
chromatic minimum spanning trees. Journal of Discrete Algorithms. 7(4):469-478.
Boruvka, O. O. (1926). Jistém problém minimálnim, Práca, Prirdovedeckó Moravské Spolecnosti 3, 37-58 [em tche-
co e citado em inglês em Graham & Hell (1985)].
Braun, T., Arya, V. & Turletti, T. (2006). Explicit routing in multicast overlay networks. Computer Communications
29: 2201-2216.
Camerini, P. M., Galbiati, G. & Maffioli. F. (1980). Complexity of spanning tree problems: part I. European Journal
of Operational Research 5:346-352.
Chandrasekaran, R., Aneja, Y. P. & Nair, K. P. K. (1981). Minimal cost reliability ratio spanning tree. In: Studies on
Graphs and Discrete Programming. Hansen P., editor, North Holland, 53-60.
Chandrasekaran, R. & Tamir, A. (1984). Polynomial testing of the query “Is abcd” with application to finding a
minimal cost reliability ratio spanning tree. Discrete Applied Mathematics 9:117-123.
Chaudhuri, K., Rao, S., Riesenfeld, S. & Talwar, K. (2005). What would Edmonds do? Augmenting paths and wit-
nesses for degree-bounded MSTs. Proceeding of Approx-Random, Lecture Notes. Computer Science 3624:26-39,
Springer, Berlin.
Chazelle, B. (1997). A faster deterministic algorithm for minimum spanning trees. In: Proceedings of the IEEE
Symposium on Foundations of Computing Science. IEEE Computer Society Press, 22-31.
Chazelle, B. (2000a). The soft heap: An approximate priority queue with optimal error rate. Journal of the ACM 47.
6:1012-1027.
Chazelle, B. (2000b). A minimum spanning tree algorithm with inverse-Ackermann type complexity. Journal of
the ACM 47(6):1028-1047.
Chen, W. C., Lü, H. I. & Yeh, Y. N. (1997). Operations of interlaced trees and graceful trees. Southeast Asian Bulletin
of Mathematics 21:337-348.
Cheriton, D. & Tarjan, R. E. (1976). Finding minimum spanning trees. SIAM Journal on Computing 5:724-742.
Dimakopoulos, V. (2000). Formulas For Counting Spanning Trees. http://citeseerx.ist.psu.edu/viewdoc/
summary?doi=10.1.1.23.3638. Acesso em julho de 2011.
Duin, C. W. & Volgenant, A. (1991). Minimum deviation and balanced optimization. Operations Research Letters.
10: 43-48.
El-Basil, S. (1990). Caterpillar (Gutman) trees in chemical graph theory. In: Gutman, I.; Cyvin, S. J. Advances in
the Theory of Benzenoid Hydrocarbons. Topics in Current Chemistry 153:73–289.
Fekete, S., Khuller, S., Klemmstein, M., Raghavachari, B. & Young, N. (1997). A network-flow technique for finding
low-weight bounded-degree spanning trees. Journal of Algorithms 24:310–324.
Fischer, T. (1993). Optimizing the degree of minimum weight spanning trees. Technical Report 93–1338. Depart-
ment of Computer Science, Cornell University, Ithaca, NY, USA.
Frank, H. & Frisch, I. T. (1976). Network analysis. In: Large Scale Networks: Theory and Design, Boesch, F. T., editor,
IEEE Press, 19-27.
Fredman, M. L. & Tarjan, R. E. (1987). Fibonacci heaps and their uses in improved network optimisation algo-
rithms. Journal of the Association for Computing Machinery 34(3):596-615.
Fujie, T., (2003). An exact algorithm for the maximum leaf spanning tree problem. Computers & Operations Re-
search 30(13):1931-1944
184 Grafos

Fukasawa, R., Lysgaard, J., Aragão, M. P., Reis, M., Uchoa, E. & Werneck, R. F. (2003). Robust branch-and-cut-and-
price for the capacitated minimum spanning tree problem. In: Proceedings of the International Network Optimiza-
tion Conference, 231-236.
Fürer, M. & Raghavachari, B. (1994). Approximating the Minimum Degree Steiner Tree to Within one of Optimal.
Journal of Algorithms 17:409-423.
Gabow, H. N., Galil Z., Spencer T. H. & Tarjan, R. E. (1986). Eficient algorithms for finding minimum spanning
trees in undirected and directed graphs. Combinatorica 6:109-122.
Gabow, H. N. (1977). Two algorithms for generating weighted spanning trees in order. SIAM Journal on Computing
6(1):139-150.
Galbiati, G., Maffioli, F. & Morzenti, A. (1994). A short note on the approximability of the maximum leaves span-
ning tree problem. Information Processing Letters 52:45-49.
Garey, M. R. & Johnson, D. S. (1979). Computers and Intractability: A Guide to the Theory of NP-completeness. W.H.
Freeman and Company.
Goldbarg, M. C. & Fampa, M. H. (1995). Uma heurística para o problema de configuração de exploração de cam-
pos submarinos de petróleo. Pesquisa Naval 8:121-135. ISSN 1414-8595.
Gouveia, L. & Martins, P. (2005). The capacitated minimum spanning tree problem: revisiting hop-indexed formu-
lations. Computers & Operations Research 32:2435-2452.
Grantson, M., Meijer, H. & Rappapo, D. (2005). Bi-Chromatic Minimum Spanning Trees. European Workshop on
Computational Geometry. EWCG 2005, Eindhoven, 199-202.
Hamacher, H. W. & Ruhe, G. (1994). On spanning tree problems with multiple objectives. Annals of Operations
Research 52:209-230.
Han, D-h., Zhang. J., Zhao, Y-l. & Zhao, S-y. (2010). Research of novel complex optical network routing architec-
ture. The Journal of China Universities of Posts and Telecommunications 17(5):93-99.
Hanan, M. (1975). Layout interconnection and placement. Networks 5:85-88.
Harary, F. & Schwenk, A. J. (1973). The number of caterpillars. Discrete Mathematics 6(4):359-365.
Hassin, R. & Levin, A. (2003). Minimum spanning tree with hop restrictions. Journal of Algorithms 48:220-238.
Hassin, R. & Tamir, A. (1995). On the minimum diameter spanning tree problem. Information Processing Letters
53:109-111.
Henzinger, M. & Warnow, T. (1999). Constructing a tree from homeomorphic subtrees with applications to com-
putational biology. Algorithmica 24(1):1-13.
Hero, A. O., Ma, B., Michel, O. & Gorman, J. (2002). Applications of entropic spanning graphs. IEEE Signal Process-
ing Magazine 19:85-95.
Ho, J-M., Lee, D. T., Chang, C.-H. & Wong, E C. K. (1991). Minimum diameter spanning trees and related prob-
lems. SIAM Journal on Computing 20:987-997.
Hu, T. C. (1974). Optimimum communication spanning trees. SIAM Journal on Computing 3:188-195.
Hwang, F. K. & Richards, D. S. (1992). Steiner tree problems. Networks 22:55-89.
Jain, H., Zhao, H. & Chinta, N. R. (2004). A spanning tree based approach to identifying web services. Interna-
tional Journal of Web Services Research 1(1):1-20.
Jarník, V. (1930). O jistém problému minimálním [About a certain minimal problem]. Práce Moravské
Přírodovědecké Společnosti 6: 57-63 (in Czech).
Jia, L., Noubir, G., Rajaraman, R. & Sundaram, R. (2006). Gist: Group-independent spanning tree for data aggrega-
tion in dense sensor networks. In: International Conference on Distributed Computing in Sensor Systems – DCOSS,
282-304.
Johnson, D. B. (1975). Priority queues with update and finding minimum spanning trees. Information Processing
Letters 4:53-57.
CAPÍTULO 4  Caminhos 185

capítulo
186 Grafos

4.1 Conexidade
Em grande parte das aplicações do modelo em grafos, as relações que envolvem os vértices formam uma estrutura
contínua, ou seja, os vértices são todos ligados entre si através das relações. Os percursos em grafos normalmente
também são definidos sobre grafos conexos.
A conexidade é um tema que antecede grande parte dos problemas em grafos, não somente os percursos ou
caminhos. Possui importantes aplicações nas comunicações, planejamento da produção, logística e transportes.
Nesses casos citados, a conexidade pode representar uma métrica de segurança, um parâmetro associado à possi-
bilidade de manutenção das vias de comunicação entre vértices. Então, uma falha em algum vértice de uma rede
poderá acarretar uma interrupção – desconexão. A simulação de tal falha pode ser representada através da remo-
ção desse vértice do grafo. Assim, presentemente, o estudo sobre percursos e caminhos será iniciado abordando
conceitos de conexidade.
O conceito de k-conexi-
dade generaliza o conceito
de conexidade forte.
Vértices Fortemente Conectados Uma sequência de graus
é dita k-conexa se existe
Dois vértices i e j estão fortemente conectados em um grafo direcionado G, se existe algum grafo k-conexo que
caminho direcionado de i para j e de j para i em G. corresponda à sequência
Dois vértices i e j estão fortemente conectados em um grafo não direcionado G, se de graus. Por exemplo, a
existem dois caminhos distintos em arestas de i para j em G. sequência de graus {1,2,1}
é 1-conexa, enquanto a se-
Vértices Fracamente Conectados quência {2,2,2} é 2-conexa.
Conceito exclusivo de grafos direcionados. Dois vértices i e j estão fracamente conec-
Os grafos direcionados
tados em um grafo direcionado G, se existe apenas um caminho direcionado de i para das Figuras 4.1(1) e (2) são
j ou de j para i em G. conexos. Entretanto, ape-
nas o grafo da Figura 4.1(1)
é fortemente conexo, uma
Grafo Fracamente Conexo vez que todos os pares de
vértice do grafo estão forte-
Um grafo direcionado G conexo é dito fracamente conexo quando existe pelo menos
um par de vértices i e j em G tal que o número de caminhos entre i e j é menor que 1. mente conectados.
No grafo da Figura 4.1(2)
não existe caminho direcio-
nado do vértice 5 para qual-
quer vértice do grafo.

(1) Grafo fortemente conexo (2) Grafo fracamente conexo

Figura 4.1 Conexidade de grafos direcionados


CAPÍTULO 4  Caminhos 187

Os termos k-aresta-
k-Conexidade
-conexo e k-vértice-conexo
Um grafo é dito k-conexo quando nele existem pelo menos k caminhos disjuntos em estão em uso crescente na
vértices ligando cada par de vértices. literatura, substituindo, em
não raras ocasiões, os ter-
Um grafo dito 2-conexo é um grafo fortemente conexo e vice-versa. mos conexo ou k-conexo.
A Figura 4.2(1) exempli-
Grafo k-Aresta-Conexo fica um grafo 3-conexo. A
Figura 4.2(2) exibe 3 cami-
Um grafo é dito k-aresta-conexo se é necessário remover pelo menos k arestas para nhos distintos entre os vér-
desconectar G.
tices 2 e 3. As Figuras 4.2(3)
e (4) mostram a equivalên-
Grafo k-Vértice-Conexo cia do conceito de k-cone-
Um grafo é dito k-vértice-conexo se é necessário remover pelo menos k vértices para xidade com os conceitos
desconectar G. de k-vértice conexidade e
k-aresta conexidade.

(2) Caminhos entre os


(1) Grafo 3-conexo (3) 3-desconexão em vértices (4) 3-desconexão em arestas
vértices 3 e 2

Figura 4.2 Grafo 3-conexo ou 3-aresta conexo / 3-vértice conexo

Para o conjunto de
vértices do grafo da Figu-
ra 4.3(1), se S={1} (Figura
Integridade de um Grafo G 4.3(2)), então m(G-S)=1. A
I(G) integridade I(G) do grafo
G é 1+1=2, uma vez que
as oito componentes cone-
Onde m(G-S) denota a máxima ordem de uma componente de G \ S. xas remanescentes em G-S
I(G) é dita a integridade do grafo G. possuem ordem 1, como
mostra a Figura 4.3(3).
Honestidade de um Grafo G Por outro lado, a integri-
dade em arestas é sempre
I'(G) igual a n, uma vez que a re-
moção de uma aresta causa
Onde m(G-S) denota a máxima ordem de uma componente de G \ S. a redução de um vértice na
Um grafo é dito honesto se |I´(G) |=n, a ordem de G. componente conexa. Então
o grafo é honesto. A Figura
4.4 exemplifica a obtenção
da honestidade do grafo.
188 Grafos

(1) Grafo G (2) S={1} (3) I(G)=1+1

Figura 4.3 Integridade de um grafo

(1) I'(G)={1+8}=9 (2) I'(G)={2+7}=9 (3) I'(G)={3+6}=9

Figura 4.4 Honestidade de um grafo

Um grafo é tenaz na me-


dida em que o número
Grafo r-Tenaz de componentes forma-
Um grafo G é dito r-tenaz para um dado número real r, se para todo inteiro k>1 G das pela remoção de um
não pode ser dividido em k diferentes componentes conexas pela remoção de me- conjunto de vértices é
nos de rk vértices (Chvátal, 1973). no máximo tão grande
quanto o número de vér-
tices removidos.
Tenacidade é uma medida da conectividade de um grafo. A Figura 4.5 exibe o efeito da remoção dos vértices do
grafo em análise. A Figura 4.5(1) ilustra o fato de que a remoção de qualquer um dos vértices do grafo não produz
mais de uma componente conexa. A Figura 4.5(2) ilustra uma remoção de 2 vértices, formando duas componen-
tes. Na Figura 4.5(3) são removidos 3 vértices com a formação de 3 componentes. O grafo ilustrado na Figura 4.5 é
1-tenaz, uma vez que o número de componentes conexas formadas pela remoção de um conjunto de vértices é no
máximo igual ao número de vértices removidos.
CAPÍTULO 4  Caminhos 189

(1) Remoção de 1 vértice (2) Remoção de 2 vértices (3) Remoção de 3 vértices

Figura 4.5 Tenacidade de um grafo

Um ciclo em um grafo G implica a existência de pelo menos dois caminhos disjuntos para os vértices de G que
fazem parte do ciclo. Portanto, um grafo que contenha um ciclo que passe por todos os vértices, ciclo Hamiltonia-
no, é 1-tenaz. A tenacidade do grafo é dada pelo máximo valor de r para o qual o grafo é r-tenaz.

Matriz de Ciclos
Dado um grafo G = (N,M) com p ciclos distintos, uma matriz de ciclos de G, B = [bij],
é uma matriz pm com elementos bij  {0,1}, tais que:

bij = 1, se a aresta j pertence ao ciclo i


bij = 0, caso contrário

Mariz de Ciclos Fundamentais


Uma matriz de ciclos fundamentais ou de f-ciclos de um grafo conexo G = (N,M)
com número ciclomático  e m arestas, em relação a uma subárvore geradora T de G é
uma matriz de dimensão m com elementos bij  {0,1} tais que:

bij =1, se a aresta j participa do ciclo fundamental


i de G em relação a T.
bij = 0, caso contrário

No grafo da Figura 4.6(1) existem os seguintes ciclos: C1 = a-b-c, C2 = c-d-e e C3 = a-b-d-e. A matriz de ciclos do
grafo da Figura 4.6(1) é mostrada na Figura 4.6(2). A matriz possui 3 linhas, uma para cada ciclo, e 5 colunas, uma
para cada aresta.

Número ciclomático


190 Grafos

a b c d e
C1 1 1 1 0 0
C2 0 0 1 1 1
C3 1 1 0 1 1

(1) Grafo (2) Matriz de ciclos

a b c d e f g h
C1 1 0 0 0 1 0 0 1
C2 0 1 0 0 1 1 0 0
C3 0 0 1 0 0 1 1 0
C4 0 0 1 1 0 0 1 1

(3) Grafo (4) Matriz de ciclos fundamentais

Figura 4.6 Matriz de ciclos e matriz de f-ciclos

Considere o subgrafo T do grafo G da Figura 4.6(3) induzido pelo conjunto de arestas {e,f,g,h}. T é uma árvore
geradora de G. Com tais arestas é possível formar os seguintes ciclos fundamentais: C1 = a-e-h, C2 = b-e-f, C3 = c-f-g
e C4 = d-g-h. A matriz de f-ciclos do grafo da Figura 4.6(3) é apresentada na Figura 4.6(4). Pode-se notar que as
arestas que estão fora da árvore definem uma matriz identidade, conforme ilustrado pela linha tracejada no meio
da matriz na Figura 4.6(4).

Como definido no Capítulo 1, uma componente


conexa de um grafo G é um subgrafo conexo maxi-
mal em G.
A Figura 4.7 exibe um grafo G que possui quatro
componentes conexas, duas com quatro vértices, uma
com três e uma com um vértice. Os vértices dentro da
elipse azul não constituem uma componente conexa,
pois são subgrafos próprios de outros subgrafos co-
nexos nesse mesmo grafo G.

Figura 4.7 Componentes conexas de G


CAPÍTULO 4  Caminhos 191

Algoritmo de Roy para Componentes Conexas

O algoritmo do quadro Roy encontra as componentes fortemente conexas de um grafo G direcionado através de
relações de vizinhança (Roy, 1969). Objetiva identificar conjuntos de vértices que possuem sucessores e anteces-
sores comuns. Se G é um grafo não direcionado conexo, então todos os vértices de G são sucessores e antecessores
em G. Assim, um grafo conexo não direcionado possui apenas uma componente fortemente conexa.

A Roy
Ler G = (N,M) {direcionado}
i←0
V←N
Enquanto V ≠ Fazer
Escolher e marcar um vértice qualquer v,v  V, com (+) e (–)
Enquanto for possível marcar com (+) um vértice w não marcado com (+) que tenha como
sucessor um vértice marcado com (+)
Marcar w com (+)
Fim_Enquanto
Enquanto for possível marcar com (–) um vértice w não marcado com (–) que tenha como ante-
cessor um vértice marcado com (–)
Marcar w com (–)
Fim_Enquanto
i ← i+1
Si ← vértices que estão marcados com (+) e (–) simultaneamente
V ← V \ Si
Desmarcar todos os vértices de V
Fim_Enquanto

A aplicação do algoritmo de Roy é exemplificada para o grafo da Figura 4.8(1) nas Figuras 4.8 e 4.9. O algoritmo
é iniciado no vértice 1. A Figura 4.8(2) exibe a rotulação dos vértices j tais que existe um caminho direcionado de
j para o vértice 1 em G – rotulação positiva. A Figura 4.8(3) mostra a rotulação dos vértices j tais que existe um
caminho direcionado de 1 para j em G – rotulação negativa. A Figura 4.8(4) mostra as duas rotulações nos vértices
de G. Como nem todos os vértices receberam os dois rótulos, o algoritmo já determina o fato de o grafo não formar
uma única componente fortemente conexa. A Figura 4.8(5) mostra a componente fortemente conexa encontrada
pelo algoritmo após a primeira iteração do laço “enquanto” mais externo. Esta componente fortemente conexa é
formada pelo conjunto de vértices S1 = {1, 2, 3, 7}.
192 Grafos

(1) Grafo G exemplo

(2) Primeiro vértice de exame (3) Rotulação positiva

(4) Rotulação negativa (5) Vértices com as duas rotulações

Figura 4.8 Primeira iteração do algoritmo de Roy – primeira componente

Os vértices restantes são desmarcados e o algoritmo reinicia o laço mais externo com o conjunto V = {4, 5, 6,
8}. As Figuras 4.9(1)-(3) exemplificam o funcionamento do algoritmo no subgrafo de G induzido pelo conjunto
de vértices V. O algoritmo escolhe o vértice 5 no início da nova iteração. A Figura 4.6(1) mostra a rotulação dos
vértices j tais que existe um caminho direcionado de j para o vértice 5 em G. A Figura 4.9(2) mostra a rotulação
CAPÍTULO 4  Caminhos 193

dos vértices j tais que existe um caminho direcionado de 5 para j em G. A Figura 4.9(3) mostra a componente for-
temente conexa construída pelo algoritmo após o final da segunda iteração do laço mais externo, composta pelo
conjunto de vértices S2 = {4, 5, 6, 8}.

(1) Vértice escolhido e rótulos + (2) Rótulos – (3) Segunda componente

Figura 4.9 Segunda iteração do algoritmo de Roy – segunda componente

A solução final do algoritmo está exi-


bida na Figura 4.10, onde são destacadas
as duas componentes conexas S1 e S2 do
grafo. Em cada iteração do algoritmo
uma componente fortemente conexa é
determinada. Portanto, se aplicado a um
grafo não direcionado, o algoritmo de-
termina que o grafo é conexo em apenas
uma iteração do laço mais externo.

Figura 4.10 Componentes fortemente conexas

Complexidade Roy
A cada iteração do laço mais externo do algoritmo do quadro Roy, pelo menos um vértice é removido do conjunto
V. Em cada um dos laços internos é necessário o exame do O(n) vértices quando utilizada uma lista de adjacência
para representar o grafo. Portanto, o algoritmo pode ser implementado em O(n2). Hopcroft & Tarjan (1973) apre-
sentam um algoritmo que resolve o problema em tempo proporcional ao máximo entre n e m.

O(n2)

Algoritmo de Warshall para Fechos Transitivos

O algoritmo de Warshall (1962), apresentado no quadro Warshall, calcula o fecho transitivo de um grafo. O al-
goritmo constrói uma sequência de grafos Gi, 0 ≤ i ≤ n, representados por suas matrizes de adjacência, através da
194 Grafos

adição de arestas. Considere Gi-1 um grafo onde existem arestas (i,j) tal que j  Γ+(i) e, para cada j  Γ+(i), existem
arestas (j,k) onde k  Γ+(j), então o grafo Gi é formado pela adição das arestas (i,k) ao grafo Gi-1, caso essas arestas
já não pertençam a Gi-1.
As Figuras 4.11(3)-(4) ilus-
tram a execução do algoritmo
A Warshall para o grafo da Figura 4.11(1),
cuja matriz de adjacência é
Ler G=(N,M) {direcionado}, sendo A sua matriz de adjacência mostrada na Figura 4.11(2).
T←A Na iteração i = 1, é adicionado
Para i ← 1,...,n Faça 1s à matriz T correspondente
Para j ← 1,...,n Faça
às arestas (2,4) e (3,4). Na ite-
Se T[j,i] = 1
Para k ← 1,...,n Faça
ração i = 2, T não se modifica,
Tjk = Tjk OR Tik uma vez que o conjunto de an-
Fim_Para tecessores do vértice 2 é vazio.
Fim _Para A matriz T também não é mo-
Fim _Para dificada na iteração i = 3, uma
vez que as arestas que seriam
adicionadas nesta iteração já
se encontram no grafo corres-
pondente a T. Na iteração i = 4, é adicionado o elemento 1 correspondente à aresta (1,5). Na iteração i = 5, a matriz
não se modifica, uma vez que o vértice 5 não possui vértices sucessores. O fecho transitivo do grafo da Figura
4.11(1) é mostrado na Figura 4.11(5).

0 0 0 1 0
1 0 1 0 1
A= 1 0 0 0 1
0 0 0 0 1
0 0 0 0 0

(1) Grafo G (2) Matriz de adjacência de G

0 0 0 1 0 0 0 0 1 0
1 0 1 0 1 1 0 1 1 1
T= 1 0 0 0 1 T= 1 0 0 1 1
0 0 0 0 1 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0

(3) Matriz T após i = 1, 2, 3 (4) Matriz T após i = 4, 5 (5) Fecho transitivo de G

Figura 4.11 Aplicação do algoritmo de Warshall


CAPÍTULO 4  Caminhos 195

Complexidade Warshall
O algoritmo de Warshall (1962) é O(n3), uma vez que cada comando Para aninhado examina sempre n vértices do
grafo e cada vértice pode possuir O(n) antecessores e O(n) sucessores.

O(n3)

4.2 Caminhos em Grafos


Dentre os vários tipos de caminhos que existem em um grafo, o caminho mais curto é um dos mais importantes,
não só por suas aplicações práticas diretas, mas por fazer parte de vários outros problemas em grafos.

O caminho mais curto em grafos possui diversas variantes, algumas caracterizam


problemas de otimização e são NP-Difíceis.
Esses casos serão estudados no item 4.6 – Variantes para o Caminho mais Curto

Caminho mais Curto – Grafo Não Ponderado


O caminho mais curto entre os vértices v e w de um grafo G não ponderado é aquele A determinação do caminho
que acumula o menor número de arestas entre os referidos vértices. mais curto entre qualquer par
de vértices de G em um grafo
não ponderado ou ponderado
Caminho mais Curto – Grafo Ponderado (ambos os casos) é

O caminho mais curto entre os vértices v e w de um grafo G ponderado em arestas é


aquele cuja soma dos pesos das arestas tem o menor valor possível dentre todos os Polinomial
caminhos existentes entre v e w.

(1) Grafo não ponderado (2) Caminho mais curto entre v e w

Figura 4.12 Caminho mais curto em grafo não ponderado


196 Grafos

(1) Grafo ponderado (2) Caminhos mais curto entre v e w

Figura 4.13 Caminho mais curto em grafo ponderado

Caminho mais Longo NP-Difícil


O caminho mais longo em um grafo G é aquele que acumula o maior valor possí-
vel dentre todos os caminhos existentes entre v e w (grafo ponderado) ou percorre o Demonstração em
maior número de arestas entre os referidos vértices (grafo não ponderado). Karger et al. (1997).
Zhang & Li (2007) relatam al-
goritmos para o problema.

As Figuras 4.14(1) e (2) apresentam os caminhos mais longos entre os vértices v e w dos grafos das Figuras
4.12(1) e 4.13(1), respectivamente.

(1) Caminho mais longo do grafo não ponderado (2) Caminho mais longo do grafo ponderado

Figura 4.14 Caminhos mais longos


CAPÍTULO 4  Caminhos 197

Caminho mais Curto com Custos nos Vértices Polinomial


O caminho mais curto entre os vértices i e j de um grafo G ponderado em vértices
e arestas é aquele cuja soma dos pesos das arestas e dos vértices tem o menor valor
(ver exercício solucionado no
possível dentre todos os caminhos existentes entre i e j.
1)

A Figura 4.15(2) apresenta o caminho mais curto com custos nos vértices do grafo da Figura 4.15(1). Sempre
que um vértice é incluído no caminho, o custo de seu vértice é adicionado ao custo do caminho. No grafo da Figura
4.15(1) o caminho mais curto tradicional entre i e j é passando por d no valor de 4 unidades. Todavia, o caminho
com custos nos vértices é i-b-c-j no valor de 10 unidades.

(1) Grafo G (2) Caminho mais curto com custos nos vértices

Figura 4.15 Caminho mais curto com custos nos vértices

Caminho Disjunto em Arestas


Os dois conceitos presente-
Dois caminhos v-w são ditos disjuntos em arestas quando não possuem aresta em
mente descritos dão base a
comum.
importantes problemas da
Partição de G em Caminhos Disjuntos Teoria dos Grafos e da Oti-
mização Combinatória. Al-
Dado um grafo G=(N,M), uma partição de G em caminhos disjuntos em vértices é um guns desses problemas serão
conjunto de caminhos P1 = (N1, M1), ..., Pr = (Nr , Mr) em G, tais que N1 ...  Nr = N e abordados no atual tópico.
Ni  Nj = para quaisquer i, j, i  j, 1  i,j  r.

A Figura 4.16(1) mostra um grafo e dois vértices v e w para os quais é possível construir diversos caminhos
diferentes entre eles. As Figuras 4.16(2)-(3) exemplificam dois caminhos disjuntos em arestas para os vértices v e
w do grafo da Figura 4.16(1). Dois caminhos disjuntos em arestas não são, necessariamente, disjuntos em vértices,
como é mostrado na Figura 4.16(2), onde o vértice z participa dos dois caminhos disjuntos em arestas entre v e w.
Caminhos disjuntos em vértices são sempre disjuntos em arestas. A Figura 4.16(3) mostra três caminhos disjuntos
em vértices entre v e w. Pode-se observar que todos os vértices do grafo, exceto v e w, participam de algum dos
caminhos. A Figura 4.16(3) destaca um dos caminhos v-w que cobrem todos os vértices de G.
198 Grafos

(1) Grafo G (2) Caminho 1 (3) Caminho 2

(4) Partição em caminhos disjuntos (5) Destaque de um caminho v-w

Figura 4.16 Caminhos disjuntos em arestas

O Problema dos Caminhos Disjuntos em Arestas


p
Dados um grafo G=(N,M) não direcionado e um conjunto S de pares de vértices terminais, o pro-
blema dos caminhos disjuntos em arestas consiste em conectar através de caminhos disjuntos
em arestas tantos pares do conjunto S quantos forem possíveis.

O Problema dos Caminhos Disjuntos em Vértices


p
Dados um grafo G=(N,M) não direcionado e um conjunto S de pares de vértices terminais, o pro-
blema dos caminhos disjuntos em vértices consiste em conectar através de caminhos disjuntos
em vértices tantos pares do conjunto S quantos forem possíveis.

Para um número fixo de pares de vértices terminais, os problemas de caminhos disjuntos em grafos não direcio-
nados são polinomiais. Os dois problemas anteriormente descritos possuem aplicações na otimização de redes de
comunicações (Abbas, 2007). Os problemas de otimização associados aos problemas de caminhos disjuntos visam
CAPÍTULO 4  Caminhos 199

minimizar funções objetivo específicas. Isso inclui minimizar a soma total dos custos dos caminhos (problemas
chamados de Min_Sum) ou minimizar o maior custo de certos caminhos (problemas chamados de Min_Max).
Os problemas da classe Min_Max são NP-difíceis para k≥2 tanto para caminhos disjuntos em arestas ou vértices
quanto para os casos direcionados ou não.

❂ Caminhos Disjuntos – Trabalhos sobre o Tema

Fortune et al. (1980) demonstram que, em grafos direcionados, os problemas de caminhos disjuntos são NP-completos
a partir de k ≥ 2. Robertson & Seymour (1990) demonstram que, para um valor fixo de k, o problema dos k caminhos
disjuntos em vértices é polinomial. Andrews & Zhang (2005), Rao & Zhou (2006) e Chekuri & Khanna (2007) apresen-
tam trabalhos atuais sobre o tema.

4.3 Algoritmos para o Caminho mais Curto


O presente item trata do estudo de algoritmos associados à determinação de caminhos mais curtos em grafos.
A Tabela 4.1 resume os principais trabalhos publicados na literatura e seu objetivo é mostrar uma visão ampla
desses algoritmos. Os demais tópicos do presente item desenvolverão os mais conhecidos algoritmos para o tema.

Tabela 4.1 – Evolução dos algoritmos para solução do caminho mais curto

Trabalho Técnica Utilizada Complexidade


2
Dijkstra (1959) Seleciona o nó de menor potencial O(n )
Ford (1956), Moore (1957),
Técnica de rotulação FIFO O(mn)
Bellman (1958)
Ford & Fulkerson (1962) Técnica de rotulação FIFO O(mn)
Floyd (1962) Técnica da “operação tríplice” O(n3)
Hu (1968) Algoritmo matricial O(mn)
Dial (1969) “Buckets e FIFO” O(m+Cn)*
Pape (1974) Incremental sobre um conjunto restrito de nós Θ(n2n)
Pallottino (1984) Incremental sobre um conjunto restrito de nós O(n2m)
Glover et al. (1984) e (1985) Combinação das abordagens Dijkstra e F-M-B O(mn)
Kelin & Reif (1988) Algoritmos paralelos O(n2/3log7/3n (logn+logD))**
Goldberg & Radzik (1993) Manipulação de conjuntos de rotulação O(nm)
Cohen (1996) Algoritmos paralelos O(log4n)
Algoritmo paralelo para caminho mais curto em grafo
Träff & Zaroliagis (1996) O( (n2ε+n1-ε) logn)***
planar
Henzinger et al. (1997) Caminho mais curto em grafos planares O(n3/4 L logn)****
Aperfeiçoamento da abordagem de Thorup (1990) – em
Pettie & Ramachandran (2005) O(m + n log log n)
bucket-heap
* A constante C é um limite superior para o peso das arestas.
** D é a soma dos pesos das arestas.
*** 0<ε <1/2
200 Grafos

**** L é o valor absoluto do maior comprimento negativo de uma aresta.

Algoritmo de Dijkstra

Dijkstra (1959) apresentou um algoritmo de rotulação de vértices para encontrar os caminhos mais curtos de uma
origem para todos os demais vértices em grafos com custos positivos nos arcos. O algoritmo é apresentado no
quadro Dijkstra, utilizando indução e ajuste, uma estratégia eficiente e de fácil implementação computacional.

A Dijkstra
Ler G = (N,M) e D=[dij ], onde dij é o custo da aresta (i,j)
dt[1] ← 0
rot[1] ← ∞
Para i ← 2 até n Faça
dt[i ] ← ∞
rot[i ] ← 0
Fim_Para
A ← {N }
F←
Enquanto F ≠ N Faça
r ← j  A, tal que dt[j ] é mínimo dentre os elementos de A
F ← F  {r}
A ← A \ {r}
V←V\F
Para i  V Faça
p ← min {dt[i ], (dt[r] + dri)}
Se p < dt[i ]
dt[i ] ← p
rot[i ] ← r
Fim_Se
Fim_Para
Fim_Enquanto

O algoritmo utiliza duas listas de vértices: a lista dos nós fechados (F) e a lista dos nós abertos (A). Um nó está
na lista F se o caminho mínimo da origem até aquele vértice já é conhecido, caso contrário o nó se encontra na
lista A. O algoritmo mantém um vetor dt e um vetor rot. O i-ésimo elemento do vetor dt guarda a distância calcu-
lada pelo algoritmo entre o vértice origem (vértice 1) e o vértice de índice i. O i-ésimo elemento guarda o vértice
anterior ao vértice i no caminho entre a origem e o vértice i, segundo a distância calculada. No início, o algoritmo
atribui o valor zero para dt[1], a distância do vértice 1 a ele mesmo, e atribui infinito para rot[1]. Os demais vértices
do grafo têm o valor infinito atribuído à distância entre eles e a origem. O valor de rot dos demais vértices é zero.
A lista de nós abertos recebe N e a lista de nós fechados, inicialmente, é vazia. O algoritmo itera até que todos os
vértices tenham sido incluídos na lista F. Em cada iteração o algoritmo escolhe e remove um vértice da lista A. O
vértice r escolhido é aquele que tiver o menor valor dt[r]. O vértice é incluído na lista F e todos os seus vizinhos
(caso não direcionado) ou sucessores (caso direcionado) que não se encontram na lista F são examinados. Tais
vértices formam o conjunto V do quadro Dijkstra. Para cada vértice i de V, verifica-se se a distância da origem até ele é
maior que a distância da origem até r mais o valor da aresta dri. Em caso positivo, o caminho da origem até o vértice
i passando pelo vértice r é menor do que o caminho anteriormente encontrado entre a origem e i. Neste caso, o
valor dt[i] é atualizado com dt[r] + dri e rot[i] é atualizado com r, indicando que o vértice anterior a i no caminho
CAPÍTULO 4  Caminhos 201

entre a origem e i é o vértice r. Aplicando o algoritmo do quadro Dijkstra ao grafo da Figura 4.17(1) e, tomando-se
como origem o vértice “a”, a etapa de inicialização produz o grafo rotulado da Figura 4.17(2).

(1) Grafo G

(2) Rotulação após primeiro laço do algoritmo

Figura 4.17 Rotulação do algoritmo de Dijkstra

Na Figura 4.17(2) observa-se que para cada vértice w existe um rótulo com dois valores: rot[w], o primeiro
número, e dt[w], o segundo número. Na etapa de inicialização, os vértices do grafo, com exceção de “a”, recebem
na primeira posição do rótulo rot[w]=0, e valor ∞ para a segunda posição, representando que dt[w] ainda não foi
calculado ou não existe. No caso do vértice “a”, rot[a] é “a” por ser o primeiro vértice do caminho.
A Figura 4.18(1) ilustra o exame dos vértices adjacentes ao vértice origem, no caso o vértice “a”. Nesta etapa os
valores de dt e de rot dos vértices “b”, “c” e “d” são revistos. Estes vértices são alcançados por caminhos com origem
em “a”, que acumulam distâncias menores que as constantes da segunda posição de seu rótulo. A rotulação destes
vértices é atualizada de modo a expressar a distância acumulada recém-calculada. Assim, o caminho que chega ao
vértice “b” recebe a marca de sua origem, rot[b] = a, bem como o valor dt[b] = 60, correspondendo à aresta (a,b).
Do mesmo modo, os vértices “c” e “d” têm seus rótulos atualizados. Neste ponto do algoritmo tem-se F = {a} e A =
{b, c, d, e, f, g, h, i, j}. Os vértices em F são coloridos de azul.
202 Grafos

(1) Exame do vértice “a”

(2) Exame do vértice “d”

Figura 4.18 Exames dos vértices “a” e “d” do grafo

Em uma nova iteração do “enquanto”, um dos vértices de A é escolhido. A escolha deste vértice é realizada de
acordo com o critério guloso do algoritmo de Dijkstra. O vértice a ser examinado, em cada iteração, é aquele que
acumula o menor valor relativo à distância entre ele e o vértice origem, o segundo valor do rótulo. No exemplo,
o vértice a ser examinado na segunda iteração é “d”. A Figura 4.18(2) mostra que os vértices “b”, “c”, “e” e “f ” são
vizinhos de “d” e estão na lista A. Os rótulos dos vértices “b” e “c” não são alterados, uma vez que a inclusão do
vértice “d” no caminho da origem a cada um deles não produz um caminho menor que o existente anteriormente.
Por outro lado, os vértices “e” e “f ” têm seus rótulos alterados, mostrando que existem caminhos de “a” até “e” e de
“a” até “f ” passando por “d” com custos 68 e 92, respectivamente.
O terceiro vértice a ser examinado é “c”, que acumula 54 no seu rótulo de distância (Figura 4.19(1)). O único
adjacente a “c” que está em A é “e”. A rotulação de “e” não é alterada pelo exame de “c”. Na quarta iteração o vértice
“b” é selecionado (Figura 4.19(2)). O único vértice adjacente a “b” que não está em F é o vértice “f ”. O rótulo de “f ”
é atualizado, pois o caminho de “a” até “f ” passando por “b” é menor que o anteriormente encontrado que passava
por “d”.
CAPÍTULO 4  Caminhos 203

(1) Exame do vértice “c”

(2) Exame do vértice “b”

Figura 4.19 Exames dos vértices “c” e “b” do grafo

Nas demais iterações, os vértices “e”, “f ”, “g”, “h” e “j” são inseridos na lista F. As Figuras 4.20(1), (2), (3) e (4)
exibem os exames dos vértices “e”, “f ”, “g” e “h”. A Figura 4.21(1) mostra o exame do vértice “j” e a Figura 4.22
exibe o menor caminho de “a” até “j” que passa por “b”, “f ” e “h”, nesta ordem, e tem custo 139. O menor caminho
entre o vértice “a” e um vértice qualquer do grafo pode ser recuperado através dos valores em rot de cada vértice,
conforme mostra a Figura 4.17 para o vértice “j”. O vértice que rotulou “j” foi “h”, o que rotulou “h” foi “f ” e daí
por diante até chegar ao vértice “a”. Observe que não se faz necessário examinar o vértice “i”, uma vez que o vértice
destino “j” foi examinado. Se o objetivo fosse encontrar o menor caminho do vértice “a” aos demais do grafo, seria
necessário examinar “i”.
204 Grafos

(1) Exame do vértice “e”

(2) Exame do vértice “f ”

(3) Exame do vértice “g”


CAPÍTULO 4  Caminhos 205

(4) Exame do vértice “h”

Figura 4.20 Exames dos vértices “e”, “f”, “g” e “h” do grafo

(1) Exame do vértice “j”

(2) caminho mais curto

Figura 4.21 Exame do vértice “j” e caminho mais curto


206 Grafos

Prova: A demonstração de que o algoritmo de Dijkstra


está correto será feita por indução em F. Considerando
Teorema 4.1 que, se o nó i está em F, então dt[i ] é o caminho mais
curto da fonte até o vértice i.
O algoritmo de Dijkstra encontra o caminho mais curto
de um vértice fonte aos demais vértices do grafo. Base da indução: No início F só contém o vértice 1 (fonte)
e o teorema vale trivialmente.
Hipótese da indução: A hipótese vale para todos os nós de
F atéé iimediatamente
di antes d
da iinserção d
de um vértice
é i i. i
Passo da indução: Se o vértice i foi escolhido pelo algoritmo, então dt[i ] é mínimo dentre todos os vértices em A.
Deve-se mostrar que dt[i ] é o comprimento do menor caminho entre o vértice origem e i. Supondo o contrário, ou seja, que
existe pelo menos um vértice x no menor caminho entre a origem e i, que não pertence ao caminho atual de comprimento
dt[i ], tal que dt[x] < dt[i ] e x está em A. Nesse caso, o algoritmo deveria ter escolhido x em vez de i. Mas o algoritmo escolheu
i, significando que este nó x não existe. Portanto, quando i é adicionado a F o caminho mais curto da origem a i é encontra-
do. „

Complexidade Dijkstra
Para que F contenha todos os vértices do grafo, são necessárias n iterações do “enquanto”. Sem utilizar estruturas
de dados especiais, as ações do tipo (1), utilizando uma busca em lista linear, devem percorrer todos os vértices do
conjunto A no pior caso, consumindo O(n) comparações. As ações do tipo (2) podem envolver a atualização de O(n)
vértices. Assim, uma implementação simples do o algoritmo de Dijkstra teria uma complexidade O(n2). Todavia, uma
implementação mais eficiente de (1) poderia utilizar uma heap – lista de prioridades e uma lista de adjacência para
representar o grafo. A montagem da heap com os elementos de A exige O(n) operações e pode ser executada antes
do comando “enquanto”. Para encontrar o menor elemento da heap é necessária uma operação, e para atualizá-la são
necessárias O(logn) operações. Utilizando a estratégia anteriormente descrita a complexidade da etapa (1) cai para
O(logn). Podem ser examinadas pelo algoritmo, ao todo, O(m) arestas na etapa (2). Se durante o exame de uma aresta
é detectado que o rótulo do vértice deve ser modificado, a heap deve ser atualizada com o novo valor, custando essa
operação O(log n). Portanto, a complexidade do algoritmo que utiliza lista de adjacência e lista de prioridades é O((m
+ n)log n). Consequentemente, se o grafo for denso é preferível utilizar a implementação sem lista de prioridades.
Entretanto, para um grafo esparso a implementação com a lista de prioridades é mais vantajosa.

Como o algoritmo emprega um critério guloso para fechar a cada iteração o vértice aberto e de menor caminho
acumulado, torna-se incapaz de calcular o caminho mais curto em grafos com arestas de custo negativo. O algorit-
mo pode ser utilizado para encontrar o caminho mais curto entre todos os pares de vértices do grafo, desde que seja
executado uma vez para cada vértice como origem. Nessa situação a complexidade do método seria multiplicada por
n, tornando-se O(n3) na implementação sem estruturas de dados especiais. Vários trabalhos foram dedicados a obter
uma implementação eficiente do algoritmo de Dijkstra. A Tabela 4.2 resume a recente evolução das implementações.
p ç
A letra c usada na tabela é o comprimento do maior arco do grafo que, por simplificação, pode ser considerado
nsiderado
ssiid
der
deera
rado
raddo log
logg c
O(n2)

Tabela 4.2 Evolução da complexidade das implementações do algoritmo de Dijkstra


Ano Autores Complexidade
1987 Fredman & Tarjan O(m + nlog n)

1990 Ahuja et al.

1996 Raman

1997 Raman O (m + n(logcloglogc)1/3)


1999 Thorup O (m) – grafo não direcionado
2000 Hagerup O (m loglog c)
CAPÍTULO 4  Caminhos 207

2000a Thorup O (m loglog n)

Algoritmo de Ford-Moore-Bellman

Do mesmo modo que o algoritmo de Dijkstra, este algoritmo calcula o menor caminho de uma fonte s a todos
os demais vértices de um grafo. O algoritmo de Ford-Moore-Bellman, assim denominado em homenagem aos
trabalhos simultâneos dos pesquisadores Lester Ford (1956), Edward Moore (1957) e Richard Bellman (1958),
publicados em épocas diferentes, abre mão da possibilidade de fechar um vértice a cada iteração e se obriga a exa-
minar todos os vértices até que melhorias não sejam mais possíveis. Utilizando tal estratégia, o algoritmo é capaz
de calcular caminhos mais curtos em grafos com arestas negativas. A ideia principal que baseia os algoritmos apre-
sentados pelos três pesquisadores é que um caminho de s para j com k+1 arestas pode ser obtido de um caminho
de s para j com k arestas. O critério de parada está baseado no fato de que, se em alguma iteração todos os rótulos
dos vértices permanecerem inalterados, não haverá melhorias nas próximas iterações. Uma possível descrição do
algoritmo é apresentada no quadro Ford-Moore-Bellman, onde o vértice 1 é considerado como a origem. O algo-
ritmo é referenciado como FMB.
O algoritmo mostrado no quadro Ford-Moore-Bellman também utiliza os vetores dt e rot. Inicialmente
dt[1] e rot[1] recebem valores 0 e ∞, respectivamente. No primeiro laço “para”, os valores de dt e rot de cada
vértice diferente do vértice origem são iniciados. Os vértices na lista de sucessores do vértice origem têm
seus valores em dt iniciados com os pesos das arestas correspondentes e seus rótulos iniciados com 1. São
atribuídos valores ∞ e 0 para dt e rot, respectivamente, para os demais vértices. Dentro do laço principal,
a variável booleana altera recebe valor “Falso”. Esta variável controla se houve alteração de pelo menos um
valor dt, e rótulo correspondente, nas iterações dos dois laços mais internos. Ao final de cada iteração do
laço mais externo, se a variável altera permanecer com valor “Falso”, o algoritmo é encerrado, uma vez que
não houve alteração de qualquer valor dt. Para cada vértice i diferente da origem é definido um conjunto V
com os antecessores de i. No laço mais interno é feita a verificação da existência de um caminho mais curto
até o vértice i. Caso um menor caminho para i seja encontrado, os valores de dt e rot correspondentes a i
são atualizados e a variável altera recebe valor “Verdadeiro”. A Figura 4.22 apresenta o grafo exemplo para a
execução do algoritmo apresentado no quadro Ford-Moore-Bellman.

Figura 4.22 Grafo para o exemplo do algoritmo de Ford-Moore-Bellman


208 Grafos

A Dijkstra
Ler G = (N,M) e D=[dij]
dt[1] ← 0
rot[1] ← ∞
Para i ← 2 até n Faça
dt[i ] ← d1i
Se  (1,i )  M
rot[i] ← 1
Senão rot[i ] ← 0; dt[i ] ← ∞
Fim_do_Para
Para k ← 1 até n-1 Faça
altera ← ‘Falso ’
Para i ← 2 até n Faça
V ← Γ–(i)
Para j  V Faça
Se dt[i] > dt[j]+dji
dt[i] ← dt[j]+dji
rot[i] ← j
altera ← ‘Verdadeiro’
Fim_Se
Fim_Para
Fim_Para
Se altera = ‘Falso’
k←n
Fim_Para

Após a execução do primeiro laço “para” os vetores dt e rot são:

1 3 ∞ ∞ ∞ 1 3 0 0 0
2 3 4 5 6 2 3 4 5 6

dt rot

Para k = 1 e i = 2, tem-se V = {1}. A distância expressa em dt[2] é comparada com o resultado de dt[1] + d12 e
os vetores não são alterados na análise do vértice 2. Os mesmos cálculos são feitos para os vértices 3 a 6, conforme
mostrado a seguir. As setas marcam os pontos onde os vetores dt e rot são alterados.
Iteração com k = 1

i = 4, V = {2, 3, 5}
i = 3, V = {1, 2} j = 2, dt[2] + d24 = 1 + 3 = 4 ← i = 5, V = {2, 6}
j = 1, dt[1]+ d13 = 0 + 3 = 3 j = 3, dt[3] + d34 = 3 + 2 = 5 j = 2, dt[2] + d25 = 1 + 2 = 3 ←
j = 2, dt[2] + d23 = 1 + 1 = 2 ← j = 5, dt[5] + d54 = ∞ + (–3) = ∞ j = 6, dt[6] + d65 = ∞ + 3 = ∞
I=3 I=4 I=5
i = 6, V = {4}
j = 4, dt[4] + d46 = 4 + 2 = 6 ←
I=6
Ao final da iteração com k = 1 os valores constantes nos vetores dt e rot são:
CAPÍTULO 4  Caminhos 209

1 2 4 3 6 1 2 2 2 4
2 3 4 5 6 2 3 4 5 6
dt rot

Durante a iteração para k = 2, os vetores dt e rot são alterados para os vértices 4 e 6. Um novo caminho mais curto
entre os vértices 1 e 4 é descoberto passando pelo vértice 5, onde dt[5] + d54 = 3 + (–3) = 0. Esta modificação resulta,
também, na diminuição do caminho entre os vértices 1 e 6. No final da iteração para k = 2, os vetores dt e rot são:

1 2 0 3 2 1 2 5 2 4
2 3 4 5 6 2 3 4 5 6
dt rot

Na iteração onde k = 3, os vetores dt e rot não são alterados. Assim a variável “altera” permanece com valor ‘F’,
fazendo com que k receba n, finalizando a execução do algoritmo.
O caminho entre a origem e um vértice qualquer é recuperado a partir do vetor rot, do mesmo modo como foi
apresentado no algoritmo de Dijkstra. Por exemplo, para recuperar o caminho entre os vértices 1 e 6 no exemplo
apresentado para o grafo da Figura 4.22, basta tomar o vetor rot resultante do algoritmo. O elemento em rot[6] é 4,
indicando que o vértice anterior ao 6 no caminho entre 1 e 6 é o vértice 4. Verifica-se então o elemento em rot[4]
que é 5. As verificações são feitas iterativamente até que o valor 1 seja encontrado. Continuando o exemplo, o va-
lor de rot[5] é 2 e o valor de rot[2] é 1. Portanto, o caminho mais curto entre 1 e 6 é 1-2-5-4-6 com custo 2, como
indicado em dt[6].
A existência de um circuito negativo no grafo pode ser detectada bastando, para isso, verificar no final do
algoritmo se a variável “altera” tem valor ‘V’. Neste caso, as n-1 iterações do k foram realizadas e houve alteração
no vetor dt na última iteração. Este fato caracteriza a existência de um circuito negativo. Esta situação é ilustrada
tomando como exemplo o grafo da Figura 4.23, o qual possui um circuito negativo entre os vértices 4 e 5.

Figura 4.23 Grafo com circuito negativo

Ao aplicar o algoritmo FMB ao grafo da Figura 4.23, os vetores dt e rot iniciais são os mesmos do exemplo
anterior. A Figura 4.24 mostra os vetores ao final de cada uma das n-1 iterações do k. Verifica-se que toda vez que
um menor caminho até o vértice 4 é encontrado, também é encontrado um menor caminho para o vértice 5 e vice-
-versa. O vetor dt é continuamente modificado devido à existência do circuito negativo.
210 Grafos

k=1 1 2 4 3 6 1 2 2 2 4
k=2 1 2 0 –1 –2 1 2 5 4 4
k=3 1 2 –4 –5 –2 1 2 5 4 4
k=4 1 2 –8 –9 –6 1 2 5 4 4
k=5 1 2 –12 –13 –10 1 2 5 4 4
2 3 4 5 6 2 3 4 5 6
dt rot

Figura 4.24 Aplicação do FMB ao grafo da Figura 4.19

Complexidade Ford-Moore-Bellman
Após a inicialização, são executadas, no máximo, n-1 iterações do k. Em cada uma destas iterações são calculados
caminhos com k arestas entre a origem e cada um dos demais vértices do grafo. Para cada vértice, a lista dos seus
antecessores é examinada. Uma vez que o rótulo do vértice origem não é alterado, o exame deste antecessor pode ser
descartado. Deste modo, para cada vértice, no máximo, n-2 antecessores são examinados. Cada exame consiste ape-
nas de operações de adição e comparação. Portanto, a complexidade do algoritmo apresentado é O(n3).

O(n3)

Algoritmo de Floyd-Warshall

O algoritmo proposto por Floyd (1962) é baseado em um algoritmo apresentado por Warshall (1962) para o
cálculo de fechos transitivos em um grafo. O algoritmo de Floyd (1962), frequentemente chamado de algoritmo
de Floyd-Warshall, calcula o menor caminho entre todos os pares de nós do grafo. O algoritmo, apresentado no
quadro Floyd-Warshall, compara os caminhos entre os vértices i e j passando por k vértices intermediários, k = 1,
...,n. A matriz L guarda os menores caminhos entre os vértices i e j, sendo iniciada com os elementos de D, onde,
se existe aresta entre i e j, dij é a distância da aresta (i,j), caso contrário dij = ∞.

A Floyd-Warshall
Ler G = (N,M) e D=[dij]
L ← D { L = [ lij ] }
Para k ← 1 até n Faça
Para i ← 1 até n Faça
Para j ← 1 até n Faça
Se lij > (lik + lkj )
lij ← (lik + lkj )
Fim_Se
Fim_Para
Fim_Para
Fim_Para
CAPÍTULO 4  Caminhos 211

O grafo utilizado como exemplo para a execução do algoritmo de Floyd-Warshall é mostrado na Figura 4.25 e
sua matriz L inicial é mostrada na Figura 4.26. Em cada iteração do laço mais externo, o k-ésimo vértice é consi-
derado um vértice intermediário no caminho de i a j.

Figura 4.25 Grafo exemplo para o algoritmo de Floyd-Warshall

1 2 3 4 5 6

1 ∞ 1 ∞ ∞ ∞ ∞
2 ∞ ∞ 1 3 2 ∞
3 3 ∞ ∞ 2 ∞ ∞
4 ∞ ∞ ∞ ∞ ∞ 2
5 ∞ ∞ ∞ –3 ∞ ∞
6 ∞ ∞ ∞ ∞ 3 ∞

Figura 4.26 Matriz L do grafo da Figura 4.17

Para k = 1, i = 1 e j = 1,...,6, o vértice 1 é considerado intermediário no caminho entre o vértice 1 e os demais


vértices. Portanto, cada distância l1j é comparada à distância do caminho que tem o vértice 1 como intermediá-
rio, sendo l11 + l1j. Uma vez que l11 = ∞, a iteração onde k = 1, i = 1 e j =1,..., 6 não modifica a matriz L. A matriz
também não é modificada nas iterações onde k =1, i = 2. A matriz é modificada pela primeira vez quando k = 1 e
i = 3. Os cálculos destas iterações são mostrados a seguir. A seta marca a iteração onde ocorre a alteração.

Iteração com k = 1 e i = 3
j = 1 , l31 = min { l31 ; (l31 + l13) } = 3 j = 4 , l34 = min { l34 ; (l31 + l14) } = 2
j = 2 , l32 = min { l32 ; (l31 + l12) } = 4 ← j = 5 , l35 = min { l35 ; (l31 + l15) } = ∞
j = 3 , l33 = min { l33 ; (l31 + l13) } = ∞ j = 6 , l36 = min { l36 ; (l31 + l16) } = ∞

Quando k =1, i = 4, 5 e 6, a matriz não se altera. Portanto, a matriz L resultante da primeira iteração do laço mais
externo (k = 1) é mostrada na Figura 4.27.
212 Grafos

1 2 3 4 5 6

1 ∞ 1 ∞ ∞ ∞ ∞
2 ∞ ∞ 1 3 2 ∞
3 3 4 ∞ 2 ∞ ∞
4 ∞ ∞ ∞ ∞ ∞ 2
5 ∞ ∞ ∞ –3 ∞ ∞
6 ∞ ∞ ∞ ∞ 3 ∞

Figura 4.27 Matriz L do grafo da Figura 4.25, para k = 1

Quando o vértice 2 é considerado intermediário, k = 2, a matriz é modificada nas iterações onde i =1 e


i =3. Os cálculos dessas iterações são listados a seguir.

Iteração com k = 2, i = 1 k = 2, i = 3
j = 1 , l11 = min { l11 ; (l12 + l21) } = ∞ j = 1 , l31 = min { l32 ; (l32 + l23) } = 3
j = 2 , l12 = min { l12 ; (l12 + l22) } = ∞ j = 2 , l32 = min { l32 ; (l32 + l22) } = 4
j = 3 , l13 = min { l13 ; (l12 + l23) } = 2 ← j = 3 , l33 = min { l33 ; (l32 + l23) } = 5 ←
j = 4 , l14 = min { l34 ; (l31 + l14) } = 4 ← j = 4 , l34 = min { l34 ; (l32 + l24) } = 2
j = 5 , l15 = min { l35 ; (l31 + l15) } = 3 ← j = 5 , l35 = min { l35 ; (l32 + l25) } = 6 ←
j = 6 , l16 = min { l36 ; (l31 + l16) } = ∞ j = 6 , l36 = min { l36 ; (l32 + l26) } = ∞

Como é possível observar no cálculo de l33, o algoritmo detecta o circuito de comprimento 5. Nas iterações onde
k = 2 e i = 4, 5 e 6, a matriz não é modificada. Ao final da iteração para k = 2, a matriz L é a mostrada na Figura
4.28. As Figuras 4.29(1) e (2) e 4.30(1) mostram a matriz ao final de cada iteração do loop mais externo. A matriz
da Figura 4.30(2) mostra o resultado final do algoritmo.

1 2 3 4 5 6

1 ∞ 1 2 4 3 ∞
2 ∞ ∞ 1 3 2 ∞
3 3 4 5 2 6 ∞
4 ∞ ∞ ∞ ∞ ∞ 2
5 ∞ ∞ ∞ –3 ∞ ∞
6 ∞ ∞ ∞ ∞ 3 ∞

Figura 4.28 Matriz L do grafo da Figura 4.24 para k = 2


CAPÍTULO 4  Caminhos 213

1 2 3 4 5 6 1 2 3 4 5 6

1 5 1 2 4 3 ∞ 1 5 1 2 4 3 6

2 4 5 1 3 2 ∞ 2 4 5 1 3 2 5

3 3 4 5 2 6 ∞ 3 3 4 5 2 6 4

4 ∞ ∞ ∞ ∞ ∞ 2 4 ∞ ∞ ∞ ∞ ∞ 2

5 ∞ ∞ ∞ –3 ∞ ∞ 5 ∞ ∞ ∞ –3 ∞ –1

6 ∞ ∞ ∞ ∞ 3 ∞ 6 ∞ ∞ ∞ ∞ 3 ∞

(1) Matriz L para k = 3 (2) Matriz L para k = 4

Figura 4.29 Matriz L do grafo da Figura 4.25 para k = 3 e 4

1 2 3 4 5 6 1 2 3 4 5 6

1 5 1 2 0 3 2 1 5 1 2 0 3 2

2 4 5 1 –1 2 1 2 4 5 1 –1 2 1

3 3 4 5 2 6 4 3 3 4 5 2 6 4

4 ∞ ∞ ∞ ∞ ∞ 2 4 ∞ ∞ ∞ 2 5 2

5 ∞ ∞ ∞ –3 ∞ –1 5 ∞ ∞ ∞ –3 2 –1

6 ∞ ∞ ∞ ∞ 3 ∞ 6 ∞ ∞ ∞ ∞ 3 2

(1) Matriz L para k = 5 (2) Matriz L para k = 6

Figura 4.30 Matriz L do grafo da Figura 4.25 para k = 5 e 6

Complexidade Floyd-Warshall
A análise de complexidade desse algoritmo é simples, uma vez que possui três laços aninhados de n operações. No
interior dos laços são executadas operações de comparações e atribuições com complexidade O(k) = 1. Assim, a
complexidade final é O(n3) ou, mais precisamente, Θ(n3).

Θ(n3)
214 Grafos

Caminho mais Curto em Grafo em Camadas

Em vários casos reais a estrutura do grafo é hierárquica, de modo que existe uma partição do conjunto N em s
conjuntos disjuntos N1, N2, .... Ns, de modo que N1  N2  ....  Ns = N e os vértices vizinhos dos vértices em Nk estão
em Nk-1 e Nk+1. Um grafo assim formado é também dito grafo em camadas, onde cada camada é formada por um
conjunto de vértices que compõe a partição.
Grafos em camadas modelam problemas de tomada de decisão, de comunicação em redes de computação, tele-
fonia celular, circuitos eletrônicos etc. (Grünewald et al., 2002). Um grafo em camadas, via de regra, é direcionado
e o caminho deve ser percorrido no sentido da camada mais baixa para a mais alta, ou no sentido inverso. A Figura
4.31 exibe um exemplo de um grafo direcionado em camadas.

Figura 4.31 Grafo em camadas

Para a solução do caminho mais curto em grafos em camadas, pode-se desenvolver um algoritmo de rotulação
que examine os vértices da camada k e as ligações com a camada k + 1. O algoritmo poderá fechar simultaneamen-
te todos os vértices da camada k após examinar as ligações com a camada k + 1. A Figura 4.32 exibe a rotulação do
algoritmo nas quatro primeiras camadas.

1a x 2a camadas 2a x 3a camadas 3a x 4a camadas

Figura 4.32 Rotulação das três primeiras camadas de G


CAPÍTULO 4  Caminhos 215

Por exemplo, o vértice 4 pode ser rotulado pela soma do rótulo do vértice 2 com o peso da aresta 2-4 (que é 7),
ou pela soma do rótulo do vértice 3 com o peso da aresta 3-4 (que é 2). A menor rotulação possível em cada vértice
é a rotulação ótima. Observe que o algoritmo poderá considerar arcos negativos. A Figura 4.33 exibe a rotulação
da última camada e o caminho mais curto.

4a x 5a camadas Solução final

Figura 4.33 Rotulação da quinta camada e caminho mais curto

Qualquer grafo pode ser transformado


em um grafo em camadas pela inclusão
de vértices artificiais e arcos de custo zero.
Considerando-se o grafo da Figura 4.34,
por exemplo.
O grafo pode ser transformado em um
grafo em camadas, como exibido na Figu-
ra 4.35. Para tal, são introduzidos vértices
artificiais que permitem criar novas cama-
das que separem ligações entre supostos
vértices de uma mesma camada – ligações
Figura 4.34 Grafo direcionado 2-3 e 5-4.

Figura 4.35 Grafo direcionado da Figura 4.34 transformado em grafo em camadas


216 Grafos

4.4 Caminhos e Ciclos Hamiltonianos


Em 1856, Thomas Penyngton Kirkman escreveu um trabalho (Kirkman, 1856) que examinava as condições de
existência de ciclos que não repetissem vértices ou arestas desenvolvidos sobre certos tipos de sólidos. O trabalho
examinava um caso semelhante ao representado na Figura 4.36 (Laporte, 2006; Gropp, 2006).

Figura 4.36 Células de abelha de Kirkman

Kirkman havia se deparado com o problema de encontrar um ciclo em um grafo que passasse por todos os vér-
tices de G sem admitir vértices repetidos. Dentre os diversos tipos possíveis de ciclos em grafos, talvez esse seja um
dos de maior importância, tanto sob o aspecto teórico, quanto sob o ponto de vista da aplicação em problemas reais.
Historicamente esse problema de caminhos é denominado Hamiltoniano, devido a Willian Rowan Hamilton, que,
em 1857, propôs um jogo que denominou “Around the World”. O jogo era feito sobre um dodecaedro em que cada
vértice estava associado a uma cidade importante na época. O desafio consistia em encontrar uma rota através dos
vértices do dodecaedro que iniciasse e terminasse em uma mesma cidade, sem nunca repetir uma visita.
O grafo correspondente ao jogo de Hamilton é mostrado na Figura 4.37(1). Uma solução do jogo, em sua ho-
menagem, passou a se denominada ciclo hamiltoniano. Ressalte-se que Hamilton não foi o primeiro a propor esse
problema (Biggs et al., 1986). Uma possível solução está apresentada na Figura 4.37(2). A Figura 4.37(3) mostra o
ciclo hamiltoniano correspondente à solução apresentada na Figura 4.37(2).

(1) Grafo que representa o jogo (2) Uma solução do jogo (3) Um ciclo hamiltoniano

Figura 4.37 O jogo de Hamilton


CAPÍTULO 4  Caminhos 217

Modernamente, a primeira menção conhecida do problema é devida a Hassler Whitney, em 1934, em um semi-
nário na Universidade de Princeton. O menor grafo poliédrico não hamiltoniano é denominado grafo de Herschel,
exibido na Figura 4.38.

Problemas de
Otimização Combinatória NP-Difíceis
associados aos ciclos / caminhos hamiltonianos
serão abordados no Capítulo 7 – O caixeiro-

Figura 4.38 O grafo de Herschel

Grafo Hamiltoniano
Um grafo é dito hamiltoniano se possui um ciclo hamiltoniano. Claramente, um grafo
hamiltoniano é
Grafo semi-hamiltoniano também semi-
hamiltoniano.
Um grafo é dito semi-hamiltoniano se possui um caminho hamiltoniano.

A Figura 4.39(1) exibe um grafo hamiltoniano e a Figura 4.39(2) mostra um grafo semi-hamiltoniano. O cami-
nho da Figura 4.39(3) mostra que os grafos das Figuras 4.39(1) e (2) são semi-hamiltonianos.

(1) Grafo hamiltoniano (2) Grafo não hamiltoniano (3) Caminho hamiltoniano

Figura 4.39 Grafo semi-hamiltoniano


218 Grafos

Os seguintes teoremas são importantes para os grafos hamiltonianos:

O Problema de Decisão associado a determinação de ciclos e caminhos hamiltonianos em


grafos sem propriedades particulares é NP-Completo. (Karp,1972)

Teorema 4.2 (Teorema de Dirac) Teorema 4.6 (Teorema de Fan)


Um grafo G = (N,M) com n ≥ 3 e d(x) ≥ n/2 Um grafo G = (N,M) de ordem n onde Max{d(u),
para todo x  N, é hamiltoniano. d(v)} ≥ n/2 para algum u,v  N com d(u,v) = 2 é
(Dirac, 1952) hamiltoniano.
(Fan, 1984)
Teorema 4.3 (Harary)
Todo grafo hamiltoniano é 2-conexo. Teorema 4.7 (Faudree)
(Harary, 1972) Um grafo G = (N,M) 2-conexo de ordem n onde
Max{N(u)  N(v)} ≥ 2n-1/3 para algum u,v N e
Teorema 4.4 (Teorema de Ore) não adjacentes é hamiltoniano.
Uma condição suficiente para que um grafo G (Faudree et al., 1989)
seja hamiltoniano é que a soma dos graus de cada
par de vértices não adjacentes seja no mínimo n. Teorema 4.8 (Flandrin)
(Ore, 1961) Um grafo G = (N,M) 2-conexo de ordem n
onde d(u)+d(v)+d(w)≥n+ |N(u)  N(v)  N(w)|
Teorema 4.5 (Bondy & Chvátal) para todo conjunto independente u,v,w, é hamil-
Em um grafo G de ordem maior ou igual a três, toniano.
se u e v são dois vértices não adjacentes em G (Flandrin et al., 1991)
com d(u) + d(v) ≥ n, então G é hamiltoniano se e
somente se G  {(u,v) } for hamiltoniano. Teorema 4.9 (Flandrin)
(Bondy & Chvátal, 1976) Todo grafo 3-conexo k-regular com pelo menos
7/2k-7 é hamiltoniano.
(Flandrin et al., 1991)

Dificuldade de decidir se G é hamiltoniano


Decidir se um grafo G é hamiltoniano é NP-completo mesmo que G seja:

Ťh Planar ou cúbico (Garey et al., 1976)


Ťh O quadrado de um grafo
Ťh Bipartido (Krishnamoorthy, 1975)
Ťh Um grafo Grade (Itai et al., 1982)
Ťh Ou ainda seja conhecido um caminho hamiltoniano em G (Papadimitriou
& Steiglitz, 1976)

Os Passeios do Cavalo
i
Os movimentos de um cavalo em um tabuleiro de xadrez, tomados sobre seu
grafo de movimentos, permitem definir trajetórias no tabuleiro que podem ser
associadas aos percursos em grafos.
CAPÍTULO 4  Caminhos 219

A Figura 4.40(1) mostra os possíveis movimentos de um cavalo em um tabuleiro e como formar um grafo de
enumeração desses movimentos. A Figura 4.40(2) exibe um caminho inválido em um tabuleiro 8 × 8 a partir da
posição indicada pelo número 1. As Figuras 4.40(3)-(6) consideram um tabuleiro 3 × 3. A Figura 4.40(3) mostra
uma origem e um destino para o cavalo, cuja representação é apresentada na Figura 4.40(4). A Figura 4.40(5) exibe
uma sequência de movimentos do cavalo e a Figura 4.40(6) mostra um ciclo que inclui todas as possibilidades de
movimento de um cavalo em um tabuleiro 3 × 3.

1a Questão
p
Pode um cavalo, partindo de uma posição qualquer em um tabuleiro de xa-
drez, passar obrigatoriamente uma única vez em todas as casas do tabulei-
ro, retornando à casa de saída?

Pode-se observar que a casa central não pode ser visitada no tabuleiro 3 × 3 e o ciclo exibido não atende ao
enunciado da 1a questão, ou problema π1, do cavalo, que seria a determinação de um ciclo hamiltoniano no tabu-
leiro de xadrez através dos movimentos de saltos do cavalo.

(1) Movimentos possíveis do cavalo (2) Um passeio do cavalo

(3) Movimento (4) Enumeração (5) Grafo (6) Ciclo 3 x 3

Figura 4.40 O caminho do cavalo

Todavia a 1a questão não é a única que pode ser formulada para o cavalo em um tabuleiro de xadrez. É possível
definir outro problema associado ao passeio do cavalo em tabuleiros n × n.
220 Grafos

2a Questão
p
Pode um cavalo, partindo de uma posição qualquer em um tabuleiro de xa-
drez, visitar todas as casas do tabuleiro sem nunca repetir uma casa?

O problema associado à 2a questão pode ser denominado π2 e exige somente que todas as casas do tabuleiro
sejam visitadas sem repetição, contudo não exige um ciclo. Enquanto o problema π1 pretende determinar um pas-
seio do cavalo que corresponda a um ciclo hamiltoniano no grafo de movimentos, π2 procura por um passeio que
corresponda a um caminho hamiltoniano. A Figura 4.41 apresenta uma solução para π2 em um tabuleiro 3 × 10. O
tabuleiro de xadrez tradicional, 8 × 8, admite soluções para π1 e π2.

Figura 4.41 Caminho “hamiltoniano” do cavalo – passando em todas as células

4.5 Caminhos e Ciclos Eulerianos


Supostamente, a Teoria dos Grafos nasceu associada à solução e modelagem de um problema de ciclos. Conta-se
o caso associado a um curioso questionamento que era comum às pessoas da cidade de Königsberg (denominada
atualmente Kaliningrado), durante o século XVIII. A lenda diz que Euler, por ocasião de uma visita à cidade, foi
apresentado a um desafio que não havia sido resolvido por ninguém. Durante a solução do desafio, Euler teria lan-
çado os fundamentos da Teoria dos Grafos. O problema é ilustrado nas Figuras 4.42(1), (2) e (3). Tratava-se de um
rio que dividia a cidade de Königsberg, formando também duas ilhas. As ilhas e as margens da cidade são ligadas
através de sete pontes, como mostra o esquema da Figura 4.42(1).

(1) Plano da cidade de Königsberg (3) Multigrafo


(2) Modelo de representação
século XVIII associado ao modelo

Figura 4.42 Esquema do problema das 7 pontes de Königsberg – século XVIII


CAPÍTULO 4  Caminhos 221

Semelhantemente às questões levantadas sobre o cavalo do jogo do xadrez, a questão dos habitantes de Königs-
berg também aborda percursos em grafos.

3a Questão
p
A partir de algum ponto da cidade de Königsberg – no século XVIII, é possí-
vel fazer uma caminhada que atravesse todas as pontes da cidade somente
uma vez e voltar ao local de origem?

Como no caso do cavalo, o problema anteriormente descrito pode ser modelado por um grafo. O multigrafo é
apresentado na Figura 4.42(3), onde as pontes são representadas pelas arestas e os vértices marcam as regiões deli-
mitadas pelos rios. Estudando o problema, Euler demonstrou, com o auxílio do multigrafo da Figura 4.42(3), que
o percurso pretendido é impossível de ser encontrado. Em virtude da solução de Euler, os percursos que, mesmo
passando por todas as arestas não as repetem, foram denominados Eulerianos – no caso, uma Cadeia Euleriana.
Mas hoje Königsberg é Kaliningrado, uma cidade dentro de um enclave russo entre a Polônia e a Lituânia. A cidade
mudou desde os tempos de Euler, mas o problema não. O novo esquema das pontes é apresentado na Figura 4.43.

(1) Trecho do centro de Kalinigrado – século (3) Multigrafo


(2) Modelo de representação
XXI associado ao modelo

Figura 4.43 Esquema do problema das 7 pontes de Königsberg – século XXI

4a Questão
p
A partir de algum ponto da cidade de Königsberg – no século XXI, torna-
-se possível fazer uma caminhada que atravesse todas as pontes da cidade
somente uma vez e retornar ao local de origem?

Coincidentemente, mesmo após mais de três séculos e duas alterações na disposição das pontes da cidade, con-
tinua sendo impossível realizar um passeio por todas as pontes de Kaliningrado, retornando ao local de origem,
sem que se obrigue o caminhante a repetir uma delas.
Curiosamente, na região central de Recife, Pernambuco, existe uma situação que guarda semelhança com o caso de
Königsberg, ainda que Euler não tenha visitado a cidade. As Figuras 4.44(1) e (2) representam o caso. Surpreendente-
mente, em Recife o caminhante encontra a mesma dificuldade que encontraria para fazer o percurso em Königsberg.
222 Grafos

(1) Centro de Recife – século XXI (2) Grafo associado ao modelo

Figura 4.44 Esquema do problema das 8 pontes de Recife – século XXI

Grafo Euleriano
Um grafo é dito euleriano se possui uma cadeia fechada que passa
por todas arestas. Um caminho euleriano em G
não necessita ser fechado –
começar e terminar no mesmo
Grafo semieuleriano vértice.
Um grafo é dito semieuleriano se possui uma cadeia que passa por
todas as arestas.

A Figura 4.45(1) exibe um grafo semieuleriano. A Figura 4.45(2) exibe uma cadeia euleriana 4-3-1-2-4-5-3
associada ao grafo da Figura 4.45(1).

Figura 4.45 Grafo semieuleriano


CAPÍTULO 4  Caminhos 223

Teorema 4.10
Considerando G um grafo conexo, então:

1. G é euleriano se e somente se todos os vértices em G possuem grau par.


2. G é euleriano se e somente se G é o grafo soma de ciclos disjuntos em arestas.
3. G é semieuleriano se e somente existem exatamente dois vértices com grau ímpar.
4. G é não euleriano se e somente existem dois ou mais vértices com grau ímpar.

Algoritmos para a Determinação de uma Cadeia Euleriana Fechada

A determinação de uma cadeia euleriana fechada possui vários algoritmos em tempo polinomial de solução. O
presente item examinará dois desses algoritmos. Nesta seção, os algoritmos serão apresentados para multigrafos,
os quais serão chamados simplesmente de grafos. Os algoritmos partem do princípio de que o grafo é euleriano, ou
seja, que a condição 1 do Teorema 4.2 (Teorema de Euler) já foi verificada em um passo preliminar.

Algoritmo de Hierholzer

Um dos primeiros algoritmos a serem propostos para este problema foi apresentado por Hierholzer (1873), o
qual é descrito no quadro Hierholzer. No passo 1, o algoritmo inicia por um vértice v escolhido aleatoriamente
e atravessa uma aresta (v,w) de G. A partir de w o algoritmo escolhe uma nova aresta aleatoriamente. O processo
continua até que v seja encontrado novamente, formando uma cadeia fechada C. As arestas de C são removidas de
G. O passo 3 verifica se M = , situação na qual o algoritmo termina e uma cadeia euleriana é encontrada. Caso
contrário, uma nova cadeia fechada H é formada a partir de um vértice v, tal que v  C e grau de v é maior que 0.
Em cada iteração do laço, a cadeia construída na iteração anterior é unida à cadeia da iteração corrente, produzin-
do a cadeia C. No final, C contém a cadeia euleriana fechada de G.

A Hierholzer
Ler os dados de G=(N,M)
1 Escolher um vértice v qualquer de G
2 Construir uma cadeia fechada C, a partir de v, percorrendo as arestas de G de forma aleatória.
3 M1 ← M \ C; K ← (N, M1) // retira de G as arestas de C //
4 Enquanto M1 ≠  Fazer
5 Escolher v tal que d(v) > 0 em K e v  C
6 Construir uma cadeia fechada H, a partir de v, percorrendo as arestas de K de forma aleatória.
7 M1 ← M1\ H
8 C←HC
9 H←
10 Fim do Enquanto
11 Imprimir C

A execução do algoritmo é ilustrada para o grafo da Figura 4.46(1). As arestas pontilhadas da Figura 4.46(2)
mostram a cadeia inicial construída a partir do vértice c nos passos 1 e 2 do algoritmo do quadro Hierholzer. Após
a remoção das arestas de G forma-se o grafo reduzido K, que é exibido na Figura 4.46(3). A cadeia H construída
224 Grafos

na primeira iteração do laço é mostrada na Figura 4.46(4). A cadeia é construída a partir do vértice a. A união das
cadeias C = {c,f,g,i,h,a,b} e H = {a,c,g,c,e,h,d} é mostrada na Figura 4.46(5), onde a cadeia H é inserida antes da
primeira ocorrência do vértice a na cadeia C.

(1) Grafo G

(2) C = {c,f,g,i,h,a,b} (3) Grafo K da 1a iteração

(4) H = {a,c,g,c,e,h,d} (5) C = {c,f,g,i,h,a,c,g,c,e,h,d,a,b}

Figura 4.46 Execução do algoritmo de Hierholzer no grafo da Figura 4.46(1) – 1a Parte


CAPÍTULO 4  Caminhos 225

O grafo considerado na segunda iteração do laço é mostrado na Figura 4.46(6), e a cadeia H mostrada na Figura
4.46(7). A união das cadeias é mostrada na Figura 4.46(8) a qual resulta na cadeia euleriana final.

(6) Grafo K na 2a iteração (7) H = {d,b,e,f,i,e}

(8) C = {c,f,g,i,h,a,c,g,c,e,h,d,b,e,f,i,e,d,a,b,c}

Figura 4.46 Execução do algoritmo de Hierholzer no grafo da 4.46(1) – 2a Parte

Complexidade Hierholzer
O algoritmo de Hierholzer pode ser implementado em O(m) se listas duplamente encadeadas forem utilizadas (ver
exercício resolvido número 5).

O(m)
226 Grafos

Algoritmo de Fleury

Outro conhecido algoritmo para o problema foi proposto por Fleury (1883), o qual é apresentado no quadro
Fleury. O algoritmo também trabalha com um grafo reduzido induzido pelas arestas ainda não marcadas
pelo algoritmo. Inicialmente, todas as arestas estão não marcadas e um vértice v qualquer do grafo é escolhi-
do. O vértice é adicionado à lista C. Em cada iteração uma aresta (v,w) é escolhida para ser percorrida. Neste
ponto, uma importante regra deve ser observada: a regra da ponte. Esta regra diz que se uma aresta (v,w) é
uma ponte no grafo induzido pelas arestas não marcadas, então (v,w) só deve ser escolhida pelo algoritmo
caso não haja qualquer outra opção. A execução do algoritmo é ilustrada para o grafo da Figura 4.47 nas
Figuras 4.48.

A Fleury
Ler os dados de G = (N,M)
Escolher um vértice v qualquer de G; C ← {v}
Repita
Escolher aresta (v,w) não marcada utilizando a regra da ponte
Atravessar (v,w)
C ← C {w}
Marcar (v,w)
v←w
Até que todas as arestas estejam marcadas
C ← C {v}
Imprimir C

Figura 4.47 Grafo G para o exemplo da aplicação do algoritmo de Fleury

As Figuras 4.48(1)-(2) mostram que na primeira iteração é escolhido o vértice d e a aresta (d,g) e na segunda
iteração a aresta (g,c). Neste ponto, v = c e o grafo induzido na terceira iteração (Figura 4.48(3)) possui a ponte (c,b).
Como existem outras arestas adjacentes a c, a aresta (c,b) não é considerada pelo algoritmo nesta iteração onde a
aresta (c,g) é escolhida (Figura 4.48(4)). Na quarta iteração, o vértice g é terminal de uma ponte no grafo induzido
pelas arestas não marcadas (Figura 4.48(5)), portanto, a aresta (g,f) é a única opção do algoritmo (Figura 4.48(6)).
Na iteração seguinte, a aresta (f,c) é percorrida (Figura 4.48(7)) e o algoritmo retorna ao vértice c (Figura 4.48(8))
percorrendo a aresta (c,b), uma vez que a mesma é a única opção (Figura 4.48(9)). A Figura 4.48(10) exibe uma
cadeia euleriana construída pelo algoritmo de Fleury.
CAPÍTULO 4  Caminhos 227

(1) (v, w) = (d, g) (2) (v, w) = (g, c)

(3) Grafo induzido na 3a iteração (4) (v, w) = (c, g)

(5) Grafo induzido na 4a iteração (6) (v, w) = (g, f)

(7) (v, w) = (f, c) (8) Grafo induzido na 6a iteração

(9) (v, w) = (c, b) (10) C = {d, g, c, g, f, c, b, a, d, e, b, d}

Figura 4.48 Execução do algoritmo de Fleury no grafo da Figura 4.47.


228 Grafos

Complexidade Fleury
Em cada iteração do laço principal, uma aresta é marcada, portanto são realizadas m iterações do laço principal. Em
cada uma destas iterações é necessário testar a condição de ponte da aresta escolhida. Utilizando um algoritmo de
percurso em grafos, estaverificação pode ser feita em O(m). O algoritmo de Fleury, neste caso, terá complexidade
O(m2).

Thorup (2000b) apresentou um algoritmo que verifica se uma aresta é uma ponte em e atualiza uma estrutura

auxiliar em O(logn(log2n)3). Portanto, com a verificação proposta por Thorup (2000) o algoritmo de Fleuryy pode
p ser
implementado em O(mlogn(log2n)3).
O(m2)

4.6 Variantes do Caminho mais Curto


Os caminhos em grafos podem ser associados a restrições diversas, especialmente quando representam problemas
do mundo real. Restrições comuns dizem respeito à presença ou ausência de determinados vértices ou arestas na
solução.
Outro conjunto de restrições aborda o tempo, especialmente definindo intervalos de tempo para a visita de vér-
tices ou arestas. Finalmente, os caminhos se associam aos problemas de roteamento, caracterizando-se um grande
número de situações, como, por exemplo, restrições de disponibilidade de combustível, capacidade dos veículos,
trabalho nos vértices, pagamento de pedágio, recolhimento de bônus etc. No presente item, alguns desses modelos
serão caracterizados.

Caminho mais Curto com Janelas de Tempo Decidir se existe um caminho


de comprimento k que atende as
O caminho mais curto com janelas de tempo é o menor caminho entre um condições dos rótulos é
par de vértices v e w, que atende as condições do rótulo [tmin, tmax] para cada
um dos vértices visitados. NP-Completo

Os grafos associados aos problemas de caminho mais curto com janela de tempo são rotulados e ponderados.
Considerando di, o tempo necessário para percorrer a aresta i em qualquer percurso em G e por ci o custo de per-
correr a aresta i. Os valores dos rótulos [tmin, tmax] referem-se aos intervalos de tempo para os quais é permitido
visitar cada vértice. Dado um vértice inicial v e um vértice final w, a soma dos valores de tempo relativos às arestas
percorridas no grafo entre v e w deve respeitar o intervalo definido para o vértice w. Um exemplo é mostrado na
Figura 4.49. A Figura 4.49(1) mostra os intervalos de tempo em que cada vértice pode ser visitado. O rótulo do
vértice w indica que os caminhos válidos ligando v a w devem ter uma duração de, no mínimo, três unidades e,
no máximo, seis unidades de tempo. Os caminhos entre v e w acumulam as unidades de tempo exibidas na Figura
4.49(2). O tempo acumulado no caminho é marcado entre colchetes nas Figuras 4.49(4)-(6). Por exemplo, na Figu-
ra 4.49(4) o número entre colchetes no vértice c diz respeito ao tempo de percurso da aresta (v,c), com tempo igual
a 2. O custo de percorrer a aresta (v,c) é 5, conforme mostrado na Figura 4.49(3). O caminho que vai do vértice v
ao vértice w, passando pelo vértice c (Figura 4.49(4)), tem custo 9 e satisfaz as restrições de tempo de todos os vér-
tices do caminho. O caminho entre v e w mostrado na Figura 4.49(4) também satisfaz as restrições de intervalo de
tempo dos vértices e tem custo 7. O caminho exibido na Figura 4.49(6) não é válido, pois não respeita as restrições
de limite de tempo impostas pelos rótulos dos vértices a e b. O percurso na aresta (v,a), por exemplo, gasta duas
unidades de tempo. Entretanto, o vértice somente pode ser visitado a partir da terceira unidade de tempo. Apesar
de mais barato, o caminho da Figura 4.49(6) não é viável.
CAPÍTULO 4  Caminhos 229

(1) Intervalos de visita (2) Tempos de percurso (3) Custos das arestas

(4) Custo igual a 9 (5) Custo igual a 7 (6) Custo igual a 5

Figura 4.49 Caminho com janela de tempo

O problema possui solução


CC com Vértices de Passagem Obrigatória
Trata-se do caminho mais curto que exige que o caminho entre determinado par de polinomial
vértices inclua obrigatoriamente outros vértices, denominados vértices de passagem

A Figura 4.50 ilustra o conceito para o caminho mais curto entre os vértices 1 e 8, onde o vértice de passagem
obrigatória é o 3. Os caminhos são calculados com base no grafo da Figura 4.50(1). As Figuras 4.50(2) e (3) mos-
tram, respectivamente, os caminhos mais curtos sem e com o vértice 3 obrigatório.

(1) Grafo G

(2) Caminho mais curto tradicional = 10 (3) Caminho mais curto restrito = 11

Figura 4.50 Caminho mais curto com vértices de passagem obrigatória


230 Grafos

CC com Vértices de Reabastecimento


O problema possui solução
Trata-se do caso em que o deslocamento entre determinado par de vértices é realiza-
do por um veículo que possui uma autonomia limitada e menor que o caminho mais
curto entre os pontos que serão ligados. Assim, o veículo deverá reabastecer duran- polinomial
te o trajeto, passando por tantos pontos de reabastecimento quantos se fizerem

No problema, o objetivo é encontrar o caminho mais curto entre o dado par de vértices, atendendo a autonomia
do veículo. Para tal, o caminho nunca deve acumular um comprimento maior que a autonomia do veículo sem an-
tes passar por um vértice de reabastecimento. O veículo deverá visitar tantos vértices de reabastecimento quantos
forem necessários. O caminho mais curto tradicional é um caso particular do caminho com reabastecimento em
que todos os vértices são de reabastecimento, e a autonomia do veículo é maior ou igual que a maior aresta do gra-
fo. Considerando-se o grafo da Figura 4.51(1), o caminho mais curto irrestrito entre os vértices 1 e 8 está exibido
na Figura 4.51(2). Considerando-se uma autonomia para o veículo de 7 unidades e os pontos de reabastecimento
localizados nos vértices 3 e 7, o caminho mais curto possível passa a ser o exibido na Figura 4.51(3). O problema
possui aplicações logísticas e militares.

(1) Grafo G

(2) Caminho mais curto tradicional = 10 (3) Caminho mais curto restrito = 12

Figura 4.51 Caminho mais curto com vértices de reabastecimento

Caminho mais Curto k-Centro O problema é


Trata-se do caminho que minimiza a soma das k maiores arestas pertencentes ao
caminho. NP-Difícil
CAPÍTULO 4  Caminhos 231

Garfinkel et al. (2003) definem o problema do caminho mais curto k-centro. Se o caminho entre v e w não existe
ou possui menos que k arestas, seu valor acumulado é definido como infinito.

Esse modelo possui aplicações militares e na solução


de problemas de investimento em mercado de capitais.
Considerando o grafo da Figura 4.52(1) e k=2, as Figu-
ras 4.52(2) e (3) apresentam caminhos que solucionam o
problema para o caminho mais curto 2-centro entre os
vértices 1 e 10.

(1) Grafo G

(2) Caminho mais curto tradicional = 9 (3) Caminho mais curto 2-centro = 11

Figura 4.52 Caminho mais curto k-centro

Caminho mais Curto Restrito em Peso


O problema é
Dado um grafo G com pesos wij e custos dij associados às suas arestas(i-j), o caminho
mais curto com restrição de peso é o menor caminho entre um dado par de vértices NP-Difícil
v e w tal que o valor dos pesos não ultrapasse um limite k.

A Figura 4.53(2) exemplifica dois caminhos mais curtos entre os vértices v e w do grafo da Figura 4.53(1).
Ambos atendem a restrição de não ultrapassarem o peso 2. Na figura, os pesos são representados em vermelho e
sublinhados, os custos em preto. As arestas sem pesos possuem peso zero.

(1) Grafo G (2) Caminho=3 / Peso=9 (3) Caminho=4 / Peso=2

Figura 4.53 Caminhos mais curtos restritos em peso


232 Grafos

Caminho de Mínimo Gargalo O problema é


Um caminho de mínimo gargalo em G é o caminho entre qualquer par de vértices v,
w que minimizar a aresta de gargalo entre todos os caminhos possíveis ligando v polinomial
e w.

Sendo um grafo G ponderado e ce o custo da aresta e em G, define-se o gargalo de um caminho como a aresta
de maior peso desse caminho. A Figura 4.54(1) exemplifica a aresta gargalo de um caminho, enquanto a Figura
4.54(3) compara um caminho de mínimo gargalo com o caminho mais curto tradicional de 4.54(2).

(1) Caminho com aresta gargalo ressaltada

(2) Caminho mais curto tradicional = 6 (3) Caminho de mínimo gargalo = 7

Figura 4.54 Caminhos de mínimo gargalo

Caminho com Falha nos Vértices/Arestas O problema é estudado por


Trata-se de um problema de caminho mais curto onde os vértices / arestas possuem Jaillet (1992); Krasikov &
presença incerta no grafo. Noble (204) e Qureshi et al.
(2011).
CAPÍTULO 4  Caminhos 233

4.7 Cadeias Eulerianas e Modelos de Otimização


A literatura relata um grande número de problemas de otimização combinatória associada aos percursos desen-
volvidos sobre as arestas de um grafo G. O presente item abordará alguns desses casos. Dror (2000) apresenta uma
revisão das aplicações práticas desses problemas.

O Problema do Carteiro Chinês


p
Determinar um passeio fechado de custo mínimo que passe por todas as
arestas do grafo G.

O Problema do Carteiro ao Vento-Windy


p
Determinar um passeio fechado de custo mínimo passando por todas as
arestas do grafo G em uma matriz de custos assimétrica.

As Figuras 4.55(2) e (3) exemplificam um ciclo do carteiro chinês sobre o grafo da Figura 4.55(1). Observe que
as arestas (1-2) e (3-4) são percorridas duas vezes, e a união dos ciclos de (2) e (3) faz um passeio que percorre todas
as arestas de G pelo menos uma vez. No caso do carteiro ao vento, a matriz de pesos do problema é assimétrica e o
sentido de percurso mais caro é denominado “contra o vento”, enquanto o mais barato “a favor do vento”.

Kwan Mei-Ko foi o primeiro


a relatar o problema em uma
publicação datada de 1962  na
Chinese Mathematics (Mei-Ko,
1962). Para o caso não orientado,
a solução exata desse problema
pode ser obtida em O(n3), como
mostram Papadimitriou & Stei-
glitz (1982).

(1) Grafo G (2) Primeira parte da solução

Para o caso de grafos mistos o


problema é:

NP-Difícil
A solução do problema do car-
teiro chinês em grafos não orien-
tados eulerianos reduz-se à de-
terminação do ciclo euleriano.
(3) Segunda parte da solução (4) Terceira parte da solução

Figura 4.55 Uma solução do carteiro chinês


234 Grafos

O Problema do k-Carteiro Chinês


p
Dados um grafo G = (N,M) e um vértice inicial sN, o problema consiste em
encontrar uma coleção de k passeios fechados contendo um vértice inicial
s de modo que cada aresta do grafo seja percorrida pelo menos uma vez em
algum passeio e que o comprimento dos k passeios seja minimizado.

O Problema do k-Carteiro Chinês Min-Max


p
Dados um grafo G = (N,M) e um vértice inicial sN, o problema consiste em
encontrar uma coleção de k passeios fechados contendo um vértice inicial s
de modo que cada aresta do grafo seja percorrida pelo menos uma vez em al-
gum passeio e que o comprimento do maior dos k passeios seja minimizado.

NP-Difícil

O problema do carteiro rural visto adiante é NP-difícil e se reduz polinomialmente aos problemas acima cita-
dos, os quais são, portanto, NP-Difíceis. Pearn (1994) e Zhang (1992) apresentam algoritmos para o problema.
As Figuras 4.56(2) e (3) exemplificam os ciclos de um 2-carteiro chinês no grafo da Figura 4.56(1). As Figuras (4)-
(6) exemplificam um percurso do 3-carteiro Min-Max no grafo da Figura 4.56(1).

(1) Grafo G (2) Primeiro ciclo do 2-carteiro (3) Segundo ciclo do 2-carteiro

(4) Primeiro ciclo do 3-carteiro (5) Segundo ciclo do 3-carteiro (6) Terceiro ciclo do 3-carteiro

Figura 4.56 Exemplos de k-carteiro chinês e k-carteiro Min-Max


CAPÍTULO 4  Caminhos 235

O Problema do Carteiro Rural


p
Determinar um passeio fechado de custo mínimo e que passe por um conjunto de arestas S
de arestas do grafo G, SM.

NP-Difícil

A rota do carteiro poderá ou não percorrer arestas fora do subconjunto obrigatório. O problema clássico foi
formulado em grafos não direcionados. Trata-se de um problema NP-Difícil, possuindo duas variantes clássicas,
uma para grafos direcionados e outra para o caso de grafos mistos. No caso direcionado destaca-se o trabalho de
Christofides et al. (1986). Pearn & Liu (1995) e Hertz et al. (1999) apresentam algoritmos heurísticos eficientes
para o problema. As Figuras 4.57(2) e (3) exemplificam os circuitos do carteiro rural no grafo da Figura 4.57(1). O
primeiro circuito é 7-2-3-6-9-8-4-5-6-7. O segundo é 7-2-6-3-5-4-8-6-9-7.

(1) Grafo G – arestas obrigatórias em negrito

(2) Primeira solução (3) Caminho de mínimo gargalo = 7

Figura 4.57 Soluções do carteiro rural

O Problema da Empilhadeira – Stacker Crane


p
Determinar em um grafo misto G = (N,M,A), a partir de um vértice s  N um circuito de com-
primento mínimo que passe pelo menos uma vez por todos os arcos de A.

NP-Difícil
236 Grafos

❂ Variantes do Carteiro Chinês – Outras Dicas de Trabalhos

Carteiro ao Vento
Minieka (1979) descreve o problema e Pearn & Lin (1994) apresentam heurísticas para o problema.

k-Carteiro Min-Max
Ahr & Reinelt (2006) relatam um algoritmo em busca tabu.

Carteiro Chinês em Grafos Mistos


Pearn & Liu (1993) sugerem algoritmos de solução. Nobert & Picard (1996) apresentam um algoritmo exato. Corberán
et al. (2002) relatam um algoritmo GRASP.

Carteiro Rural
Problema abordado em Eiselt et al. (1995). O caso periódico é abordado no trabalho de Ghiani et al. (2005), que pro-
põem um algoritmo heurístico de solução. Benaventa et al. (2005) apresentam algoritmos aproximativos para o carteiro
rural ao vento e corberán et al. (2010) relatam novos resultados. A literatura cita sem destaques o caso do carteiro rural
capacitado. O carteiro rural dinâmico é abordado em Moreira et al. (2007).

O Problema da Empilhadeira – Minimium Stacker Crane


Frederickson et al. (1978) descrevem o problema e apresentam heurísticas de solução. Hansen & Clausen (2002) descre-
vem uma aplicação real do modelo.

4.8 Exemplos de Aplicações


►Exemplo 1: O Problema da Otimização de Turbinas

A aplicação é descrita por Plante et al. (1987). Quando uma turbina a jato é fabricada, deve funcionar em rotação
uniforme e sem vibrações. Para tal, suas aletas devem ser posicionadas de forma a otimizar o giro. Cada aleta pos-
sui características únicas, ainda que se trate de um produto industrializado. O problema de localizar as aletas de
uma turbina de forma a obter a melhor configuração possível é um problema que, de uma forma geral, é equiva-
lente a distribuir as aletas em uma circunferência de modo a harmonizar as diferenças de fabricação – minimizar
as diferenças entre aletas vizinhas. Assim o problema pode ser modelado como um caixeiro-viajante simétrico,
quando adotada uma medida de proximidade igual à diferença entre cada par de aletas. A Figura 4.58 exemplifica
a aplicação.

(2) Uma alocação de aletas na turbina:


(1) Um grafo de correlações.
7-6-1-5-2-10-3-4-11-9-12-8-7
Figura 4.58 Exemplo de balanceamento de aletas em turbina a jato
CAPÍTULO 4  Caminhos 237

►Exemplo 2: O Problema do Sequenciamento de Genoma

Para sequenciar um genoma, diversos mapas locais do genoma obtidos por radiação devem ser integrados. A in-
tegração se faz com base na verossimilhança dos mapas. Mapas de regiões vizinhas são mais verossimilhantes que
mapas de regiões afastadas do genoma. A solução do problema do caixeiro-viajante providencia um caminho para
integrar os mapas locais com o mapa global. Um caso real dessa aplicação para o genoma dos ratos encontra-se
em Avner et al. (2001).

►Exemplo 3: Reconstrução de DNA com Fragmentos

No processo de sequenciamento de DNA, um dos problemas associados diz respeito a reconstruir o código pesqui-
sado a partir de fragmentos de código. O problema pode ser formalmente definido com o de: dado um conjunto
de fragmentos de DNA, determinar a menor sequência contínua de bases nitrogenadas (adenina, citosina, timina e
guanina) que contenha todos os fragmentos do conjunto. Para modelar o problema de determinar a menor sequência
de bases nitrogenadas pode-se criar um grafo G da seguinte forma. Cada vértice xi representa um fragmento fi em
exame. Uma aresta (xi –xj) possui um custo cij igual ao comprimento de fi – a menor sequência comum de bases
nitrogenadas com fj. O caminho, visitando todos os vértices de G e de comprimento mínimo, soluciona o proble-
ma proposto. A Figura 4.59 exemplifica o processo de reconstrução dos segmentos de DNA. O DNA é construído
aproveitando ao máximo as sequências de bases nitrogenadas comuns e compondo os fragmentos.

(2) Posições não emparelhadas nos fragmentos:


(1) Fragmentos de DNA conhecidos f1 → f4 =3 e f4 → f1=2

(3) Posições não emparelhadas nos fragmentos: (4) Posições não emparelhadas nos fragmentos:
f1  f3 =1 e f1  f2=2 f2  f3 =2; f2 → f4=2; f4 → f3=3; f3 → f4=2; f4 → f3=1;

Figura 4.59 Exemplo de emparelhamento de fragmentos de DNA


238 Grafos

As Figuras 4.60(2), (4) e (6) exibem soluções do grafo da Figura 4.60(1). Um ciclo hamiltoniano de menor com-
primento em G representa a possibilidade de um emparelhamento que minimiza os trechos não emparelhados nos
fragmentos. As Figuras 4.60(2) e (3) mostram que pode haver ciclos em G que produzam soluções inviáveis para o
problema. As setas da Figura 4.60(3) mostram que o emparelhamento resultante – o vetor no alto da figura – não
preserva as mesmas bases nitrogenadas em todas as posições do emparelhamento dos fragmentos.

(1) Grafo formado (2) 1a Solução valor = 6 (3) Solução inviável

(4) 2a Solução valor = 7 (5) Solução viável (6) 3a Solução valor = 8

Figura 4.60 Grafo de emparelhamento de fragmentos e soluções do problema

►Exemplo 4: Otimização de Operações de Robôs Industriais

Os robôs industriais são utilizados, dentre outras tarefas, para transporte, pintura, soldagem, cortes etc. Em inúme-
ras situações, esses equipamentos devem efetuar operações repetitivas – trabalho em ciclos que se repetem à medida
que uma nova peça ou tarefa é apresentada. Em alguns casos, as ações do robô demandam movimentos do equi-
pamento ou de suas peças, e, em muitos casos, a sequência de todos ou alguns desses movimentos é uma variável
livre. Considerando que o trabalho do robô forma um ciclo de atividades, onde cada tarefa a executar depende desse
movimento, pode-se formular o problema de otimizar o tempo de operação do ciclo do robô como um problema da
determinação de ciclos hamiltonianos ou do caixeiro rural (ver Capítulo 9), conforme o caso.
Como um exemplo, seja o caso de um robô soldador que deve realizar uma ação de solda em placas que che-
gam até a sua estação de trabalho. Cada ponto marcado na placa deve receber uma solda. No projeto da placa
essa solda é necessária para ativar o respectivo borne da placa. A posição inicial do braço do robô em seu pro-
cesso de operação pode ser definida em qualquer ponto do espaço, inclusive sobre um possível ponto de solda. A
Figura 4.61(1) exemplifica uma placa a ser soldada. Nessa placa são escolhidos alguns pontos para receber a sol-
da. Os pontos estão marcados em vermelho. A Figura 4.61(2) mostra uma possível solução para a trajetória do
braço do robô durante o processo de solda. O movimento do braço do robô representa um ciclo hamiltoniano,
CAPÍTULO 4  Caminhos 239

uma vez que: como as placas se repetem, o robô volta o braço para a sua posição de partida após a última solda
na placa. Todos os pontos marcados na placa devem receber solda. A solda não poderá ser feita mais de uma vez.

(1) Placa a ser soldada (2) Solução

Figura 4.61 Exemplo de movimentação de braço industrial

Considerando que o deslocamento do braço do robô consome um tempo proporcional ao espaço percorrido
pelo braço, uma forma de minimizar o tempo de trabalho do robô, considerando que o tempo para as soldas é o
mesmo, seria minimizar o deslocamento do braço – solucionar um problema do caixeiro-viajante sobre os pontos
de solda.
Um caso um pouco mais complexo consiste no problema de perfurar placas. Por várias razões, placas – de
madeira, circuitos integrados, vidro etc. – devem ser perfuradas em determinadas posições e segundo certos diâ-
metros associados a cada posição. Para que a máquina perfure buracos de diferentes diâmetros é necessário que a
broca seja mudada. A operação de troca de broca é bem mais demorada que a operação de deslocamento do braço.
Além do mais, via de regra, é realizada automaticamente em um carregador circular. O carregador pode ficar aloja-
do na própria cabeça de perfuração ou fora do braço. Nesse carregador, as brocas estão classificadas por diâmetro,
de modo que a operação de troca é tanto mais demorada quanto mais afastados forem os diâmetros das brocas que
vão ser trocadas. Dessa forma, o método de operação determina que a ferramenta robô realize os trabalhos de per-
furação diâmetro a diâmetro, alterando a broca cada vez que os furos de determinado diâmetro são concluídos. O
problema então pode ser visto como uma série de PCVs simétricos sobre cada conjunto de furos. Os vários ciclos
iniciam e terminam no mesmo ponto – o local do carregador, quando o carregador fica fora da ferramenta. No
caso de a ferramenta portar o carregador os ciclos são encadeados.
Finalmente, uma variante ainda mais complexa associada ao processo de automação de tarefas sobre chapas
diz respeito à produção de placas de circuito integrado. As placas para computadores pessoais são constituídas em
diversas camadas. O processo industrial exige que seja confeccionada uma chapa fotográfica para cada camada
da placa. A chapa fotográfica é marcada por um equipamento especial de plotter – desenho. Para sensibilizar o
material fotográfico a cabeça do plotter possui um dispositivo óptico dotado de lentes. O dispositivo óptico é capaz
de providenciar diferentes aberturas para marcar as diferentes estruturas do circuito. O plotter pode traçar linhas
de várias espessuras através de uma conveniente abertura no sistema óptico e de um deslocamento específico. Por
outro lado, pode criar estruturas pontuais fechando o traçador de linhas, carregando a forma necessária no sistema
óptico e providenciando um “flash” de marcação. O problema de otimizar a operação desse plotter também pode
ser modelado com um caso do caixeiro-viajante
240 Grafos

►Exemplo 5: Movimentação de Satélites de Exploração

Satélites de exploração são programados para realizar tarefas de observação sobre um conjunto de corpos ce-
lestes selecionados. Para tal, devem direcionar seus equipamentos para o objeto alvo. Na medida em que uma
tarefa se esgota faz-se necessário reposicionar aparelhos ou o próprio satélite para que o próximo alvo seja
observável. Movimentar o satélite ou seus aparelhos significa, respectivamente, gasto de combustível ou de
energia ou de ambos. Em órbita, o custo do combustível pode exceder seu peso em ouro. A Figura 4.62 exibe
a movimentação necessária para um satélite deslocar seus instrumentos da visada sobre a estrela 1 para uma
visada sobre a estrela 2.

(1) O problema (2) Numeração dos alvos

(3) Vértices estrelas (4) Grafo de movimentos

O grupo de engenheiros da faculdade Hernandez Enginee-


ring, em Houston, e da Brigham Young University otimi-
zaram a sequência da observação de corpos espaciais no
programa da NASA Starlight Space Interferometer. Maiores
detalhes em “Fuel Saving Strategies for Separated Spacecraft
Interferometry” em NASA’s Starlight home page.

(5) Solução viável

Figura 4.62 Esquema do problema do satélite de exploração


CAPÍTULO 4  Caminhos 241

►Exemplo 6: O Problema da Datação de Sepulturas em Sítio Arqueológico

Suponha que em uma exploração arqueológica um sítio com várias sepulturas seja encontrado. Uma das mais
importantes contribuições do estudo arqueológico consiste na datação das sepulturas. Tal datação é realizada em
função, principalmente, dos objetos encontrados em cada sepultura e pelo histórico do sítio como um todo.

(1) (a) Grafo do relacionamento em diversidade (2) Uma sequência de alterações gradativas

Figura 4.63 Minimizando o caminho das mudanças culturais

Uma medida de afastamento temporal entre as sepulturas consiste na diferença dos objetos encontrados em
seu interior. A consistência do sítio completo é fundamental para validar a pesquisa. Para avaliar a sequência cro-
nológica das sepulturas é necessário encontrar a sequência que minimize a perturbação de diversidade entre as se-
pulturas. Considerando a diferença de diversidade entre as sepulturas como uma medida de distância, a sequência
de sepulturas que minimiza essa distância é uma provável solução para o histórico do sítio. O modelo de solução
pode ser um caminho hamiltoniano no grafo completo da diversidade entre as sepulturas (Zubrow, 2005), como
mostram as Figuras 4.63(1) e (2).

►Exemplo 7: PERT/CPM – Program Evaluation and Review Technique (PERT) – Critical Path Method (CPM)

O PERT/CPM congrega o uso de duas técnicas de planejamento e as integra em um grafo para facilitar a visuali-
zação e coordenação das atividades de um projeto. O PERT prevê o cálculo da duração de atividades complexas
a partir da média ponderada de três durações possíveis dessa atividade. O CPM é um método de identificação do
caminho(s) crítico dada uma sequência de atividades, isto é, quais atividades de uma sequência não podem sofrer
alteração de duração sem que isso reflita na duração final de um projeto. Um exemplo simples do encadeamento
de atividades é relacionado na Tabela 4.3 para a fabricação de uma estante. Considerando que a coluna Duração
tenha sido calculada pelo método PERT, é possível, com base na Tabela 4.3, organizar um grafo do sequenciamento
lógico das atividades de fabricação da estante, conforme a Figura 4.52.

Tabela 4.3 Atividades de Fabricação de uma Estante de Madeira


Atividade Discrição Duração Anterior Posterior
A Comprar tábuas 1 dia – 3
B Comprar parafusos 1 dia – 5
C Cortar as tábuas 2 dias 1 4
D Pintar as tábuas 1 dia 2 5
E Montar as tábuas com parafusos 1 dia 4,2 6
F Transportar a estante 1 dia 5 –
242 Grafos

Na Figura 4.64 as atividades da Tabela 4.3 estão representadas pelas setas. Os vértices representam eventos ins-
tantâneos que caracterizam o início e o término das atividades especificadas nas setas. Na Figura 4.64 a sequência
das atividades é o principal ponto destacado. A seta pontilhada representa a dependência lógica da atividade de
montagem das tábuas em relação à atividade de compra dos parafusos. Essa “atividade” é denominada atividade
fantasma, e sua duração é igual a zero (instantânea).

Figura 4.64 Grafo da sequência lógica das atividades de fabricação da estante

Sobre cada um dos vértices é possível representar a duração da atividade a ele associada. Esse gráfico é tam-
bém conhecido por rede orientada por tarefa, ou ainda por diagrama de setas (uma das ferramentas da
qualidade).
Observando-se situações como a representada pela seta 3-5 da Figura 4.64, nota-se que, em função do ca-
minho que for considerado para o acesso ao evento de conclusão de uma tarefa, seu valor poderá ser diferente.
Denominando por TC o tempo mais curto que está associado à conclusão de uma dada atividade de projeto
(considerados todos os caminhos possíveis para o acesso ao evento de término dessa atividade) e por TL o tem-
po mais longo dessa mesma atividade, é possível determinar TL e TC do grafo da Figura 4.64, conforme mostra
a Figura 4.65.

Figura 4.65 TL e TC em relação ao vértice 5 da Figura 4.52

Pelo caminho 1-2-4-5, a conclusão da atividade 4-5 representada no vértice 5 somente poderá ocorrer em 4 dias.
Pelo caminho 1-3-5, em somente um dia. A diferença entre esses tempos é denominada folga. Para a consideração
das folgas será proposta a rotulação da Figura 4.66.
CAPÍTULO 4  Caminhos 243

Na solução da rede por eventos, o caminho mais longo vai


determinar o tempo final da conclusão de todo o projeto.
As atividades que pertencem ao caminho mais longo não
possuem folga em sua execução. Assim, qualquer atraso
nessas atividades ocasionará um correspondente atraso no
projeto. Essa informação poderá ser útil para eventuais re-
distribuições dos meios no planejamento.
A construção de uma rede PERT/CPM será exempli-
ficada em um projeto de planejamento de um casamento.
As atividades necessárias estão relacionadas na Tabela 4.3. Figura 4.66 Rotulação do Vértice do Grafo PERT/CPM

Tabela 4.3 Atividades do casamento


Atividade Descrição Duração Anterior Posterior
A Contratação do serviço religioso 7d – B,C,E
B Habilitação do serviço religioso 120d B Z
C Contratação do local da recepção 21d – D
D Habilitação do local da recepção 90d C Z
E Contratação do local do casamento 30d A O,G
F Habilitação do local do casamento 90d E U
G Arte do convite 7d A H
H Impressão e envio do convite 7d G,C,E I
I Confirmação de presença 30d H,Q T,W
J Contratação do vestido de noiva 15d A M
K Prova do vestido de noiva 45d J L
L Conclusão do vestido de noiva 15d K U
M Contratação do serviço de som 15d C, E N
N Habilitação do serviço de som 30d M U
O Contratação da documentação de mídia 15d C,E P
P Habilitação do serviço de documentação 30d O Q
Q Implementação do website 2d P I
R Escolha do roteiro da lua de mel 30d A S
S Habilitação do pacote de lua de mel 90d R Z
T Convite das damas de honra e padrinhos 30d I X,Y
U Treino da cerimônia 1d L,N,F Z
W Contratação do buffet 15d I V
V Habilitação do buffet 60d ZB Z
X Despedida da noiva 1d J Z
Y Despedida do noivo 1d J Z
Z Casamento 1d –

A rede de atividades associada à Tabela 4.3 é exibida na Figura 4.67. Nenhum prazo de execução encontra-se
lançado nessa rede para ajudar o entendimento do relacionamento lógico das atividades. Observa-se que, caso
uma atividade condicione outra, mas não se encontre diretamente encadeada com essa atividade condicionada, o
244 Grafos

fato é representado através de uma atividade fantasma – seta pontilhada, que não possui duração real. Por exemplo,
as atividades B, D e S condicionam a possibilidade do casamento, todavia não precisam ser concluídas no dia do
casamento, nem condicionam qualquer atividade ou cadeia de atividades que necessite ser concluída exatamente
no dia do casamento. Assim, as atividades são ligadas ao evento que dá início à atividade do casamento – o vértice
26, por uma atividade fantasma.

Figura 4.67 A rede de precedência lógica do PERT/COM para o casamento

Para esclarecer o cálculo dos rótulos uma cadeia de eventos específica será destacada na Figura 4.68. Na figura a
duração das atividades é lançada ao lado das atividades para facilitar a visualização do cálculo dos tempos asso-
ciados aos eventos de início e término das atividades. A Figura 4.69 exibe a rotulação dos caminhos do trecho. As
duas atividades fantasmas que vinculam a atividade C às atividades O e H não prevalecem em prazo, e assim não
possibilitam folgas para os eventos 3 e 7 (os vértices iniciais dessas atividades). Todavia, a atividade fantasma que
liga a atividade E à H determina que o caminho de eventos 1-2-7 aguarde pela conclusão do evento 3, o que produz
folga no caminhos das atividades A-G.
CAPÍTULO 4  Caminhos 245

Figura 4.68 Trecho da rede PERT/COM para o casamento

Figura 4.69 Rotulação do trecho da rede PERT/COM para o casamento

Em relação ao evento 8, conclusão das atividades H e Q, ele pode ser alcançado por caminhos diferentes com pra-
zos de conclusão também diferentes. Portanto, o evento 8 vai sinalizar que o caminho de menor duração, caminho
dos eventos 1-2-7-8, possui folga. A restante rotulação do grafo proposto é deixada como exercício, todavia sua
solução encontra-se ao final do presente capítulo.
246 Grafos

►Exemplo 7: O caminho do Hiker Dice

Hiker Dice é um jogo recentemente proposto em um software projetado por Mara Kuzmich e Leonardo Goldbarg
(www.hikerdice.com) e consiste em um caminho de um dado sobre um tabuleiro m × n. O dado se desloca no
tabuleiro através de tombamentos sobre casas vizinhas. Cada tombamento corresponde a uma casa no tabuleiro.
Ao tombar, o dado marca o tabuleiro com as faces que entram em contato com a superfície do tabuleiro. O dado é
posicionado com uma dada face voltada para baixo, conforme uma configuração inicial conhecida. Os tombamen-
tos sucessivos necessários ao deslocamento do dado produzem uma trilha de números impressos, como exibem
as Figuras 4.70(2) e (3). Nessas duas figuras o dado é posicionado inicialmente ao alto e à esquerda do tabuleiro,
com a face 1 voltada para baixo e a face 5 voltada para a esquerda. A face da posição inicial não marca o tabuleiro,
de forma que se o jogador desejar marcar todas as casas deverá retornar à posição de partida do dado. O dado não
pode ocupar uma célula do tabuleiro já marcada anteriormente. O objetivo do jogo é encontrar a trilha que soma
o maior número de pontos.

(1) O posicionamento do dado no tabu-


(2) Um caminho hamiltoniano do dado (3) Um ciclo hamiltoniano do dado
leiro 3 x 3

Figura 4.70 Exemplo de emparelhamento de fragmentos de DNA

O Problema do Hiker Dice


p
Conhecido o posicionamento inicial de um dado sobre um tabuleiro n x m,
determinar um caminho obtido através de tombamentos desse dado sobre
o tabuleiro de forma a maximizar o número de pontos gravados na trilha
deixada pelo dado ao tombar.

O problema do Hiker Dice não exige que todos os vértices do tabuleiro sejam visitados, tampouco obriga que a
primeira casa ocupada pelo dado, que não é inicialmente marcada, seja sempre marcada, isto é, que se forme qual-
quer ciclo.
CAPÍTULO 4  Caminhos 247

4.9 Grafos Especiais dos Temas do Capítulo

Grafo de Harary
O grafo Harary Hk,n é o menor grafo k-conexo com n vértices.

A Figura 4.71 exibe três grafos de Harary com seus respectivos índices associados.

(1) n = 5 e k = 2

(2) n = 5 e k = 3 (3) n = 5 e k = 4
Figura 4.71 Grafos de Harary

Grafo Pancíclico o
G
o
Um grafo é denominado pancíclico, G, para a ordem n  3 se para todo vértice xi de G
e para todo inteiro l satisfazendo 3  l  n existe um ciclo em G de comprimento l que
contém xi.

A Figura 4.72(1) mostra um grafo não pancíclico. Por exemplo, o vértice 2 não participa de nenhum ciclo de com-
primento 4. A Figura 4.72(2) exibe um grafo pancíclico. As Figuras 4.72(3)-(7) exibem ciclos do grafo da Figura
4.72(2) com comprimento variando entre 3 e 7. Nesses ciclos os vértices 3 e 5 estão sempre presentes. Observa-se
que todos os vértices participam de ciclos de comprimentos que variam de 3 a 7.
248 Grafos

(1) Grafo não pancíclico (2) Grafo pancíclico

(3) Ciclo 3 (4) Ciclo 4 (5) Ciclo 5

(6) Ciclo 6 (7) Ciclo 7

Figura 4.72 Grafo pancíclico

Os grafos Ore são sempre


Grafo Ore Hamiltonianos e esses ci-
clos podem ser construí-
Trata-se de um grafo G em que a soma dos graus dos vértices não adjacentes é maior
dos em tempo polinomial
que o número de vértices para todos subconjuntos de vértices não adjacentes (Skiena
1990, p. 197). (Bondy & Chvátal, 1976).
A Figura 4.73 exemplifica
três grafos Ore.
CAPÍTULO 4  Caminhos 249

(1) (2) (3)

Figura 4.73 Grafos Ore

A Figura 4.74 exemplifica


Grafo D-Distância um grafo unidistância.
X(D)
Seja D um conjunto de números positivos contendo 1, então um grafo D-distância
X(D) sobre um conjunto não vazio de pontos X no espaço Euclideano é composto pelos
vértices associados aos pontos de X com as arestas (x,y) existentes correspondendo às
distâncias Euclidianas d(x,y) entre os respectivos pares de vértices do conjunto X.

Grafo Unidistância
Um grafo é dito unidistância quando é um grafo de distância e todas as arestas pos-
suem comprimento igual a 1.
Figura 4.74

Um grafo de distância é basicamente um grafo geometricamente traçado em norma euclideana. O grafo da


Figura 4.74 é composto por 3-cliques em malha equilátera, daí todas as arestas do grafo, geometricamente, são de
igual comprimento e representadas por 1.

Grafo de Distância Regular


DR
Um grafo conexo G é dito de distância regular – DR se existem inteiros bi, ci, i = 0,1,2,...,d
tais que para todo par de vértices (x,y) e uma distância i = d(x, y) existem exatamente ci
vizinhos para y  Gi-1(x) e bi vizinhos para y  Gi+1(x).

A Figura 4.75 mostra um grafo de distância regular de ordem 3, com 18 vértices.


Os grafos de distância regular de ordem 3 são conhecidos e relacionados no quadro a seguir.
250 Grafos

Grafo Vértices Grafo Vértices

K3,3 3 Desargues 20

Cubo 8 Coxeter 28

Petersen 10 Tutte (3,8)-Gaiola 30

Heawood 14 Foster 90

Pappus 18 Biggs-Smith 102

Dodecaedro 20 Tutte (3,12)-Gaiola 126


Figura 4.75 Grafo de Pappus

Abaixo, exemplo de um grafo


Grafo Anel anel.
A
Um grafo é denominado anel (An) se cada bloco de G, exceto uma ponte ou um vér-
tice, pode ser construído a partir de um ciclo por adições sucessivas de caminhos de
comprimento no mínimo 2, que comecem e terminem sobre dois vértices adjacentes
a qualquer grafo H.

É um grafo com n vértices que contém apenas um ciclo passando em todos os vértices.

A Figura 4.76 exemplifica a constituição de um grafo anel pela adição de caminhos de comprimento dois ou mais
sobre um grafo H. O caminho a ser adicionado é exemplificado na Figura 4.76(1). O grafo H possui um ciclo, exi-
bido na Figura 4.76(2).

(1) Bloco inicial (2) Grafo H

(3) Caminho de comprimento maior que 2 (4) Grafo anel

Figura 4.76 Processo de formação de um grafo anel


CAPÍTULO 4  Caminhos 251

Grafo Hipercubo
Um grafo hipercubo, Qd,
Um grafo G é dito hipercubo – Qd quando é obtido segundo o seguinte produto
contém 2d vértices e é regular
cartesiano:
de grau d.

Grafo k-Cubo
Um grafo k-cubo é aquele cujos vértices representam uma k enumeração bi-
A Figura 4.77(1) exemplifica
nária exaustiva e as arestas uma relação de vizinhança trivial entre as configu-
um grafo hipercubo Q3 e um
rações.
3-cubo.

O grafo k-cubo associa sequências binárias aos vértices, e dois vértices são adjacentes no grafo se e somente se
representam enumerações que diferem em exatamente uma posição. No caso de k = 3, exemplificado na Figura
4.77(2), as enumerações binárias possíveis são: 000, 001, 010, 100, 110, 101, 011 e 111. Para o caso, o vértice 000 é
adjacente aos vértices 001, 010 e 100. O vértice 001 é adjacente aos vértices 000, 011 e 101 etc.

(1) Hipercubo – Q3 (2) Grafo 3-cubo

Figura 4.77 Grafo hipercubo e 3-cubo

Grafo Platônico
Um grafo é dito platônico quando é formado pelos vértices e arestas de um dos seguin-
tes sólidos:

1. Tetraedro A Figura 4.78 exemplifica


2. Cubo grafos platônicos.
3. Octaedro
4. Icosaedro
5. Dodecaedro
252 Grafos

(1) Tetraedro (2) Cubo (3) Octaedro

(4) Icosaedro (5) Dodecaedro

Figura 4.78 Grafos platônicos

Grafo Poliédrico
A Figura 4.79 exemplifica
Um grafo é dito n-poliédrico ou c-net se é um grafo planar 3-conexo de n vértices. três grafos poliédricos.

(1) 6-roda (2) 5-roda (3) Tetraedro

Figura 4.79 Grafos poliédricos


CAPÍTULO 4  Caminhos 253

Teorema 4.3
Todo poliedro convexo pode ser representado no plano ou sobre a superfície
de uma esfera por um grafo 3-conexo planar.

Teorema 4.4
Todo grafo 3-conexo planar pode ser imaginado como um poliedro convexo.
(Duijvestijn & Federico, 1981)

Grafo Prisma A Figura 4.80(1) exibe um


Y grafo prisma Y3 – que pos-
sui 6 vértices.
Primeira definição: Um grafo é denominado Prisma, Y, quando pode ser obtido pela
união de cópias isomórficas de G através de arestas que correspondam à união dos
Quando o produto cartesia-
vértices do isomorfismo.
no é efetuado entre os grafos
Cn e Pm, (conforme notação
do Capítulo 1 – Cn  Pm), o
Segunda definição: O grafo Prisma Yn é o grafo obtido do produto cartesiano de um
grafo ciclo Cn com um grafo caminho de comprimento dois P2.
prisma é notado Yn,m. A Figu-
ra 4.80(2) exibe o prisma Y3,3.

(1) Grafo prisma Y3 (ou Y3,2) (2) Grafo prisma Y3,3

Figura 4.80 Grafos prisma

A Figura 4.81 exibe um grafo


Grafo Grade grade G3,3, formado pelo pro-
Gn,k,r duto de dois caminhos de três
vértices. Se um dos caminhos
O grafo grade, Gm,n, é também denominado grafo reticulado e resulta do produto de do produto cartesiano fosse
dois grafos caminho com m e n vértices, respectivamente. O conceito de grafo grade substituído por um ciclo, o
pode ser estendido para um produto cartesiano m x n x k...x s.
grafo grade seria transforma-
do em um prisma.
254 Grafos

Um grafo grade é
hamiltoniano sempre que seu
número de linhas e colunas
for par.

O grafo grade com m x n


vértices possui

(m–1)n + (n–1) arestas.

Figura 4.81 Grafo grade

Grafo Escada A Figura 4.82 exibe três


Ln grafos escada.

O grafo escada Ln é obtido pelo produto cartesiano dos grafos K2  Pn. O grafo é citado em Hosoya
& Harary (1993).

(1) L2 (2) L3 (3) L4

Figura 4.82 Grafos escada


CAPÍTULO 4  Caminhos 255

Grafo Livro A Figura 4.83 exibe três


Bn grafos livros.
O grafo livro Bn é obtido pelo produto cartesiano entre os grafos estrela Sn+1 e o grafo O grafo é citado em Gallian
caminho de comprimento dois Bn = Sn+1  P2. (2007).

(1) B3

(2) B4 (3) B5

Figura 4.83 Grafos livro

Grafos de Knödel
W,n A Figura 4.84 exibe dois
grafos de Knödel.
São grafos regulares de ordem par n e com grau máximo , 1≤  ≤ Îlog2(n)˚

Os grafos de Knödel permitem o desenvolvimento de algoritmos eficientes para os problemas de Broadcast e da


Fofoca (Knödel, 1975), especialmente quando n = 2k, sendo k a ordem do grafo (Dinneen et al., 1991).

Grafo Escada de Mobius A Figura 4.84(1) exibe uma


escada de Mobius, que é
É um grafo 3-regular obtido de C8 – grafo ciclo com 8 vértices, pela adição de uma aresta
também um grafo de Knö-
unindo vértices diametralmente opostos no ciclo.
del W3,8.
256 Grafos

(1) Grafo de Knödel – W3,8


(2) Grafo de Knödel – W4,16
(também escada de Möbius)

Figura 4.84 Grafos Knödel

Grafo Roda
W A Figura 4.85(1) mostra
um grafo roda.
Um grafo roda (Wn) é um grafo com n vértices x1, x2,..., xn, possuindo um vértice com
grau n-1 e os demais com grau 3. O vértice x1 é adjacente a todos os vértices, e para i = A Figura 4.85(2) mostra
2,...,n-1, xi é adjacente a x1, xi-1 e xi+1. O vértice e xn é adjacente a x1, xn-1 e x2. um grafo engrenagem.

O grafo engrenagem pode


Grafo Engrenagem
ser considerado um grafo
É o grafo obtido pela inserção de um vértice entre cada par de vértices adjacentes no roda bipartido (Brandstädt
perímetro de um grafo roda. O grafo possui 2n+1 vértices e 3n arestas. et al., 1987).

(1) Roda W7 (2) Engrenagem

Figura 4.85 Grafos roda e engrenagem


CAPÍTULO 4  Caminhos 257

Grafo Circulante
Um grafo é circulante (Cin(l)) se seu i-ésimo vértice é adjacente ao (i+j )-ésimo e ao
(i–j )-ésimo vértices para cada j em uma lista l.

Figura 4.86 Grafo circulante


Ci6 (1)

Os seguintes teoremas referem-se aos ciclos hamiltonianos em classes de grafos especiais:

Teorema 4.13 (Paulraja) Teorema 4.15 (Ryjá ček)


Um prisma obtido sobre qualquer grafo cúbico Todo grafo 7-conexo livre de subgrafos
3-conexo é hamiltoniano. garra é hamiltoniano.
(Paulraja,1993) (Ryjá ček,1997)

Teorema 4.14 (Li) Teorema 4.16 (Flandrin)


Todo grafo 6-conexo livre de subgrafos garra com Se G = (N,M) é conexo com D(G) ≤ n, então
pelo menos 33 vértices de grau 6 é hamiltoniano. G † Cn é hamiltoniano.
(Li et al.,1996) (Flandrin et al., 2006)

4.10 Aplicações Reais Selecionadas


Os caminhos e ciclos encontram inúmeras aplicações para a modelagem e solução de problemas reais. O quadro
de dicas relaciona algumas aplicações clássicas.

❂ Dicas de Aplicações Reais sobre o Tema

Os caminhos e ciclos em grafos possuem um número tão grande de aplicações reais que é difícil fazer uma listagem desses
casos. De modo geral abordam:
• problemas de roteamento de veículos;
• roteamento em redes de comunicação;
• operações em plantas industriais;
• otimização de etapas de fabricação de produtos;
• a gestão e distribuição de recursos, de forma geral.

No sentido de melhor esclarecer as aplicações no tema destacam-se os seguintes trabalhos:

 Distribuição de jornais (Golden et al., 1977; Dillmann et al., 1996 ).


 Distribuição de manufaturados (Pearl & Daskin, 1985).
258 Grafos

 Distribuição de produtos diversos (Dantzig & Ramser, 1959; Klots et al., 1992).
 Distribuição de bebidas (Golden & Wasil, 1987; Eibl et al., 1994).
 Distribuição de valores (Lambert et al., 1993).
 Distribuição de produtos químicos (Ball et al., 1983).
 Transporte escolar (Newton & Thomas, 1974; Li & Fu, 2002).
 Recolhimento de lixo (Beltrami & Bodin, 1974; Kulcar, 1996; Angelelli & Speranza, 2002).
 Entrega de correspondência (Frederickson et al., 1978).
 Leitura de medidores elétricos (Stern & Dror, 1978).
 Distribuição de pão (Derigs & Grabenbauer, 1993).
 Recolhimento de borracha (Nambiar et al., 1989).
 Roteamento de helicópteros (Timlin & Pulleyblank, 1990).
 Roteamento em linhas aéreas (Marsten & Shepardson, 1981; Marsten et al., 1979; Yan & Yu-Ping, 1997).
 Sistemas de transportes coletivos urbanos (táxi, ônibus, metrô) (Ceder & Stern, 1981).
 Serviços de emergência (Daskin, 1987).
 Distribuição de derivados de petróleo (Brown et al., 1987; Brown & Graves, 1981).
 Programação de sondas de produção (Goldbarg et al., 2002).
 Distribuição de gás (Bell et al., 1983).
 Roteamento entre células de manufatura flexível (Finke & Kusiak, 1985).
 Transporte de pedras (Schneider, 1985).
 Entrega de correspondência bancária (Malmborg & Simons, 1989).
 Distribuição de alimentos (Cassidy & Bennett, 1972; Bartholdi et al., 1983).
 Sistemas de proteção contra incêndio (Marianov & ReVelle, 1992).
 Distribuição de material fotográfico (Solot et al., 1990).
 Patrulhamento noturno e sistemas de distribuição de valores (Calvo & Cordone, 2003).
 Roteamento de navios de longo curso (petroleiros), cabotagem e logística (Ronen, 2002).
 Distribuição de vagões ferroviários (Haghani, 1991).
 Roteamento de auditores bancários (Castellano & Bornstein, 1989).
 Operação de veículos de limpeza de gelo nas ruas e estradas (Eglese, 1992).
 Limpeza de ruas com veículos vassoura (Eglese, 1991).
 Manutenção de elevadores (Blakeley et al., 2003).
 Distribuição e recolhimento de leite (Basnet et al., 1993; Sankaran & Ubgade, 1994).
 Programação de sistemas rollon-rollof (Bodin et al., 2000).
 Montagem de fragmentos de ADN (Pevzner et al., 2001).
 Movimentação de plotter laser (Ghiani & Improta, 2001).
 Gerência de containers (Nishimura et al., 2005).
 Entrega de pizza, fast food, comida, congelados etc. (Golden et al., 2001, Tarantilis & Kiranoudis, 2002; Hsu
et al., 2007).
 Manutenção de boias marítimas (Cline et al., 1992).
 Planejamento de transporte de carros por caminhões (Pape, 1988).
 Controle de pragas (Solomon et al., 1992).
 Transporte de açúcar em granel (Van Vliet et al., 1992).
 Cultivo de ostras (Wang et al., 1996).
 Roteamento de satélites (Lee et al., 2003).
 Just-in-time (Vaidyanathan et al ., 1999).
 Recolhimento de cana-de-açúcar (Cruz, 1998).
 Explotação de poços de petróleo não surgentes (Goldbarg et al., 2004; Goldbarg et al., 2010).
 Rolling batch planning (Chen et al., 1998).
CAPÍTULO 4  Caminhos 259

 Corte de chapas metálicas (Manber & Israni, 1984).


 Recolhimento de sobras de madeira (Alves & Carvalho, 2001).
 Distribuição urbana de concreto (Asbach et al., 2009).
 Projeto de redes de telecomunicações. (Feremans et al., 2003).
 Roteamento de robôs em manufatura (Zacharia & Aspragathos, 2005).
 Planejamento de projetos (Abdallah et al., 2009).
 Determinação de acesso a arquivos computacionais (Henry-Labordere, 1969).
 Programação de assistência social (Saskena, 1970).
 Manipulação de itens em estoque (Ratliff & Rosenthal, 1981).
 Na maioria dos problemas de roteamento de veículos (Bodin et al., 1983) e de navios (Fagerholt & Christian-
sen, 2000).
 Distribuição de sinal de vídeo em redes Ad Hoc (Igartua & Frías, 2010).
 Programação de operações de máquinas em manufatura (Finke & Kusiak, 1987). 
 Otimização do movimento de ferramentas de corte (Chauny et al., 1987).
 Otimização de palhetas em turbinas a gás (Plante et al., 1987).
 Análise de estruturas cristalinas (Bland & Shallcross, 1987).
 Fabricação de chips VLSI (Korte, 1988).
 Otimização de perfurações de furos em placas de circuitos impressos (Barahona et al.,1988).
 Na solução de problemas de sequenciamento de tarefas (Whitley et al., 1991).
 Trabalhos administrativos (Laporte et al., 1996).
 Roteamento de entrega postal (Laporte et al., 1996).
 Na solução de problemas de programação e distribuição de tarefas em plantas (Salomon et al., 1997).
 Cortes em chapas de aço e vidro (Hoeft & Palekar, 1997).
 Construção de árvore evolucionária e determinação de sequenciamento genético (Korostensky & Gonnet,
2000)
 Produção de aço (Tang et al., 2000).
 Testes citológicos (Laporte & Palekar, 2002).
 Planejamento da produção (Ben-Arieh et al., 2003).
 Mapas genéticos (Agarwala et al., 2000).
 Na promoção da segurança de dados (Othman & Mokdad, 2010).
 Orientação de localização e de rotas para pedestres (Saeed, 2010).
 Operações de socorro humanitário (Huang et al., 2011).
 Patrulha rodoviária (Keskin et al., 2011).

4.11 Exercícios Resolvidos do Capítulo 4


Exercício no 1:
Provar que o caminho mais curto em grafos ponderados em arestas e vértices admite solução polinomial.
Exercício no 2:
Concluir o exemplo 6 calculando os valores dos tempos associados a todos os vértices da rede PERT/COM
para todos os vértices.
Exercício no 3:
Encontrar as condições que fazem um grafo bipartido completo Kn,m ser: 1. Euleriano; 2. Hamiltoniano.
260 Grafos

Exercício no 4:
O Caminho de Pascal – Trata-se de um caminho desenvolvido sobre uma matriz n × n segundo regras
específicas. O comprimento do caminho será obtido pela soma das células visitadas. Considerando o pro-
blema abaixo descrito, desenvolver um exemplo de aplicação.

O Problema do Caminho de Pascal


p
Seja uma matriz S = [sij ], n x n, em que as células sij são preenchidas com números
inteiros e maiores que zero. Um caminho de Pascal em S é uma sequência de
células que atende estas exigências:

1. O caminho se inicia na célula (1,1) e termina na célula (n,n).


2. Somente são permitidos movimentos que não decresçam qualquer valor dos
índices das células visitadas pelo caminho (somente são válidos movimentos
para baixo e para direita na matriz).
3. A posição de uma célula r do caminho é obtida a partir da posição da célula
r–1, somando-se o conteúdo da célula r–1 aos índices i ou j da célula r–1.

Exercício no 5:
Mostre como o algoritmo de Hierholzer pode ser implementado em O(m).
Exercício no 6:
Demonstre que se G não é 2-conexo, então G não é hamiltoniano.
Exercício no 7:
Dado G = (N,M) conexo e ponderado, mostre que:
a) o subgrafo H de G, de cardinalidade mínima em arestas, tal que a distância entre um vértice v  N e
todos os outros vértices do grafo é mínima é uma árvore. (Tal grafo é chamado de árvore de caminho
mais curto de v).
b) Mostre que árvore geradora mínima e árvore de caminho mais curto não são conceitos equivalentes.
Exercício no 8:
Mostre que o grafo célula de abelha de Kirkman não é hamiltoniano.
CAPÍTULO 4  Caminhos 261

Exercício no 9:
Faça um algoritmo eficiente para determinar se um grafo G direcionado acíclico possui caminho hamilto-
niano e, em caso positivo, exibir o caminho.
Exercício no 10:
Dado G um grafo e L(G) seu grafo de linha, mostre que:
1) se G é euleriano, então L(G) é hamiltoniano.
2) se L(G) é hamiltoniano, G não é necessariamente euleriano.
Exercício no 11:
Você é gerente da empresa virtual Dados & Promessas, uma empresa de propaganda eletrônica. A empresa
comercializa espaços de propaganda em páginas web de clientes, sendo responsável por criar as ads (telas
de propaganda) e gerenciar sua disposição na página do cliente. A empresa ganha um percentual do valor
arrecadado com as propagandas. O esquema de propaganda é planejado em horizontes de tempo de 14
dias, e os contratos de propagandas podem durar entre 2 e 14 dias. Cada propaganda possui uma oferta de
pagamento e um tempo de duração. A cotação do pagamento das propagandas é feita pelos interessados nas
propagandas. Supondo que existam dois clientes que estão disponibilizando nas suas páginas web um único
espaço de propaganda para sua empresa gerenciar, modelar através de grafos, o problema de maximizar a
receita com a inclusão das ads. Exemplificar o funcionamento do modelo no caso que se segue, escolhido
dentre as melhores propostas para o período:

Propaganda Duração Oferta Propaganda Duração Oferta


a1 1-4 10 a8 10-14 6
a2 3-7 7 a9 7-9 8
a3 5-9 6 a10 6-7 6
a4 1-3 5 a11 3-5 7
a5 4-7 4 a12 7-14 18
a6 8-12 8 a13 6-9 9
a7 3-6 4 a14 5-11 10

Exercício no 12:
Em um armazém o estocador deseja empilhar os contêineres de forma segura e na maior altura possível.
Um contêiner é empilhado sobre o outro, de forma segura, se possuir menor peso e menor altura. Admite-
-se, todavia, um empilhamento se um dos dois parâmetros for igual, sendo o outro forçosamente menor.
Formular o problema de empilhamento máximo dos contêineres como um problema em grafos. Solucionar
o empilhamento máximo para o caso do seguinte conjunto de contêineres:

Contêiner Peso Altura Contêiner Peso Altura


p1 10 5 p8 12 6
p2 12 6 p9 8 10
p3 12 7 p10 10 7
p4 9 5 p11 7 10
p5 11 5 p12 9 10
p6 8 10 p13 9 8
p7 8 8 p14 9 9

Exercício no 13:
262 Grafos

Uma empresa de engenharia está planejando escavar um pequeno túnel de ventilação através de um solo
irregular. O solo, ao longo da possível trajetória do túnel, possui conformações diferentes. As regiões de di-
ferente comportamento geológico foram reunidas no que se denominou lotes de escavação. Cada lote exige
uma diferente técnica de escavação e contenção das paredes do túnel. O custo da escavação do metro linear
de cada lote está anotado em seu interior. Os lotes vermelhos desabam sobe a escavação imediatamente
abaixo, custando adicionalmente o mesmo valor previsto no caso da escavação atravessar o lote vermelho.
Dado o esquema dos lotes de escavação da figura do exercício, que representa um corte longitudinal – no
sentido do perfil de escavação, planejar a melhor trajetória do túnel sob o ponto de vista da escavação.

Figura do exercício 13: Malha de possíveis traçados para as rotas do túnel

Exercício no 14:
Um pequeno investidor tem a possibilidade de realizar investimentos em quatro diferentes projetos. Cada
projeto implica um retorno diferente e associado ao montante investido. O quadro de investimento e retor-
no está transcrito abaixo. Modelar através de um grafo o problema da escolha da distribuição de recursos
de investimento nos projetos. Solucionar o problema de forma a maximizar o retorno obtido.

Receita x Investimento
Investimento
Projeto 1 Projeto 2 Projeto 3 Projeto 4
0 0 0 0 0
1 2 1 3 4
2 4 2 4 5
3 6 8 6 7

Exercício no 15:
A Corrida do Calanguru – Calanguru é um animal que cava suas tocas nas proximidades de lagos ou
banhados. Faz seu trabalho na época da seca. Na época das chuvas permanece entocado e seguro dos
predadores, pois estoca alimentos nos ninhos. O animal busca construir suas tocas terminando em
ninhos, cujo único acesso é realizado através de túneis. Nem sempre os túneis permanecem completa-
mente acima do nível das enchentes mais elevadas. Para evitar o predador da espécie, o animal faz seus
túneis com alças, de forma que às vezes eles podem descer abaixo do nível da água e ter uma de suas
alças completamente alagada por uma enchente. Os corredores alagados confundem e tornam o acesso
do predador impossível. Todavia, o calanguru também não passa pelas alças alagadas. O calanguru não
CAPÍTULO 4  Caminhos 263

pode construir uma só alça de segurança muito profunda, pois, se a enchente for muito grande, essa alça
permanecerá alagada mais tempo do que seu estoque de alimentos poderia suportar. Por outro lado, se a
enchente for pequena, as alças mais rasas não serão alagadas e o calanguru será devorado pelo predador
faminto. Assim, o calanguru constrói uma malha com vários ninhos com diferentes corredores e alças
de segurança. Sempre haverá um ninho adequado a certo nível histórico da enchente. Tudo funcionaria
muito bem se o calanguru soubesse exatamente quando uma enchente chegaria e qual o nível alcançado
por suas águas. Não sabendo de antemão qual será o nível alcançado pela enchente, o calanguru não
pode ir para uma toca enquanto a enchente não chegar. Quando a enchente chega, o calanguru “sabe”
qual será seu nível e corre pelo labirinto em busca do ninho certo. Todavia, enquanto ele corre, os cor-
redores vão sendo alagados pela cheia, que pode ser muito rápida. Se o caminho é muito longo ou passa
por alças mais profundas, o acesso ao ninho correto poderá ser bloqueado antes que o animal chegue
lá. Modele o problema da corrida do calanguru através de grafos, de forma a encontrar para uma dada
malha de túneis e alça e o tempo previsto para a inundação alagar cada alça da malha, um caminho
seguro para o animal.
Exercício no 16:
Grafo hipo-hamiltoniano – Sabendo-se que um grafo hipo-hamiltoniano é definido como se segue, dê um
exemplo de um grafo hipo-hamiltoniano.

Grafo Hipohamiltoniano
Um grafo é dito hipo-hamiltoniano quando não é hamiltoniano, mas todo sub-
grafo formado pela remoção de um único vértice de G é hamiltoniano.

Exercício no 17:
Um grafo grade 5 × 5 é hamiltoniano? E um grafo grid n × n para qualquer n.
Exercício no 18:
Demonstre que para todo grafo conexo G=(N,M) com mais de dois vértices sempre possui um vértice x tal
G# =(N#,M) com N# = N \ {x} é um grafo conexo.
Exercício no 19:
Demonstre que o grafo 1 do exercício é hamiltoniano, enquanto o grafo 2 é não hamiltoniano.

Grafo 1 Grafo 2
264 Grafos

4.12 Exercícios Propostos do Capítulo 4

Teoria

4.1: Seja G um grafo não ponderado com n vértices e m arestas. Sejam v e w dois vértices de G tais que sua dis-
tância é estritamente maior que n/2 (no grafo não ponderado, a distância entre um par de vértices v e w cor-
responde ao número de vértices do caminho mais curto, que liga v a w menos um, ou ao número de arestas
desse caminho). Demonstre que, nesse caso, existe um vértice s em G tal que s é distinto de v e w e que todos
os caminhos de v-w passam por s. Desenvolva um algoritmo de complexidade O(m+n) para identificar s.
4.2: Para que valores r, s, um grafo bipartido completo, Kr,s é hamiltoniano?
4.3: Demonstre que um grafo de linha, L(G), de um grafo euleriano, G, é também euleriano. Se L(G) é euleriano,
isso implica que G é euleriano?
4.4: Quais dos seguintes grafos são hamiltonianos? (1) K5; (2) K3,5; (3) W6
4.5: Sob que condições de r e s um grafo completo bipartido Kr,s é euleriano?
4.6: Qual a condição necessária e suficiente para que um grafo seja hamiltoniano?
4.7: O cubo de um grafo G é obtido de G unindo-se os pares de vértices que estão a uma distância no máximo
igual a três. Se G é conexo, mostre que o cubo de G é hamiltoniano.
4.8: Considere P = (vt,v2,...,vs) o caminho mais curto entre os vértices t e s, pertencentes ao grafo G com n vértices
e m arestas. Constrói-se um novo grafo F somando-se um valor k a cada aresta em G. No grafo F o caminho
mais curto entre t e s ainda é P? Prove a questão ou forneça um contraexemplo.
4.9: Mostre que o grafo linha de um grafo simples euleriano é euleriano.
4.10: Demonstre que se G é bipartido com bipartição (A,B), onde |A| ≠ |B|, então o grafo G não é hamiltoniano.
4.11: Demonstre que, se G = (N,M) é um grafo conexo e existe exatamente um caminho de i para j para todos os
pares de vértices i,j  N, então G não possui ciclos.
4.12: Se G é um grafo em que cada vértice possui um grau maior ou igual a k, prove que G possui um caminho
que passa por pelo menos k vértices.
4.13: Se G é um grafo conexo que possui mais arestas que vértices, prove que G possui pelo menos um ciclo.
4.14: Demonstre ou forneça um contraexemplo: Se G é um grafo conexo com n>2 vértices e possui pelo menos kn
arestas, então em G existe pelo menos um caminho de comprimento k+2, k > 1.
4.15: Em um grafo G, qual o número máximo de diferentes caminhos de comprimento dois?
4.16: Demonstrar ou dar contraexemplo para a afirmativa: Um grafo de linha de um grafo hamiltoniano é tam-
bém hamiltoniano.
4.17: Prove ou dê um contraexemplo: Se um grafo possui a conectividade igual a k e o diâmetro igual a d, então
possui pelo menos k(d-1) +2 vértices.
4.18: Demonstre que, em um grafo ponderado G em que o peso wij é estritamente positivo para toda aresta I-j, o
caminho mais curto não pode repetir vértices tampouco arestas. Demonstre ou forneça um contra, exemplo
para a afirmação anterior no caso em que exista wij < 0 para alguma aresta i-j de G.
4.19: Demonstre ou forneça um contraexemplo para a seguinte afirmação: Se G é um grafo com n vértices e com
um grau mínimo n-3, e seu complemento não contém 4-ciclos (ciclos de comprimento quatro), κ(G) = n-3.
CAPÍTULO 4  Caminhos 265

4.20: Seja G um grafo k-regular com k um valor ímpar. Prove ou forneça um contraexemplo para a seguinte afir-
mação: G não pode ser decomposto em caminhos de comprimento maior que k.
4.21: Prove ou forneça um contraexemplo: Todo grafo euleriano com pelo menos três vértices possui pelo menos
três vértices de mesmo grau.
4.22: Determine o mínimo número de vértices em um grafo G em que o mínimo comprimento de um ciclo par é
igual a 6.
4.23:  Determine as condições necessárias em um grafo G para que a árvore geradora mínima possua apenas dois
vértices extremos – seja um grafo caminho.
4.24: Se R e S são dois caminhos de comprimento máximo em G, demonstrar que, se o grafo é conexo, então os
caminhos possuem um vértice em comum.
4.25: Todos os vértices de um grafo possuem grau 3. Prove que o grafo possui um ciclo.
4.26: Suponha que d(v)≥k (d(v) é o grau do vértice v) para todo vértice v de um grafo. Mostre que o grafo tem um
caminho de comprimento pelo menos k.
4.27: Demonstre que um grafo G tem um circuito de comprimento não menor que δ(G) + 1 (δ(G) é o menor grau
de um vértice se G), desde que δ(G) > 1.
4.28: Mostre que um grafo conexo tem um ciclo euleriano se e somente se todos os seus cortes são pares.

Algoritmos

4.29: Desenvolva um algoritmo para detectar a existência de ciclos em um grafo G. O algoritmo deverá possuir
complexidade O(n+m).
4.30: Desenvolva um algoritmo de complexidade O(m+n) para garantir que determinado vértice não é ponto de
articulação.
4.31: Desenvolva um algoritmo que determine a sequência de remoção de vértices mais longa tal que não exista
desconexão do grafo. Calcule a complexidade do algoritmo desenvolvido e demonstre sua correção.
4.32:  Desenvolva um algoritmo que determine a sequência de remoção de vértices mais curta tal que exista uma
desconexão do grafo. Calcule a complexidade do algoritmo desenvolvido e demonstre sua correção.
4.33: Seja G um grafo ponderado, direcionado com n vértices e m arcos, sendo que todos os arcos possuem pesos
positivos. Desenvolva um algoritmo que determine em O(n2m) um ciclo de comprimento mínimo em G.
4.34: Se todas as arestas de um grafo G possuem o mesmo custo, o algoritmo de Dijkstra poderia ser melhorado
de forma a que sua complexidade de pior caso fosse reduzida?
4.35: Considere uma aplicação em que não estamos interessados em conhecer os caminhos mais curtos, mas
simplesmente a existência de um caminho entre dois vértices. Se o algoritmo de Dijkstra fosse empregado
para solucionar o problema, ele poderia ser melhorado de forma que sua complexidade de pior caso fosse
reduzida?
4.36: Desenvolva um algoritmo eficiente para o problema do caminho mais curto com vértices de passagem obri-
gatória. Calcule a complexidade do algoritmo desenvolvido e demonstre sua correção.
4.37: Desenvolva um algoritmo O(n2) para determinar um passeio sobre G que visite pelo menos uma vez cada
vértice do grafo.
266 Grafos

4.38: Desenvolva um algoritmo eficiente para o problema do caminho mais curto k-centro. Calcule a complexi-
dade do algoritmo desenvolvido e demonstre sua correção.
4.39: Desenvolva um algoritmo eficiente para o problema do caminho de Pascal. Calcule a complexidade do algo-
ritmo desenvolvido e demonstre sua correção.
4.40: Desenvolva um algoritmo eficiente para o problema do caminho mais curto iniciando em v e terminando
em w, contudo passando por um vértice t. Analise a complexidade do algoritmo desenvolvido.
4.41: Em um grafo em que os vértices possuem duas cores, desenvolva um algoritmo para o problema do caminho
mais curto v–w, porém contendo no máximo k vértice de uma das cores. Analise a complexidade do algo-
ritmo desenvolvido. O algoritmo desenvolvido é eficiente? É exato?
4.42: Em um grafo em que os vértices possuem duas cores, desenvolva um algoritmo para o problema do caminho
mais curto v–w, porém contendo no mínimo k vértice de uma das cores. Analise a complexidade do algorit-
mo desenvolvido. O algoritmo desenvolvido é eficiente? É exato?
4.43: Em um grafo completo em que os vértices possuem duas cores, desenvolva um algoritmo eficiente para de-
terminar o caminho mais curto v-w, em que os vértices do caminho nunca tenham um vizinho de mesma
cor, ou prove que tal caminho não existe. Analise a complexidade do algoritmo desenvolvido. O algoritmo
desenvolvido é exato?
4.44: Supondo que um grafo possua pesos nos vértices e arestas, desenvolva um algoritmo que determine o ca-
minho de menor custo entre dois vértices de G, considerando que o custo do caminho é obtido a partir da
soma de todos os pesos do caminho – peso das arestas e dos vértices. Calcule a complexidade do algoritmo
desenvolvido e demonstre sua correção.
4.45:  Supondo que um grafo possua pesos exclusivamente nos vértices, desenvolva um algoritmo que determine o
caminho de menor custo entre dois vértices de G, considerando que o custo do caminho é obtido a partir da
soma dos pesos dos vértices do caminho. Calcule a complexidade do algoritmo desenvolvido e demonstre
sua correção.
4.46: Desenvolva um algoritmo que determine em um grafo G todos os diferentes caminhos existentes entre
determinado par de vértices de G. Calcule a complexidade do algoritmo desenvolvido e demonstre sua
correção.
4.47: No grafo euleriano da figura do exercício, mostre como se dá a aplicação dos algoritmos de Hierholzer e
Fleury a partir do vértice d.

Figura do exercício 4.47

4.48: Para o Exercício no 13 as condições de custo do túnel são alteradas da seguinte forma: 1. Os trechos escava-
dos na vertical custam 30% mais que os escavados na horizontal, tomado por referência o valor atribuído
para o bloco, conforme a figura do exercício. 2. Cada vez que o túnel muda de direção é necessário um
CAPÍTULO 4  Caminhos 267

investimento de 5 unidades monetárias para reposicionar os equipamentos de corte. Nesse novo cenário,
desenvolva um algoritmo capaz de computar a rota de menor custo para o túnel, tendo por base a malhas de
possíveis traçados. Aplique o algoritmo na solução do problema do esquema do exercício.

Figura do exercício 4.48

4.49. Ramsés, o faraó do Egito, costumava visitar de surpresa os postos avançados do reino. Um dia, decretou
uma viagem saindo da cidade de Qantir (atual Tell el-Dab’a) em direção a um acampamento próximo à
atual cidade de Khamis. O que quase ninguém sabe é que Ramsés sofria de otite e determinou que a rota
minimizasse a altitude do caminho. A ordem correspondia a considerar que a maior altitude alcançada em
um caminho seria a altitude a considerar nesse caminho, até a cidade de e seguirá por uma trilha secreta.
Ramsés, o faraó do Egito, tinha um problema com altitude . Considerando o grafo da figura do exercício
em que o hi marca a atitude de cada ponto de controle das possíveis rotas, desenvolva um algoritmo para
encontrar o caminho de menor altitude definido anteriormente cuja complexidade não seja maior que
O(n2). Aplique o algoritmo para determinar a melhor rota entre Qantir e Khamis.

Figura do exercício 4.49: Mapa das rotas da viagem de Ramsés


268 Grafos

4.50. Uma placa de circuitos está sendo projetada. É necessário interligar dois barramentos da placa através de cir-
cuitos disjuntos em vértices e arestas. Isso pode ser realizado através de uma ou mais conexões. O conjunto
de conexões deverá passar uma e somente uma vez em cada pino de um conjunto de pinos intermediários
previamente selecionados. As conexões podem utilizar os demais pinos existentes se necessário, todavia sem
repeti-los em mais de uma conexão. Em virtude de exigências de projeto, a ligação nunca poderá conectar
pinos do conjunto selecionado em camadas muito distantes. As camadas de interligação são ressaltadas
pelas faixas coloridas na Figura (1) do exercício. A regra de interligação diz que não se permite ligação en-
tre pinos selecionados afastados por mais de duas camadas (com duas camadas separando as camadas dos
pinos). Cada conexão deverá possuir pelo menos uma ligação entre pinos de camadas vizinhas. A Figura (2)
do exercício mostra as possibilidades gerais de interligação na placa. Considerando que todas as distâncias
entre os vértices desse grafo podem ser diferentes, uma vez que o custo das ligações entre um par de vértices
do grafo é calculado em função da resistência existente entre esse par de vértices (não em função da distân-
cia geométrica), desenvolva um algoritmo que solucione o problema para um grafo de conexões qualquer.
Na Figura (3) apresenta-se um conjunto de conexões que soluciona o caso da Figura (1), a fim de esclarecer
a aplicação das regras de interconexão.

(1) Elementos da placa (2) Estrutura de ligação

(3) Uma solução exemplo


Figura do exercício 4.50

Modelos

4.51: Construa um grafo que modele o movimento de um cavalo do jogo de xadrez. Cada vértice representa uma
posição que pode ser ocupada pelo cavalo. As arestas do grafo representam movimentos realizados pelo
cavalo ligando as posições. Caracterize nesse grafo o passeio de um cavalo e responda: O grafo do cavalo é
hamiltoniano?
CAPÍTULO 4  Caminhos 269

4.52: Seja G um grafo conexo com pelo menos três vértices. Forma-se um novo grafo G´, com base em G, através
da adição de arestas definidas pelos vértices extremos u e v de modo que o grau de u e v seja sempre igual a 2.
Prove ou exiba um contraexemplo para a afirmação de que G´ é 2-conexo.
4.53: O passeio da empilhadeira

Um armazém movimenta as cargas estocadas através de


uma empilhadeira. Por motivos de segurança, em alguns
corredores a empilhadeira somente poderá trafegar em
um sentido – marcado na planta. Supondo que a empi-
lhadeira fará obrigatoriamente a entrega de um item em
cada corredor do armazém, programe o passeio da em-
pilhadeira sobre a planta do depósito da figura do exercí-
cio de forma que o equipamento iniciando e terminando
o seu passeio na entrada do armazém – simbolizada na
planta pelo círculo em azul – minimize o percurso total
dentro do armazém.
Planta do armazém

4.54: Verifique se o grafo do exercício atende as condições de algum dos grafos especiais relacionados no item 4.9.

Grafo do exercício 4.54

Aplicações

4.55: Calcular a integridade do grafo do exercício. Ele é honesto? Calcular sua tenacidade.

Figura do exercício 4.55


270 Grafos

4.56: Aplique o algoritmo de Dijkstra para encontrar o caminho mais curto entre os vértices a e m da figura do
exercício.

Figura do exercício 4.56

4.57: Aplique o algoritmo de Ford-Moore-Bellman para encontrar o caminho mais curto entre os vértices a e j
da figura do exercício.

Figura do exercício 4.57

4.58: Elabore um exemplo de um grafo com seis nós em que o caminho mais curto entre os vértices 1 e 6 somente
poderá ser calculado pelo algoritmo de Ford-Moore-Bellman. Justifique o exemplo.
4.59: Aplique o algoritmo Warshal aos grafos da figura do exercício.
CAPÍTULO 4  Caminhos 271

(1) Grafo 1 (2) Grafo 2


Figuras do exercício 4.59

4.60: Aplique o algoritmo de Roy aos grafos do exercício 4.59.


4.61: Aplique o algoritmo de Floyd-Warshall ao grafo do exercício, encontrando o menor caminho 1-5. Esse
mesmo grafo poderia ser solucionado corretamente pelo algoritmo de Dijkstra?

Figura do exercício 4.61

4.62: Aplique o algoritmo do caminho mais curto para o grafo em camadas na solução do caminho s-t do grafo
da figura do exercício 4.56.
4.63: O grafo da figura do exercício mostra a rede de alternativas possíveis para a fabricação de um dado bem de
consumo. Cada aresta representa determinada ação que fará parte do processo de fabricar o item, e o valor
associado à aresta representa o custo da alternativa. Por um motivo de fabricação, cada alternativa só pode
ser utilizada para fabricar um produto. O grafo da figura é um grafo em camadas (é um grafo com diversas
partições ou camadas que envolvem ligações de vizinhança entre determinadas partições ou níveis – os tra-
ços verticais). Cada camada contém as alternativas possíveis para que a atividade da camada seja realizada.
Obtenha o conjunto de atividades que programa a fabricação de dois produtos e cujos custos somados é
mínimo.
272 Grafos

4.63: Identifique quais grafos são: (1) Grafo Ore; (2) Grafo Poliédrico; (3) Prisma; (4) Platônico; (5) Circulante e
(6) Pancíclico.

(a) (b) (c)

(d) (e)
Figuras do exercício 4.63

4.64: Identifique quais grafos são: (1) Ore; (2) Cacto e (3) Snak.

(a) Grafo 1 (b) Grafo 2 (c) Grafo 3


Figuras do exercício 4.64

4.65: O grafo da figura do exercício mostra a rede de alternativas possíveis para a fabricação de um dado bem de
consumo. Cada aresta representa determinada ação que fará parte do processo de fabricar o item, e o valor
associado à aresta representa o custo da alternativa. Por um motivo de fabricação, cada alternativa só pode
ser utilizada para fabricar um produto. O grafo da figura é um grafo em camadas (é um grafo com diversas
partições ou camadas que envolvem ligações de vizinhança entre determinadas partições ou níveis – os tra-
ços verticais). Cada camada contém as alternativas possíveis para que a atividade da camada seja realizada.
Obtenha o conjunto de atividades que programa a fabricação de dois produtos e cujos custos somados é
mínimo.
CAPÍTULO 4  Caminhos 273

Figura do exercício 4.65

4.66: Determine um passeio do cavalo em um tabuleiro 6 × 6.


4.67: Encontre uma decomposição em grafos isomorfos a um caminho de comprimento 3 para o grafo de Grötzsch
mostrado na figura do exercício.

Figura do exercício 4.67: Grafo de Grötzsch


274 Grafos

4.68: O metrô da cidade Conectada está exibido na figura do exercício. A rede é composta por várias linhas que se
cruzam em estações específicas. Nestes pontos de cruzamento um usuário pode sair de uma composição e
passar para uma composição de outra linha. Sendo assim, em geral o usuário tem mais de uma opção de rota
quando deseja deslocar-se de uma parte a outra da cidade. Escolher a melhor rota passa, então, a ser funda-
mental para que o deslocamento seja o mais rápido possível. As distâncias entre estações vizinhas do metrô não
são iguais, contudo as velocidades das composições também variam de trecho para trecho, sendo maiores nos
trechos mais longos. Por outro lado, o tempo que as composições permanecem nas estações também é variável
e ajustado automaticamente, de forma a manter constante o fluxo das composições. Assim, no metrô da cida-
de Conectada é razoável considerar que o tempo médio de deslocamento entre estações vizinhas é constante.
Contudo, quando uma mudança de linha deve ser realizada pelo usuário, o tempo é equivalente ao gasto pelas
composições para cobrir quatro estações. Na cidade Conectada a concessionária de metrô instalou terminais
de informações que permitem ao usuário programar a sua melhor rota no sistema, bastando para isso informar
a estação de destino, uma vez que a estação de origem será a do terminal. Desenvolva o algoritmo para esse
sistema, de forma a calcular o caminho mais rápido entre duas estações quaisquer da rede. Com o algoritmo
desenvolvido, determine o caminho mais curto entre as estações de Baixada do Mangue e Alto da Glória.

Figura do exercício 4.68: Mapa do metrô da cidade Conectada


4.69: O problema do passeio turístico no centro do Recife
Um turista que visita Recife deseja sair a pé da Casa da Cultura (1), visitar cada uma das sete pontes que ligam
a ilha de Santo Antônio, conforme o mapa da Figura 3.120, e ainda passar pelo Shopping (2), Basílica do Carmo
(3) e Catedral de São Pedro (4) e o forte Brum (5). O turista pretende conhecer sempre locais diferentes, não
desejando repetir ruas pelas quais já tenha passado, mas aceitando cruzar mais de uma vez pelas pontes. Como
a cidade está em obras, a prefeitura preparou um mapa com os locais turísticos e retirou dele as ruas que devem
ser evitadas porque estão interrompidas. O mapa simplificado para o turista está exibido na figura do exercício.
Os pontos turísticos aparecem em negrito. A questão é: O caminho pretendido existe?
CAPÍTULO 4  Caminhos 275

Figura do exercício 4.69: O passeio turístico ao centro do Recife

4.70: Para quais valores de n os grafos Kn e Wn são eulerianos? Quais k-cubos são eulerianos?
4.71: Para quais valores de n os grafos Kn e Wn são hamiltonianos? Quais k-cubos são hamiltonianos?
4.72: Verificar se os grafos da figura do exercício são eulerianos / hamiltonianos. Em caso de algum dos grafos não
atender as condições de euleriano ou hamiltoniano, determinar se são semieulerianos ou semi-hamiltonia-
nos. Justifique suas respostas.

Figura do exercício 4.72 – 1a parte


276 Grafos

Figura do exercício 4.72 – 2a parte


4.73: Considerando o grafo da figura do exercício, determinar o ciclo de menor comprimento que percorre todas
as arestas do grafo.

Figura do exercício 4.73


CAPÍTULO 4  Caminhos 277

4.74: Exiba um grafo conexo com dez vértices que: 1) possua apenas um ciclo euleriano e nenhum ciclo hamilto-
niano; 2) possua um caminho hamiltoniano e nenhum caminho euleriano; 3) não possua caminhos hamil-
tonianos e eulerianos.
4.75: Determine o número máximo de caminhos entre os vértices v e w de forma que não possuam qualquer
aresta em comum.

Figura do exercício 4.75


4.76: Um jogo de dominó possui dez cartões com três letras. É possível, para os cartões [FEL], [LID], [HUG],
[GAV], [TEH], [FAX], [HUG], [CIV], [NUX] e [TOC], realizar uma jogada que coloque todos os cartões
em uma sequência circular sobre a mesa, de forma que um cartão tenha sempre dois vizinhos com uma letra
em comum?
4.77: Considere um piso quadrado e quadriculado com oito quadrículas de cada lado, formando, portanto,
64 posições vazias. Considere ainda que as quatro quadrículas dos cantos extremos não serão pavimen-
tadas e que existem ladrilhos 2 x 1 (com uma quadrícula preta e uma branca) disponíveis para pavi-
mentar o piso. Seria possível uma pavimentação que não quebrasse qualquer quadrícula 2 × 1 e cobrisse
todas as posições do piso, sempre alternando as cores preta e branca, em todas as direções, como em
um tabuleiro de xadrez?
4.78: Em um desafio na TV uma matriz 3 x 3 completa com letras é exibida ao telespectador, como na figura do
presente exercício. O apresentador desafia a:

A C B

F U I

O R V

1. contar quantas diferentes palavras podem ser formadas por qualquer associação de letras da matriz, de
forma que sejam adjacentes em linha, coluna ou na diagonal.
2. contar as diferentes palavras que nunca tenham duas consoantes em sequência.
Formule o problema para ser solucionado em grafos. Que tipo de estrutura representará a solução do pro-
blema no grafo para o desafio número 1 e para o número 2?
4.79: O mapa da Figura 1(1) do exercício resume a maioria dos principais aeroportos brasileiros. Em relação à
região Nordeste, as principais rotas de voos comerciais estão apresentadas nas Figuras de (2) a (8). Essas
rotas são voadas diariamente uma vez. O quadro do exercício mostra as rotas que podem ser utilizadas
em conexão e a cidade em que a conexão ocorre (no caso, a conexão não está associada a qualquer com-
promisso com um tempo de espera máximo no aeroporto, apenas com a operação das companhias aéreas
que operam as rotas).
278 Grafos

(1) Mapa dos principais aeroportos de passageiros do Brasil (2) Rota 1 – percurso anti-horário

(3) Rota 2 – percurso horário (4) Rota 3 – percurso anti-horário (5) Rota 4 – percurso horário

(6) Rota 5 – percurso horário (8) Rota 7 – integração –


(7) Rota 6 – percurso horário
percurso anti-horário
Figura do exercício 4.79: rotas Nordeste e de integração
CAPÍTULO 4  Caminhos 279

De posse dessas informações, programe: 1. O voo com o menor número de conexões entre VIX e JPA. 2. O
voo com o menor número de escalas entre MCZ e Natal.

Rota 1 Rota 2 Rota 3 Rota 4 Rota 5 Rota 6 Rota 7

Rota 1 GIG GIG

Rota 2 GRU

Rota 3 CNF BSB

Rota 4 NAT REC REC GRU

Rota 5 GIG SSA GIG

Rota 6 FOR

Rota 7 GRU GIG GIG

4.80: Verifique se os grafos da figura do exercício são 2-tenaz.

(1) Grafo 1 (2) Grafo 2


Figura do exercício 4.80
4.81: Considerando a definição da figura do exercício, exemplifique um 1-passeio no grafo que se segue. Nesse
grafo existe um 2-passeio que não repete nenhuma aresta?

q-Passeio
Um q-passeio é um passeio gerador fechado onde cada vértice é atravessado
no máximo q vezes.

Figura do exercício 4.81


280 Grafos

4.82: Determine a matriz de ciclos e a matriz de ciclos fundamentais do grafo do exercício.

Figura do exercício 4.82

Desafios

4.83: Seja G um grafo ponderado, direcionado e com n vértices e m arcos. Desenvolva um algoritmo que deter-
mine em O(n3) um ciclo de comprimento mínimo em G.
4.84: As escadas de Tepequém. Conta uma lenda indígena que, há muito tempo, existia uma fonte cristalina
ao lado da cratera de um vulcão na serra de Tepequémem, em Roraima, Amazônia. Suas águas poderiam
tornar jovem o mais velho ancião. Todavia, a única forma possível de se chegar à fonte seria percorrer
uma espécie de escada esculpida na rocha pelo Tupã queem ou deus do fogo e dessa montanha. Tupã
queen exigia do aventureiro apenas uma habilidade em troca da milagrosa água da montanha: a capaci-
dade de subir a escada em uma só tentativa. Qualquer erro seria punido com a morte. Dizia a lenda que
qualquer engano na estratégia de subida poderia prender para sempre o aventureiro em uma escalada sem
fim. Os degraus deveriam ser escalados alternando-se os pés, e Tupã queem exigia que o pretendente à
água alcançasse o topo com o mesmo pé que houvesse iniciado a escalada. Partindo do início da escada, o
aventureiro poderia escolher escalar degrau a degrau, saltando de dois em dois degraus ou de três em três
degraus. Uma vez escolhida a estratégia de escalada, ela somente poderia ser alterada nos degraus negros.
Toda vez que pisasse em um degrau de granito cinza, o escalador deveria recuar um degrau para não ser
fulminado pelo fogo da neblina eterna. Nos degraus amarelos o aventureiro deveria recuar dois degraus
para não ser morto pelas pedras do abismo sem fim. Os demais degraus da escada eram mais claros que
os de granito. Do ponto inicial da escada, o número de degraus poderia ser visto e contado. Contudo,
somente os degraus negros e amarelos eram visíveis do ponto de partida. Os degraus de granito cinza
permaneciam indistintos dos demais degraus por serem apenas um pouco mais claros. Reza a lenda que
ninguém conseguiu retornar vivo dessa escalada. Analise o problema com auxílio de um grafo e conclua
sobre a possibilidade de acesso à fonte da juventude. No caso de a lenda proceder, defina o tipo de escada
que foi preparada pelo malvado Tupã queen. No caso de a lenda ser falsa, defina uma estratégia para sem-
pre alcançar a fonte da juventude.
4.85: O recolhimento de lixo no Jardim Oceano.
O bairro Jardim Oceano, no Rio de Janeiro, deve programar seu recolhimento de lixo. Pela noite, dois ca-
minhões, partindo da praça Euvaldo Lodi, devem dividir o recolhimento do lixo do bairro, de forma que
todas as ruas sejam percorridas por pelo menos um dos caminhões. Um esboço dessas ruas é apresentado
na Figura (1). Algumas ruas do bairro possuem mão única, como mostra a Figura (2), enquanto as demais
permitem o tráfego nas duas direções. Modele o problema e defina que tipo de problema de roteamento em
grafos representaria a solução procurada. Para um grafo com n vértices, esse problema admitiria solução
polinomial em função de n?
CAPÍTULO 4  Caminhos 281

Figura do exercício 4.85(1): Bairro do Jardim Oceano

Figura do exercício 4.85(2): Ruas de mão única


4.86: A pulverização de adubo químico.
Uma cooperativa agrícola pretende alugar um avião de pulverização química para atender um conjunto
de 14 lotes de pulverização, conforme o esquema da Figura (1) do exercício. Os números em vermelho
correspondem ao volume de adubo necessário ao atendimento de cada lote. Os lotes 5, 11 e 15 podem ser
intercalados com quaisquer outros lotes de pulverização. Os lotes 8 e 10, se forem pulverizados em conjunto
com um lote do grupo 1,2,3,4,6,7,12 e 13, devem ser pulverizados de forma que o avião retorne ao campo de
pouso assim que realizar sua pulverização. A capacidade do avião é de 21 unidades de pulverização.
282 Grafos

Figura do exercício 4.86(1): esquema de distribuição dos 15 lotes

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

0 0 10 5 10 13 8 15 16 10 3 9 4 3 3 5

1 0 4 5 10 10 20 21 17 4 20 10 12 9 8

2 0 4 9 5 14 13 10 5 13 10 10 9 9

3 0 5 3 10 9 7 7 15 11 14 13 12

4 0 4 7 4 4 10 8 7 11 12 13

5 0 6 6 4 6 3 2 5 7 9

6 0 2 2 11 4 5 7 9 12

7 0 4 15 7 7 12 13 17

8 0 9 4 3 6 9 14

9 0 10 7 7 5 2

10 0 4 4 8 11

11 0 3 5 8

12 0 4 7

13 0 4

14 0

Figura do exercício 4.86(2): distância entre os lotes


CAPÍTULO 4  Caminhos 283

Fonte: adaptado de Google Maps


Figura do exercício 4.86(3): foto aérea exibindo lotes reais cultivados no Mato Grosso – Brasil.

4.87: O passeio do robô curioso.


Sabendo-se que o robô examina as quadrículas que pode enxergar de sua posição, avalie o comprimento do
menor caminho que ele deve percorrer no cenário para que possa examinar todas elas. Duas quadrículas
estão em contato visual quando seus centros são visíveis. É possível que a área de visualização seja descontí-
nua, como mostra o exemplo do cenário (2) da figura do exercício.

(1) Cenário do exercício (2) Exemplo de visualização


Figura do exercício 4.87
284 Grafos

4.88: Em um grafo k-conexo onde k≥2, os dois ciclos mais longos possuem pelo menos k vértices em comum?
4.89: Todo grafo 4-regular hamiltoniano possui pelo menos dois ciclos hamiltonianos distintos (Sheehan, 1975)?
4.90: Seja G um grafo 2-conexo de n vértices. O conjunto das arestas de G - E(G) – pode ser coberto com no má-
ximo (2n-1)/3 ciclos (Pyber, 1985)?
4.91: Todo grafo conexo de n vértices admite uma decomposição em pelo menos (n + 1)/2 paths (Gallai)?
4.92: O grafo da figura representa uma rede ferroviária. Cada vértice é um entroncamento ferroviário. Tendo em
vista a segurança do tráfego ferroviário, quando um trem entra em um trecho ferroviário, o próximo vértice
é fechado ao tráfego até que ele seja ultrapassado pelo trem. Os quatro trens possuem por destino o vértice
verde da rede e partem do vértice assinalado com a cor do trem. Considerando que os tempos de deslo-
camento são proporcionais ao comprimento das arestas do grafo da rede ferroviária, e que um trem pode
trafegar por qualquer trecho da rede que tenha o próximo vértice aberto ao seu tráfego, programe o caminho
dos quatro trens na rede de forma que o tempo entre a partida do primeiro trem e a chegada do quarto trem
ao destino seja minimizado.

Figura do exercício 4.92: rede ferroviária

4.93: Provar que todo grafo 2-aresta-conexo é a união de ν-1 (ou n-1) ciclos (Erdös et al., 1966).
4.94: Considerando as definições que se seguem, exemplificar um ciclo aresta antipodal e um ciclo vértice antipo-
dal em um grafo conexo com mais de seis vértices.

Vértices Antipodais em um Ciclo Ck Arestas Antipodais em um Ciclo Ck


Dois vértices pertencentes a um ciclo Ck são ditos antipo- Duas arestas e1 e e2 são ditas antipodais em um ciclo Ck se
dais se possuem a distância máxima em Ck. elas estão à distância máxima em Ck, ou seja, o número de
arestas entre elas em caminho no ciclo é k/2 –1.

Ciclo Vértice Antipodal Ciclo Aresta Antipodal


Um ciclo par Ck em um grafo G é dito ciclo vértice antipo- Um ciclo par Ck em um grafo G é dito ciclo aresta anti-
dal se Min{dG(x1),dG(x2)}=k/2 para todos pares de vértices podal se Min{wG(e1),wG(e2)}=2 para quaisquer duas arestas
antipodais pertencentes ao ciclo Ck. antipodais pertencentes ao ciclo.

dG(x1) é o grau do vértice x1. wG(e1) é a ordem da maior clique que contém a aresta e1.

Definições 1 Definições 2
Definições do exercício 4.94
CAPÍTULO 4  Caminhos 285

4.13 Referências
Abbas, A. M. (2007). Disjoint Multipath Routing for Mobile Ad hoc Networks, Journal of Computer Science &
Technology 7(2):191-193.
Abdallah, H., Emara, H. M., Dorrah, H. t. & Bahgat, A. (2009). Using Ant Colony Optimization algorithm for
solving project management problems. Expert Systems with Applications 36:10004-10015.
Ahr, D., & Reinelt, G. (2006). A tabu search algorithm for the min-max k-Chinese postman problem. Computers
and Operations Research 33(12):3403-3422.
Ahuja, R. K., Mehlhorn, K., Orlin, J. B. & Tarjan, R. E. (1990). Faster Algorithms for the Shortest Path Problem.
Journal of the Association for Computing Machinery 37(2):213-223.
Andrews, M. & Zhang, L. (2005). Hardness of the undirected edge-disjoint paths problem. In: Proceedings of the
thirty-seventh annual ACM symposium on Theory of computing (STOC) (2005), 276-283.
Agarwala, R., Applegate, D. L., Maglott, D., Schuler, G. D. & Schaffler, A. A. (2000). A Fast and Scalable Radiation
Hybrid Map Construction and Integration Strategy. Genome Research 10(3):350-364.
Angelelli, E. & Speranza, M. G. (2002). The Application of a Vehicle Routing Model to a Waste-collection Problem:
Two Case Studies. Journal of the Operational Research Society 53:944-952.
Alves, C. M. M., Carvalho & J. M. V. (2001). Planejamento de Rotas num Sistema de Recolha de Desperdícios de
Madeira, disponível em: sarmento.eng.uminho.pt/dps/vc/apdio1.pdf. Acesso em setembro de 2011.
Asbach, L., Dorndorf, U. & Pesch, E. (2009). Analysis, modeling and solution of the concrete delivery problem,
European Journal of Operational Research 193:820-835.
Avner, P., Bruls, T., Poras, I., Eley, L., Gas, S. et al. (2001). A Radiation Hybrid Transcript May of the Mouse Geno-
me. Nature Genetics 29:194-200.
Ball, M., Golden, B. L., Assad, A. & Bodin, L. (1983). Planning for Truck Fleet Size in the Presence of a Common-
-Carrier Option. Decision Sciences 14(1):103-120.
Barahona, F.,Grotschel, M., Junger, M. & Reinelt, G. (1988). An Application of Combinatorial Optimization to Sta-
tistical Physics and Circuit Layout Design. Operations Research 36(3):493-513.
Bartholdi III, J. J., Platzman, L. K., Lee, C. R. & Warden, W. W. (1983). A Minimal Technology Routing System for
Meals on Wheels. Interfaces 13:1-8.
Basnet, C. B., Clark, D. N. & Foulds, L. R. (1993). A Decision Support System Approach to Milk Tanker Routing.
Control and Cybernetics 22(4):131-144.
Ben-Arieh, D., Gutin, G., Penn, M., Yeo, A. & Zverovitch, A. (2003). Process Planning for Rotational Parts Using
the Generalized Traveling Salesman Problem. International Journal of Production Research 41(11):2581-2596.
Benaventa, E., Corberán, A., Piñanaa, E. Planaa,I. & Sanchisb, J. M. (2005). New heuristic algorithms for the windy
rural postman problem, Computers & Operations Research 32:3111–3128.
Bell, W., Dalberto, L., Fisher, M., Greenfield, A., Jaikumar, R., Kedia, P., Mack, R. & Prutzman, P. (1983). Improving
the Distribuition of Industrial Gases with an Online Computerized Routing and Scheduling Optimizer. Interfaces
13:9-23.
Bellman, R. (1958). On a Routing Problem. Quarterly of Applied Mathematics 16(1):87-90.
Beltrami, E. J. & Bodin, L. D. (1974). Networks and Vehicle Routing for Municipal Waste Collection. Networks
4:65-78.
Biggs, N. L., Lloyyd, E. K. & Wilson, J. (1986). Graph Theory, Clarendon Press, Oxford.
Blakeley, F., Arqüello, B., Hall, W. & Knolmaier, J. (2003). Optimizing Periodic Maintenance Operations for Schin-
dler Elevator Corporation. Interfaces 33(1):67-79.
Bland, R. E. & Shallcross, D. F. (1987). Large Traveling Salesman Problem Arising from Experiments in X-ray Crys-
tallography: A Preliminary Report on Computation. Technical Report 730, School of OR/IE, Cornell University,
Ithaca, New York.
286 Grafos

Bodin, L., Mingozzi, A., Baldacci, R. & Ball, M. (2000). The Rollon-Rolloff Vehicle Routing Problem. Transporta-
tion Science 34(3):271-288.
Bodin, L. D., Assad, B. L.& Ball, A. (1983). Routing and Scheduling of Vehicles and Crew, The State of the Art.
Computers & Operations Research 10:69-211.
Bondy, J. A. & Chvátal, V. (1976). A method in graph theory. Discrete Math. 15:111-135.
Brandstädt, A., Le, V. B. & Spinrad, J. P. (1987). Graph Classes: A Survey. Philadelphia, PA: SIAM, 19.
Broersma, H. J., van den Heuvel, J., Jackson, B. & Veldman, H. J. (1996). Hamiltonicity of Regular 2-Connected
Graphs, Journal of Graph Theory 22(2):105-124.
Brown, G. G. & Graves, G. W. (1981). Real Time Dispatching of Petroleum Tank Trucks. Management Science
27:19-32.
Brown, G. G., Graves, G. W. & Ronen, D. (1987). Ocean Transportation of Crude Oil. Management Science
33(3):335-346.
Calvo, R. W. & Cordone, R. (2003). A Heuristic Approach to the Overnight Security Service Problem. Computers
& Operations Research 30(9): 1269-1287.
Cassidy, P. & Bennett, B. (1972). TRAMP-A Multi Depot Vehicle Dispatching Problem. Operations Research Quar-
terly 23:151-163.
Castellano, M. & Bornstein, C. T. (1989). Problema de Roteamento de Auditores. Resumos do XXII Simpósio Bra-
sileiro de Pesquisa Operacional, 219-223.
Ceder, A. & Stern, H. I. (1981). Deficit Function Bus Scheduling with Deadheading Trip Insertion for Fleet Size
Reduction. Transportation Science 15:338-363.
Chauny, F., Haurie, A., Wagneur, E. & Loulou, R. (1987). Punch Operations in a Flexible Manufacturing Cell a
Three-Dimensional Space-Filling Curve Approach. INFOR 25(1):28-45.
Chekuri, C. & Khanna, S. (2007). Edge-Disjoint Paths Revisited. ACM Transactions on Algorithms 3(4):Article
46:1-18 DOI:10.1145/1290672.1290683.
Chen, X., Wan, W. &Xu, X. (1998). Modeling Rolling Batch Planning as Vehicle Routing Problem with Time Win-
dows. Computers & Operations Research 25(12):1127-1136.
Christofides, N., Campos, V., Corberan, A. & Mota, E. (1986). An Algorithm for the Rural Postman Problem on a
Directed Graph. Mathematical Programming Study 26:155-166.
Cline, A. K., King, D. H. & Meyering, J. M. (1992). Routing and scheduling Coast Guard Buoy Tenders. Interfaces
22:56-72.
Cohen, E. (1996). Efficient Parallel Shortest-Paths in Digraphs with a Separator Decomposition. Journal of Algo-
rithms 21(2):331-357.
Corberán, A., Martí, R. & Sanchis, J. M. (2002). A GRASP heuristic for the mixed Chinese postman problem. Eu-
ropean Journal of Operational Research 142:70-80.
Corberán, A., Oswald, M., Plana, I. Reinelt, G. & Sanchis, J. M. (2010). New results on the Windy Postman Pro-
blem, Mathematical. Programming., Ser. A. www.springerlink.com/index/0N67HT0244874052.pdf. Acesso em
setembro de 2011.
Cruz, J. C. (1998). Um Modelo de Programação de Frota para Transporte de Cana-de-açúcar, Problema de Progra-
mação de Veículos com Múltiplos Tipos de Veículos. Escola Politécnica, Universidade do Estado de São Paulo. Dis-
ponível em pages.stern.nyu.edu/~vgaur/Vehicle%20103003.pdf. Acesso em setembro de 2011.
Dantzig, G. B. & Ramser, J. (1959). The Truck Dispatching Problem. Management Science 6:81-91.
Daskin, M. S. (1987). Location, Dispatching and Routing Models for Emergency Services with Stochastic Travel
Times. In: Ghosh, A., Rushton, G. (Eds.) Spatial Analysis and Location-Allocation Models, Van Nostrand Reinhold,
New York.
Derigs, U. & Grabenbauer, G. (1993). Intime – A New Heuristic Approach to the Vehicle Routing Problem with Time
Windows, with a Bakery Fleet Case. American Journal of Mathematical and Management Sciences 13:249-253.
CAPÍTULO 4  Caminhos 287

Dirac, G. A. (1952). Some theorems on abstract graphs, In: Proceedings of the London Mathematical Society, 3rd Ser.
2:69-81.
Dial, R. B. (1969). Algorithm 360: Shortest Path Forest with Topological Ordering. Communications of the ACM
12(11): 632-633.
Dijkstra, E. W., (1959). A Note on Two Problems in Connexion with Graphs. Numerische Mathematik 1:269-271.
Dillmann, R., Becker, B. & Beckefeld, V. (1996). Practical Aspects of Route Planning for Magazine and Newspaper
Wholesalers. European Journal of Operational Research 90:1-12.
Dinneen, M.J., Fellows, M. R. &Faber, V. (1991). Algebraic Constructions of Efficient Broadcast Networks. Procee-
dings of Applied Algebra, Algorithms and Error Correcting Codes (AAECC’91), Lectures Notes in Computer Science
539:152-158.
Dror, M. (2000). (Ed.), ARC Routing: Theory, Solutions and Applications, Kluwer Academic Publishers, Reading,
MA.
Duijvestijn, A. J. W. & Federico, P. J. (1981). The Number of Polyhedral (3-Connected Planar) Graphs. Mathematics
of Computation 37:523-532.
Eglese, R. W. (1991). Routeing Road Sweepers in a Rural Area. Journal of the Operational Research Society 42(4):281-288.
Eglese, R. W. (1992). Efficient Routeing for Winter Gritting. Journal of the Operational Research Society 43(11):1031-
1034.
Eibl, P., Mackenzie, R. & Kidner, D. (1994). Vehicle Routing and Scheduling in the Brewing Industry: A Case Study.
International Journal of Physical Distribution & Logistics Management 24:27-37.
Eiselt, H. A., Gendreau, M. & Laporte, G. (1995). Arc Routing Problems, Part II: The Rural Postman Problem.
Operations Research 43(2):399-414.
Fagerholt, K. & Christiansen, M. (2000). A Travelling Salesman Problem with Allocation, Time Window and
Precedence Constraints – An Application to Ship Scheduling. International Transactions in Operational Research
7(3):231-244.
Fan, G. (1984). New sufficient conditions for cycles in graphs. J. Combin. Theory Ser. B 37(3):221-227.
Faudree, R. J., Gould, R. J., Jacobson, M. S. & Schelp, R. H. (1989). Neighborhood unions and highly Hamiltonian
properties in graphs. J. Combin. Theory Ser B 47:1-9.
Flandrin, E., Jung, H. A. & Li, H. (1991). Hamiltonism, degree sum and neighborhood intersections. Discrete
Math. 90:41-52.
Flandrin, E., Li, H. & Cada, R. (2006). Hamiltonicity and pancyclicity of generalized prisms, Electronic Notes in
Discrete Mathematics 24:61-67.
Fleury, M. (1883). Deux problèmes de géométrie de situation Journal de Mathématiques Élémentaires 2nd ser. 2:257-
261.
Frederickson, G. N., Hecht, M. S. & Kim, C. E. (1978). Approximation Algorithms for Some Routing Problems.
SIAM Journal on Computing 7:178-193.
Fredman, M. L. & Tarjan, R. E. (1987). Fibonacci Heaps and Their Uses in Improved Network Optimization Algo-
rithms. Journal of the Association Computing Machinery 34:596-615.
Feremans, C., Labb, M. & Laporte, G. (2003). Generalized network design problems. European Journal of Opera-
tional Research 148:1-13.
Finke, G. & Kusiak, A. (1985). Network Approach to Modelling of Flexible Manufacturing Modules and Cells, APII
-0399-0516, Departament of Applied Mathematics Technical University of Nova Scotia, Nova Scotia, Canada.
Finke, G. & Kusiak, A. (1987). Models for the Process Planning Problem in Flexible Manufacturing Systems. Inter-
national Journal of Advanced Manufacturing Technology 2(2):3-12.
Floyd, R. W. (1962). Algorithm 97, Shortest Path. Communications of the ACM 5:345.
Ford, L. R. Jr. (1956). Network Flow Theory. The RAND Corporation, Paper P-923.
Ford, L. R. Jr. & Fulkerson, D. R. (1962). Flows in Networks, Princeton University Press.
288 Grafos

Fortune, S., Hopcroft, J. &. Wyllie, J. (1980). The Directed Subgraph Homeomorphism Problem. Theoretical Com-
puter Science 10:111-121.
Garey, M. R., Johnson, D. S. & Tarjan, R. E. (1976). The planar Hamiltonian circuit problem is NP-complete, J.
Comput. 5:704-714.
Gallian, J. A. (2007). Dynamic Survey DS6: Graph Labeling. Electronic J. Combinatorics, DS6, 1-58, http://www.
combinatorics.org/Surveys/ds6.pdf. Acesso em setembro de 2011.
Garfinkel, R., Fernández, E. & Lowe, T. (2003). The k-Centrum Shortest Path Problem, School of Business Adminis-
tration, University of Connecticut, Storrs, Connecticut, U.S.A. http://www-eio.upc.es/seminar/03/Garfinkel.pdf.
Acesso em setembro de 2011.
Ghiani, G., Musmanno, R., Paletta, G. & Triki, C. (2005). A heuristic for the Periodic Rural Postman Problem.
Computers & Operations Research 32(2):219-228.
Ghiani, G. & Improta, G. (2001). The Laser-plotter Beam Routing Problem. Journal of the Operational Research
Society 52(8):945-951.
Glover, F., Klingman, D. & Philips, N. (1985). A New Polynomially Bounded Shortest Paths Algorithm. Operations
Research 33:65-73.
Glover, F., Glover, R. & Klingman, D. (1984). Computational study of an improved shortest path algorithm.
Networks 14:25-36.
Goldbarg, M. C., Goldbarg, E. F. G. & Costa, W. E. (2002). Evolutionary Algorithms Applied to the Workover Rigs
Schedule Problem. In: Proceedings of the XI Latin-Iberian American Congress of Operations Research.
Goldbarg, M. C., Goldbarg, E. F. G. & Duarte, H. M. (2010). Transgenetic Algorithm for the Periodic Mobile Piston
Pump Unit Routing Problem with Continuous Oil Replenishment. International Journal of Innovative Computing
and Applications, aceito para publicação.
Goldbarg, E. F. G., Goldbarg, M. C. & Medeiros Neto, F. D. (2004). An Evolutionary Approach for the Piston Pump
Mobile Unit Problem. In: Proceedings of MCO´04 Fifth International Conference on Computer Science, Modelling,
Computation and Optimization in Information Systems and Management Sciences 1:281-290.
Goldberg, A. V. & Radzik, T. (1993). A Heuristic Improvement of the Bellman-Ford Algorithm. Applied Mathema-
tics Letters 6:3-6.
Golden, B. L., Assad, A. A. & Wasil, E. A. (2001). Routing Vehicles in the Real World: Applications in the Solid
Waste, Beverage, Food, Dairy and Newspaper Industries. In: Toth, P., Vigo, D. (Eds.). The vehicle routing problem.
Society for Industrial and Applied Mathematics Publisher, 245-286.
Golden, B. L., Magnanti, T. L. & Nguyen, H. Q. (1977). Implementing Vehicle Routing Algorithms. Networks
7:113-148.
Golden, B. L. & Wasil, E. A. (1987). Computerized Vehicle Routing in the Soft Drink Industry. Operations Research
35(1):6-17.
Gropp, H. (2006). Hamiltonian Graphs from Kirkman to König. Electronic Notes in Discrete Mathematics 24:81-88.
Grünewald, M., Lukovszki, T., Schindelhauer, C. & Volbert, K. (2002). Distributed Maintenance of Resource Ef-
ficient Wireless Network Topologies. In: 8th International Euro-Par Conference Paderborn, 935-946.
Hagerup, T. (2000). Improved Shortest Paths in the Word RAM. In: 27th International Colloquium on Automata,
Languages and Programming, 61-72.
Haghani, A. L. (1991). Rail Freight Transportation: A Review of Recent Optimization Models for Train Routing
and Empty Car Distribution. Journal of Advanced Transportations 21(2):147-172.
Hansen, J. & Clausen, J. (2002). Crane Scheduling for a Plate Storage, Informatics and Mathematical Modelling,
Technical University of Denmark.
Harary, F. (1972). Graph Theory, Addison-Wesley.
Henry-Labordere, A. (1969). The Record Balancing Problem: A Dynamic Programming Solution of a Generalized
Traveling Salesman Problem. Revue Française D' Informatique De Recherche Operationnelle B2:43-49.
CAPÍTULO 4  Caminhos 289

Henzinger, M. R., Klein, P., Rao, S. & Subramanian, S. (1997). Faster Shortest-Path Algorithms for Planar Graphs.
Journal of Computer and System Sciences 55(1):3-23.
Hertz, A., Laporte, G. & Nanchen P. (1999). Improvement Procedures for the Undirected Rural Postman Problem.
INFORMS Journal on Computing 11(1):53-62.
Hoeft, E. & Palekar, U. S. (1997). Heuristics for the Plate-cutting Traveling Salesman Problem. IIE Transactions
29:719-731.
Hierholzer, C. (1873). Ueber die Möglichkeit, einen Linienzug ohne Wiederholung und ohne Unterbrechung zu
umfahren, Mathematische Annalen 6(1):30-32.
Hopcroft, J. & Tarjan, R. E. (1973). Efficient Algorithms for Graph Manipulation. Communications of the ACM
16(6):372-378.
Hosoya, H. & Harary, F. (1993). On the Matching Properties of Three Fence Graphs. J. Math. Chem. 12:211-218.
Hsu, C-I., Hung, S-F. & Li, H-C. (2007). Vehicle routing problem with time-windows for perishable food delivery,
Journal of Food Engineering 80:465-475.
Huang, M., Smilowitz, K. & Balcik, B. (2011). Models for relief routing: Equity, efficiency and efficacy. Transporta-
tion Research Part E – In press.
Hu, T. C. (1968). A Decomposition Algorithm for the Shortest Paths. SIAM Journal on Applied Mathematics 16:91-102.
Igartua, M. A. & Frías, V. C. (2010). Self-configured multipath routing using path lifetime for video-streaming
services over Ad Hoc networks, Computer Communications 33:1879-1891.
Itai, A., Papadimitriou, C. H. & Szwarcfiter, J. L. (1982). Hamilton paths in grid graphs. SIAM Journal of Computing
11(4):676-686.
Jaillet, P. (1992). Shortest Path Problems with Nodes Failures. Networks 22:589-605.
Karger, D. R., Motwani, R. & Ramkumar, G. D. S. (1993). On Approximating the Longest Path in a Graph. Lec-
ture Notes in Computer Science 709:421-432.
Karp, R. M. (1972). Reducibility among combinatorial problems. In: Complexity of Computer Computations, Mil-
ler, R.E. & J. W. Tatcher (Eds.) Plenum Pub Corp, 85-103.
Keskin, B., Li, S, R., Steil, D. & Spiller, S. (2011). Analysis of an integrated maximum covering and patrol routing
problem. Transportation Research Part E – In press.
Kirkman, T. P. (1856). On the representation of polyhedra. Philosophical Transactions of the Royal Society A
146:413-418.
Klein, P. N. & Reif, J. H. (1988). An efficient parallel algorithm for planarity, Journal of Computer and System Scien-
ces 37:190-246.
Klots, B., Gal, S. & Harpaz, A. (1992). Multi-Depot and Multi-Product Delivery Optimization Problem with Time
and Services Constraints, IBM Israel Report, 88-315, Science and Tecnology, Haifa, Israel.
Knödel, W. (1975). New gossips and telephones, Discrete Mathematics 13:95.
Korte, B. (1988). Applications of Combinatorial Optimization, Palestra no 13th International Mathematical Pro-
gramming Symposium, Tokyo.
Korostensky, C. & Gonnet, G. H. (2000). Using Traveling Salesman Problem Algorithms for Evolutionary Tree
Construction. Bioinformatics 16:619-627.
Krasikov, I. & Noble, S. D. (2004). Finding next-to-shortest paths in a graph. Information Processing Letters 92:117-119.
Krishnamoorthy, M. S. (1975). An NP-hard problem in bipartite graphs, SIGACT News 7(1):26-26.
Kulcar, T. (1996). Optimizing solid waste collection in Brussels. European Journal of Operational Research 90:71-77.
Lambert, V. G., Laporte, G. & Louveaux, F. (1993). Designing Collection Routes Through Bank Branches. Compu-
ters & Operations Research 20:783-791.
Laporte, G. (2006). La Petite et la Grande Histoire du Problème du Voyageur de Commerce, Congrès de la ROADEF,
http://www.roadef.org/content/road/pdf/GLhistoirePVC.pdf. Acesso em setembro de 2011.
290 Grafos

Laporte, G., Asef-Vazir, A. & Sriskandarajah, C. (1996). Some Applications of the Generalized Travelling Salesman
Problem. Journal of the Operations Research Society 47:1461-1467.
Laporte, G. & Palekar, U. (2002). Some Applications of the Clustered Travelling Salesman Problem. Journal of the
Operations Research Society 53(9):972-976.
Lee, H., Ahn, D. H. & Kim, S. (2003). Optimal Routing in Non-geostationary Satellite ATM Networks with Inter-
satellite Link Capacity Constraints. Journal of the Operations Research Society 54(4):401-409.
Li, H. (1996). A note on hamiltonian claw-free graphs. Rapport de Recherche L. R. I. No 1022, Univ. Paris-Sud, Orsay.
Li, L. Y. O. & Fu, Z. (2002). The School Bus Routing Problem: A Case Study. Journal of the Operations Research
Society 53(5):552-558.
Manber, U. & Israni, S. (1984). Pierce Point Minimization and Optimal Torch Path Determination in Flame Cut-
ting. Journal of Manufacturing Systems 3(1):81-89.
Malmborg, C. J. & Simons, G. R. (1989). Integrating Logistical and Processing Functions Through Mathematical
Modelling. Applied Mathematical Modelling 13(6):357-364.
Marianov, V. & ReVelle, C. (1992). A Probabilistic Fire-Protection Siting Model with Joint Vehicle Reliability Re-
quirements. Journal of Regional Science 71:217-241.
Marsten, R. E., Muller, M. & Killion, C. (1979). Crew Planning at Flying Tiger: A Successful Aplication of Integer
Programming. Management Science 25:1175-1183.
Marsten, R. E. & Shepardson, F. (1981). Exact Solution of Crew Scheduling Problems Using the Set Partitioning
Model: Recent Successful Applications. Networks 11:167-177.
Mei-Ko, K. (1962). Graphic Programming Using Odd or Even Points. Chinese Mathematics 1:273-277.
Minieka, E. (1979). The Chinese Postman Problem for Mixed Networks. Management Science 25:643-648.
Moore, E. F. (1957). The Shortest Path Through a Maze. Proceedings of the International Symposium on the Theory
of Switching, Part II. The Annals of the Computation Laboratory of Harvard University, Cambridge, MA, 1959.
Harvard University Press, 285-292.
Moreira, L. M., Oliveira, J. F., Gomes, A. M. & Ferreira, J. S. (2007). Heuristics for a Dynamic Rural Postman Pro-
blem. Computers & Operations Research 34(11):3281-3294.
Nambiar, J. M., Gelders, L. F. & Van Wassenhove, L. N. (1989). Plant Location and Vehicle Routing in the Malay-
sian Rubber Smallholder Sector: A Case Study. European Journal of Operational Research 38:14-26.
Newton, R. & Thomas, W. (1974). Bus Routing in a MultiScholl System. Computers & Operations Research 1:213-222.
Nishimura, E., Imai, A. & Papadimitriou, S. (2005). Yard Trailer Routing at a Maritime Container Termina. Trans-
portation Research Part E 41:53-76.
Nobert, Y. & Picard, J-C. (1996). An Optimal Algorithm for the Mixed Chinese Postman Problem, Networks,
27(1):95-108.
Ore. Ø. (1961). Arc coverings of graphs. Ann. Mat. Pura Appl. 4(55):315-321.
Othman, J. B. & Mokdad, L. (2010). Enhancing data security in ad hoc networks based on multipath routing,
J. Parallel Distrib. Comput. 70:309-316.
Pallottino, S. (1984). Shortest-Path Methods: Complexity, Interrelations and New Propositions. Networks 14:257-
267.
Pape, U. (1974). Implementation and Efficiency of Moore Algorithms for the Shortest Root Problems. Mathemati-
cal Programming 7:212-222.
Pape, U. (1988). Car Transportation by Truck. In: Golden, E. L., Assad, A. A. (Eds.). Vehicle Routing: Methods and
Studies, North-Holland, 425-437.
Papadimitriou, C. H. & Steiglitz, K. (1982). Combinatorial Optimization: Algorithms and Complexity, Prentice-Hall,
Englewood Cliffs.
Papadimitriou, C. H. & Steiglitz, K. (1976). Some complexity results for the traveling salesman problem. In: Proc.
8th Ann. ACM Symp. on Theory of Computing, 1-9.
CAPÍTULO 4  Caminhos 291

Paulraja, P. (1993). A characterization of Hamiltonian prisms. Journal of Graph Theory 17(2):161-171.


Pearl, J. & Daskin, M. S. (1985). A Warehause Location-Routing Problem. Transportation Research B19:381-396.
Pearn, W. L. (1994). Solvable Cases of the k-Person Chinese Postman Problem. Operations Research Letters
16(4):241-244.
Pearn, W. L. & Lin, M. L. (1994). Algorithms for the Windy Postman Problem. Computers & Operations Research
21(6):641-651.
Pearn, W. L. & Liu, C. M. (1993). Algorithms for the Chinese Postman Problem on Mixed Networks. Computers &
Operations Research 22(5):479-489.
Pearn, W. L. & Liu, C. M. (1995). Algorithms for the Rural Postman Problem. Computers & Operations Research
22(8):819–828.
Pettie, S. & Ramachandran, V. (2005). A Shortest Path Algorithm for Real-Weighted Undirected Graphs. SIAM J.
Compt. 34(6):1398-1431.
Pevzner, P. A., Tang, H. & Waterman, M. (2001). An Eulerian Path Approach to DNA Fragment Assembly. In:
Proceedings of the National Academy of Sciences 98(17):9748-9753.
Plante, R. D., Lowe, T. J. & Chandrasekaran, R. (1987). The Product Matrix Traveling Salesman Problem: An Appli-
cation and Solution Heuristic. Operations Research 35(5):772-783.
Pyber. L. (1985). An Erdős-Gallai conjecture. Combinatorica 5:67–79.
Qureshi, M. A., Hassan, M. F., Safdar, S. & Akbar, R. (2011). A Framework to Recover Single Link Failure on Shor-
tes Path in Shortes Path Tree. Journal of Applied Sciences 11(16):2916-2923.
Raman, R. (1997). Recent Results on Single Source Shortest Paths Problem. SIGACT News 28:81-87.
Raman. R. (1996). Priority Queues: Small, Monotone and TransDichotomous. In: Proceedings 4th Annual European
Symposium Algorithms, Lecture Notes in Computational Science 1136:121-137.
Ramesh, T. (1981). Traveling Purchaser Problem. OPSEARCH 18(2):78-91.
Rao, S. & Zhou, S. (2006). Edge Disjoint Paths in Moderately Connected Graphs, M. Bugliesi et al. (Eds.): ICALP
2006, Part I. Lecture Notes in Computer Science 4051:202-213.
Ratliff, H. D. & Rosenthal, A. S. (1981). Order-Picking in a Rectangular Warehouse: A Solvable Case for the Traveling
Salesman Problem, PDRC Report Series 81-10, Georgia Institute of Technology, Atlanta, Georgia.
Robertson, N. & Seymour, P. D. (1990). An outline of a disjoint paths algorithm. Paths, Flows and VLSI-design.
Algorithms and Combinatorics 9:267-292.
Ronen, D. (2002). Marine Inventory Routing: Shipments Planning. Journal of the Operations Research Society
53(1):108-114.
Roy, B. (1969). Algèbre Moderne et Théorie des Graphes Orientées vers les Sciences Économiques et Sociales: Tome 1:
Notions et Résultats Fondamentaux, Dunod, Paris.
Ryjáček, Z. (1997). On a closure concept in claw-free graphs. J. Combin. Theory Ser. B70:217-224.
Saeed, G., Brown, A., Knight, M. & Winchester, M. (2010). Delivery of pedestrian real-time location and routing
information to mobile architectural guide, Automation in Construction 19:502-517.
Salomon, M., Solomon, M. M., Van Wassenhove, L. N., Dumas Y. & Dauzère-Pérès, S. (1997). Solving the Discrete
Lotsizing and Scheduling Problem with Sequence Dependent Set-Up Costs and Set-Up Times Using the Travelling
Salesman Problem with Time Windows. European Journal of Operational Research 100:494-513.
Solomon, M. M., Chalifour, A., Desrosiers, J. & Boisvert, J. (1992). An Application of Vehicle Routing Methodo-
logy to Large-scale Larvicide Control Programs. Interfaces 22:88-99.
Sankaran, J. & Ubgade, R. (1994). Routing Tankers for Dairy Milk Pickup. Interfaces 24:59-66.
Saskena, J. P. (1970). Mathematical Model of Scheduling Clients through Welfare Agencies. Journal of the Cana-
dian Operational Research Society 8:185-200.
292 Grafos

Sheehan, J. (1975). The Multiplicity of Hamiltonian circuits in a graph. Recent Advances in Graph Theory. (ed. M.
Fiedler), Academia Prague, 447-480.
Schneider, L. M. (1985). New Era in Transportation Strategy. Harvard Business Review, 118-126.
Skiena S. (1990). Implementing Discrete Mathematics: Combinatorics and Graph Theory With Mathematica, Perseus
Books.
Solot, P., Cuenot, E. & Proca, A. (1990). The Distribuition of Fotographic Material in Switzerland. INFOR 29:213-
222.
Stern, H. I. & Dror, M. (1978). Routing Eletric Meter Readers. Computers & Operations Research 6:209-223.
Tang, L., Liu, J., Rong, A. & Yang, Z. (2000). A Multiple Traveling Salesman Problem Model for Hot Rolling Sche-
duling in Shanghai Baoshan Iron & Steel Complex. European Journal of Operational Research 124:267-282.
Tarantilis, C. D. & Kiranoudis, C. T. (2002). Distribution of Fresh Meat. Journal of Food Engineering 51:85-91.
Thorup, M. (1999). Undirected SingleSource Shortest Paths with Positive Integer Weights in Linear Time. Journal
of the Association for Computing Machinery 46:362-394.
Thorup, M. (2000a). On RAM Priority Queues. SIAM Journal on Computing 30:86-109.
Thorup, M. (2000b). Near-optimal fully-dynamic graph connectivity. In: Proceedings of the 32nd ACM Symposium
on Theory of Computing (STOC’00), 343-350.
Timlin, M. T. & Pulleyblank, W. R. (1990). Procedence Constrained Routing and Helicopter Sheduling: Heuristic
Design, Departamento of Combinatoric and Optimization University of Waterloo, Canada.
Träff, J. L. & Zaroliagis, C. D. (1996). A Simple Parallel Algorithm for the Single-source Shortest Path Problem
on Planar Digraphs. International Workshop of Parallel Algorithms for Irregularly Structured Problems (IRREGU-
LAR-3), Lecture Notes in Computer Science 1117:183-194.
Vaidyanathan, B. S., Matson, J. O., Miller, D. M. & Matson, J. E. (1999). A Capacitated Vehicle Routing Problem for
Just-in-time Delivery. IIE Transactions 31(11):1083-1092.
Van Vliet, A., Boender, C. G. E. & Rinnooy Kan, A. H. G. (1992). Interactive Optimization of Bulk Sugar Deliver-
ies. Interfaces 22:4-14.
Wang, Q., Golden, B. L., Wasil, E. A. & Bashyam, S. (1996). An Operational Analysis of Shell Planting Strategies for
Improving the Survival of Oyster Larvae in the Chesapeake Bay. INFOR 34:181-196.
Warshall, S. (1962). A Theorem on Boolean Matrices. Journal of the Association for Computing Machinery 28:11-12.
Whitley, D., Starkwheather, T. & Shaner, D. (1991). The Traveling Salesman and Sequence Scheduling: Quality
Solutions Using Genetic Recombinations. In: Davis Van Nostrand, L. D. (Ed.), Handbook of Genetic Algorithms,
350-372.
Yan, S. & Yu-ping T. (1997). Multifleet Routing and Multistop Flight Scheduling for Schedule Perturbation. Euro-
pean Journal of Operational Research 103:155-169.
Zacharia, P. Th. & Aspragathos, N. A. (2005). Optimal robot task scheduling based on genetic algorithms. Robotics
and Computer-Integrated Manufacturing 21:67-79.
Zhang, L. (1992). Polynomial Algorithms for the k-Chinese Postman Problem. In: van Leeuwen, J. (Ed.). In: Pro-
ceedings of the IFIP 12th World Computer Congress 1: Algorithms, Software, Architecture, 430-435.
Zhang, Z. & Li, H. (2007). Algorithms for Long Paths in Graphs. Theoretical Computer Science 377:25-34.
Zubrow. E. B. W. (2005). Prehistoric Space: An Archeological Perspective, Journal of World Anthropology: Occa-
sional Papers II(1):1-42.
CAPÍTULO 5  Subconjuntos de vértices e arestas 293

capítulo
294 Grafos

5.1 Coberturas
Encontrar uma cobertura de vértices
Cobertura de Vértices
Ĉ em um grafo sem características
particulares é
Denomina-se cobertura de vértices de G, um conjunto Cˆ de vértices tal que
toda aresta de G tem pelo menos uma extremidade em Cˆ . NP-Difícil
O conjunto de todas as coberturas de vértices de G é denotado por Cˆ (G).
Como o conjunto de vértices N é uma solução trivial para o problema, a noção
de cobertura de vértices é minimal e o número de cobertura de vértices é ex-
presso por b(G): O invariante b(G) é denominado
também número de absorção.
b
Encontrar uma cobertura de arestas
Cobertura de Arestas
Eˆ em um grafo sem características
particulares é
Denomina-se conjunto cobertura de arestas em G um conjunto Ê de arestas tal
que todo vértice de G seja incidente a pelo menos uma aresta de Ê.
polinomial
O conjunto de todas as coberturas de arestas de G é denotado por Ê(G).
Como o conjunto de arestas M é uma solução trivial para o problema, a noção
de conjunto cobertura de arestas é minimal e pode ser expressa por a(G).
A cobertura mínima de arestas
pode ser pode ser solucionada
a em

(Micali & Vazirani, 1980)


Cobertura com Vértices Ponderados
Dados um grafo G e uma função de ponderação dos vértices de G, o proble-
ma da cobertura com vértices ponderados ou capacitados em G consiste em Encontrar uma cobertura com vértices
encontrar um subconjunto de vértices de G que constituam uma cobertura de ponderados em um grafo sem caracte-
vértices em G e, para todos os vértices da cobertura, a soma de seus pesos seja rísticas particulares é

NP-Difícil
As Figuras 5.1(2) e (3) exibem dois conjuntos de cobertura de vértices do grafo da Figura 5.1(1). Os conjuntos
C1 e C2 possuem cardinalidade 1 e 4, respectivamente. A Figura 5.1(3) exibe uma cobertura minimal que não é
mínima. A literatura eventualmente denomina cobertura qualquer conjunto de vértices que atenda a exigência de
incluir todas as arestas de G. É comum denominar-se uma cobertura mínima de boa cobertura. A Figura 5.1(5)
exibe em E1 uma cobertura em aresta do grafo da Figura 5.1(4).
CAPÍTULO 5  Subconjuntos de vértices e arestas 295

(1) Grafo G (2) Cobertura C1 = {3} (3) Cobertura C2 = {1,2,4,5}

(4) Grafo G (5) Cobertura de arestas E = {(1-2),(3-7),(6-7),(4-5)}

Figura 5.1 Cobertura de vértices e arestas

❂ Cobertura de Vértices – Dicas de Trabalhos

Dinur & Safra (2005) apresentam um estudo sobre a dificuldade de solução do problema de cobertura de vértices. Dinur
& Safra (2002) demonstram que, se P≠NP, a melhor aproximação possível para esse problema é 1.36. Karakostas (2005)
apresenta um algoritmo com aproximação para o problema.

O problema de cobertura de vértices pode ser definido tanto sobre grafos ponderados nos vértices (também
denominados capacitados) como em grafos não ponderados. Um grafo não ponderado em vértices pode ser
considerado equivalente ao caso particular de um grafo ponderado em que todos os vértices possuam o mesmo
peso. As Figuras 5.2(2)-(4) exemplificam soluções de cobertura para o caso ponderado ilustrado no grafo da Fi-
gura 5.2(1). O valor numérico junto ao vértice representa seu peso. A cobertura de vértices capacitados mostrada
na Figura 5.2(2) é composta por vértices com ponderação 5, 2, 8, 7 e 3, somando 25. Na cobertura mostrada na
Figura 5.2(3) existem quatro vértices com peso 1, além de vértices com peso 2, 5 e 8, somando 19. Finalmente, na
Figura 5.2(3) a cobertura é composta por todos os vértices do grafo a menos de dois vértices. Essa cobertura tem
ponderação 20.
296 Grafos

(1) Grafo G (2) Cobertura com ponderação 25

(3) Cobertura com ponderação 19 (4) Cobertura com ponderação 21

Figura 5.2 Coberturas de vértices ponderadas

❂ Cobertura Ponderada – Dicas de Trabalhos

Pitt (1985) sugere um algoritmo de escolha aleatória com probabilidade inversamente proporcional aos pesos dos vérti-
ces. Motwani (1992) propõe algoritmos de escolha gulosa para os vértices baseados em uma razão entre o peso do vértice
e seu grau. Clarkson (1983) apresenta um algoritmo guloso que se baseia na seleção dos vértices com a menor razão entre
peso e grau, contudo com o peso sendo modificado pelo próprio algoritmo. Shyu et al. (2004) relatam um algoritmo meta-
-heurístico baseado no colônia de formigas.
CAPÍTULO 5  Subconjuntos de vértices e arestas 297

No caso de grafos direcionados


Cobertura em Caminhos de G L  {2,3,...} e a cobertura em
k-ciclos, k = 2 é polinomial
Uma cobertura em caminhos em G é um conjunto de caminhos disjuntos em
(Ahuja et al., 1993). Para k
vértices – sem vértices em comum – que passam por todos os vértices de G.
≥ 3 o problema em grafos
direcionados é NP-completo
Cobertura em Ciclos de G (Garey & Johnson, 1979). No
caso de grafos não direcionados,
Uma cobertura em ciclos em G é um conjunto de ciclos disjuntos em vértices L  {3,4,...}. Nesses grafos, a
– sem vértices em comum – que passam por todos os vértices de G. cobertura em k-ciclos, k = 3
pode ser solucionada em tempo
Cobertura em L-Ciclos polinomial (Edmonds, 1965).
Hartivgsen (1984) apresenta
Uma cobertura em L-ciclos é uma cobertura em que o comprimento de cada algoritmos polinomiais para
ciclo está no conjunto L. os problemas com k  =  4,5.
Vornberger (1980) mostra
Cobertura em k-Ciclos que o problema em grafos não
direcionados é NP-completo
Trata-se de um caso especial de L-ciclos. Uma cobertura é dita k-ciclos quando para k > 5.
o comprimento de cada ciclo deve ser de pelo menos k. Se k = n, então tem-
-se o ciclo hamiltoniano. NP-Difícil

Teorema 5.1
(Teorema de Menger)
Em um grafo G o número máximo de distintos caminhos disjuntos em arestas
ligando dois vértices s-t é igual ao menor número de arestas que devem ser re-
movidas de G para desconectar s de t – cardinalidade de um corte em arestas
(Menger, 1927).

As Figuras 5.3(2) e 5.3(3) apresentam duas coberturas em caminhos disjuntos do grafo da Figura 5.3(1). A Fi-
gura 5.3(4) é uma cobertura de ciclos do mesmo grafo.

(1) Grafo G (2) Primeira cobertura em caminhos


298 Grafos

(3) Segunda cobertura em caminhos (4) Cobertura em ciclos

Figura 5.3 Cobertura em caminhos e ciclos disjuntos

❂ Cobertura de Ciclos – Dicas de Trabalhos

A NP-Completude do problema é estudada em Thomassen (1997). Trabalhos relacionados ao tema foram apresentados
por Tutte (1954), Hartvigsen (1999) e Bläser & Manthey (2005).

A determinação de uma cobertura


Cobertura Mínima em Caminhos de G mínima em caminhos em um
Determinar a menor coleção possível de caminhos disjuntos que percorra to- grafo G é
dos os vértices de G. O problema também é denominado de particionamento
no menor número de caminhos disjuntos em vértices. NP-Difícil

A Figura 5.4 ressalta que uma cobertura mínima em caminhos em um grafo hamiltoniano é um caminho ha-
miltoniano. Golumbic (1980) demonstra que o problema é NP-Difícil. Bui et al. (1987) e Plaisted (1990) apresen-
tam heurísticas para o problema, e Jin & Li (2006) abordam o problema das k-coberturas em grafos cactos.

(1) Grafo G (2) Uma cobertura em caminhos


Figura 5.4 Cobertura em caminhos em um grafo hamiltoniano
CAPÍTULO 5  Subconjuntos de vértices e arestas 299

Partição em Caminhos k-longos Encontrar uma partição k-longa


O problema da cobertura mínima com caminhos disjuntos com no máximo em um grafo G é
k vértices – partição k-longa – consiste em, dado um grafo G, determinar a car-
dinalidade mínima da coleção de caminhos disjuntos em vértices com no má- NP-Difícil
ximo k vértices que particionam G.

As Figuras 5.5(1) e (2) exemplificam coberturas em caminhos disjuntos em vértices com comprimento k ≤ 3,4,
respectivamente, para o grafo da Figura 5.4(1).

(1) Partição em caminhos 3-longos (2) Partição em caminhos 4-longos


Figura 5.5 Coberturas em caminhos de comprimento k ou menores
Determinar uma cobertura
Cobertura Parcial Máxima parcial máxima em G é
Dados dois números inteiros k > 0 e l > 0, uma cobertura parcial máxima é
aquela que, possuindo no máximo k vértices, cobre pelo menos l arestas de G. NP-Difícil

As Figuras 5.6(1) e (2) exemplificam coberturas parciais máximas do grafo da Figura 5.6(1) para k = 2 e l = 10
e para k = 3 e l = 13.
300 Grafos

(1) Cobertura máxima parcial k = 2 e l = 10 (2) Cobertura máxima parcial k = 3 e l = 13

Figura 5.6 Coberturas parciais máximas

❂ Cobertura Parcial – Dicas de Trabalhos

Este problema admite um fator de aproximação igual a 2 (Bshouty & Burroughs, 1998). Mestre (2005) apresenta um al-
goritmo primal-dual e 2-aproximado com complexidade em tempo de O(nlogn+m).

Determinar uma cobertura


Cobertura Conexa de Vértices conexa de vértices mínima em

O problema consiste em determinar uma cobertura de vértices que induz um
subgrafo conexo em G.
NP-Difícil

A Figura 5.7(1) mostra um grafo rotulado em vértices e as Figuras 5.7(2), (3) e (4) mostram subgrafos indu-
zidos pelas coberturas de vértices C1 = {2, 4, 5, 6, 8}, C2 = {1, 2, 3, 4, 5, 7, 9} e C3 = {1, 2, 3, 4, 6, 7, 8, 9}. As Figuras
5.7(2) e (4) mostram que as coberturas C1 e C3 induzem subgrafos conexos, caracterizando, portanto, coberturas
conexas de vértices. O subgrafo induzido pela cobertura C2 mostrado na Figura 5.7(3) não é conexo.
CAPÍTULO 5  Subconjuntos de vértices e arestas 301

(1) Grafo G (2) Subgrafo induzido pela cobertura C1

(3) Subgrafo induzido pela cobertura C2 (4) Subgrafo induzido pela cobertura C3

Figura 5.7 Subgrafos induzidos por coberturas de vértices

❂ Cobertura Conexa – Dicas de Trabalhos

O problema da cobertura conexa mínima admite um fator de aproximação igual a 2 (Savage, 1982). Mölle et al. (2008) sugerem
algoritmos para o problema. Fernau & Manlove (2009) apresentam uma revisão atualizada dos algoritmos de solução para o
presente problema.
302 Grafos

t-Cobertura Total de Vértices (Arestas) O conceito de t-cobertura total


de vértices e arestas é apresentado
Uma t-cobertura total de vértices (ou arestas) é uma cobertura S de G tal que por Fernau & Manlove  (2009),
cada subgrafo conexo induzido por S possui pelo menos t vértices (arestas). generalizando o clássico conceito de
cobertura de vértices (arestas).
Número t-Cobertura Total
Os invariantes são notados por α0,t(G)
O número de t-cobertura total é a cardinalidade da menor t-cobertura total. e α1,t(G).

a0,t (G) – Número de t-cobertura de arestas a0,t (G)

a1,t (G) – Número de t-cobertura de vértices a1,t (G)

T-Clique
Existem O(3n/3)
Um subconjunto N’N de tamanho t é denominado T-clique se ele cliques maximais distintas
induz um subgrafo completo. w(G) em um grafo com n vértices.

(Moon & Moser, 1965)


Clique Maximal e Máxima
A determinação da clique máxima é
U clique
Uma li é maximal
i l se não
ã for
f subgrafo
b f próprio
ó i ded nenhuma
h um problema
outra. w(G)
Uma clique é dita máxima se não houver outra clique em G com
cardinalidade maior. NP-Difícil

A cardinalidade da clique máxima de um grafo G é denotada por w(G). As Figuras 5.8(2)-(3) apresentam
T-cliques do grafo da Figura 5.8(1). A Figura 5.8(2) mostra a clique máxima do grafo.

(1) Grafo G (2) 4-clique e clique máxima (3) 3-clique e clique maximal
CAPÍTULO 5  Subconjuntos de vértices e arestas 303

(4) Clique 3-5-6 (5) Clique 4-5-6 (6) Clique 3-4-5

Figura 5.8 Cliques, cliques maximais e cliques máximas


As Figuras 5.8(4)-(6) exibem cliques que não são maximais ou máximas, uma vez que as mesmas são subgrafos
próprios da clique {2,4,5,6} e, consequentemente, possuem cardinalidade inferior a essa clique – Figura 5.8(2).
Associado à determinação de cliques maximais em G destaca-se o problema de enumerá-las exaustivamente.

O Problema de Enumerar as Cliques de G


p
O problema de enumerar as cliques maximais de um grafo é NP-Difícil.

A clique máxima pode ser solucionada em tempo polinomial pelo menos no caso de grafos
planares (Garey & Johnson, 1979), cordais (Gavril, 1972), grafos de comparabilidades (Even
et al., 1972) e grafos circulares (Gravril, 1973).

❂ Clique Máxima/Maximal – Dicas de Trabalhos

Bomze et al. (1999) apresentam um trabalho abrangente sobre o problema da clique maximal. Tomita et al. (2006) anali-
sam a complexidade de diversos algoritmos de solução do problema da clique maximal. Hansen et al. (2004) apresentam
um algoritmo VNS – Variable Neighborhood Search e Pullan & Hoos (2006) um algoritmo estocástico baseado em busca
local para a clique máxima. Galluccio & Nobili (2006) desenvolvem um algoritmo polinomial aproximativo para esse
último problema.
304 Grafos

Cobertura de Cliques
Determinar uma cobertura de clique
Uma cobertura de clique de um grafo G é um conjunto de subgrafos completos mínima em um grafo G é
de G que contém cada aresta de G pelo menos uma vez.

Número Cobertura de Clique NP-Difícil


cc(G)
O número de cobertura de cliques – cc(G) é a cardinalidade da menor cober- Decidir se um grafo G tem uma parti-
tura de cliques de G. ção em k cliques é:

Cobertura de Cliques Mínima


NP-Completo
Uma cobertura de cliques é dita mínima quando possui sua cardinalidade igual
a cc(G).
( )
Partição em Cliques Uma partição de cliques mínima não
contém cliques de comprimento 1.
Uma partição em cliques é uma partição das arestas de G em um conjunto de
k cliques, de forma que cada aresta de G seja incluída exatamente uma vez em
Observar que a partição em cliques
alguma clique.
e cobertura de cliques são conceitos
muito próximos, todavia distintos. Na
Número de Partição de Cliques
cp(G) cobertura de cliques uma aresta de
G pode ser incluída em mais de uma
O número de partição de cliques – cp(G) é a cardinalidade da menor partição clique, o que não ocorre na partição. A
de cliques de G. Figura 5.9(2) apresenta uma cobertura
de cliques do grafo da Figura 5.9(1).
Partição de Cliques Mínima Observe a repetição da inclusão das
arestas 3-4 e 8-3, por exemplo.
Uma partição de cliques é dita mínima quando possui sua cardinalidade igual

(1) Grafo G (2) Cobertura de cliques

Figura 5.9 Cobertura de cliques


CAPÍTULO 5  Subconjuntos de vértices e arestas 305

(1) Grafo G (2) Partição de cliques

Figura 5.10 Partição de cliques

A união das arestas das seis cliques da Figura 5.9(2) produz o conjunto de arestas do grafo da Figura 5.9(1).
No exemplo, cc(G) = 6. A Figura 5.10(2) exibe uma partição de cliques do grafo da Figura 5.10(1). No exemplo,
cp(G) = 6. A demonstração da NP-completude desse problema em Karp (1972) é aplicável às duas variantes – co-
bertura e partição. Ausiello et al. (1999) demonstram que o problema da cobertura de cliques em arestas pode ser
aproximado por um fator constante. A seguinte questão é um problema desafio:

Questão
p
Existe uma solução que minimize a soma do tamanho das cliques de cobertu-
ra, mas não minimize o número dessas cliques?

❂ Cobertura de Cliques – Dicas de Trabalhos

São disponíveis algoritmos para o problema nos trabalhos de Rhee & Liang (1996) e Keil & Stewart (2006).
306 Grafos

5.2 Conjunto Dominante, Independente e k-Packing

Conjunto Dominante
Dados um grafo G = (N,M) e um conjunto D̂  N, D̂ é dito um conjunto domi- Determinar o conjunto domi-
nante quando para todo x  N existe w  D̂ tal que x  Γ(w) ou x  D̂ . O conjunto nante de mínima cardinalidade
de todos os conjuntos dominantes de vértices do grafo G é notado por D̂ (G). em um grafo G sem característi-
Como o conjunto N é uma solução trivial do problema, a noção de conjunto cas particulares é
dominante é minimal e pode ser expressa pelo parâmetro b0(G).
NP-Difícil
b0

As Figuras 5.11(2) e (3) exibem conjuntos dominantes do grafo da Figura 5.11(1). No caso, o conjunto domi-
nante de mínima cardinalidade corresponde ao conjunto D̂. As Figuras 5.11(3) e (4) exibem uma comparação
entre um conjunto dominante e uma cobertura de vértices para o grafo da Figura 5.11(1). Observar em azul as
arestas não cobertas pelo conjunto dominante D̂1.

(1) Grafo G (2) Conjunto D̂ 1 = {a,d} (3) Conjunto D̂ 2 = {f}

(4) Cobertura (5) Arestas não “cobertas” pelo conjunto dorminante D̂ 1

Figura 5.11 Conjuntos dominantes e cobertura de vértices

No caso do grafo da Figura 5.11(1), 0 = 1. Alguns autores distinguem conjuntos dominantes conexos e desco-
nexos (Wu et al., 2006).
CAPÍTULO 5  Subconjuntos de vértices e arestas 307

Conjunto Dominante Perfeito


Um conjunto dominante D̂ é dito dominante perfeito quando para qualquer
vértice x  N \D̂ existe um e somente um vértice w  D̂ tal que x  Γ(w).

Conjunto Dominante Conexo


Um conjunto dominante D̂ é dito conexo quando o subgrafo induzido por D̂ é
conexo. (1) Dominante conexo

Conjunto Dominante Independente


Um conjunto dominante D̂ é dito independente quando não existem vértices
vizinhos em D̂ .

Vértice Universal ou Dominante


Um vértice é denominado universal ou dominante quando seu grau é n–1.
(2) Dominante independente

Figura 5.12

A Figura 5.12(1) exemplifica um conjunto dominante conexo nos vértices 2, 3 e 4 em azul. A Figura 5.12(2)
exemplifica um conjunto dominante independente nos vértices 1, 5 e 6 em amarelo. Ambos os conjuntos domi-
nantes exemplificados são perfeitos. A Figura 5.13 exemplifica outros conjuntos dominantes e o conceito de vértice
dominante. Como se observa em 5.13(1) é possível um conjunto ser dominante perfeito, independente e também
ser composto por um vértice dominante.

(1) Vértice dominante (2) Conjunto dominante conexo (3) Dominante não conexo

Figura 5.13 Exemplo de conjuntos dominantes

❂ Cobertura Dominante – Dicas de Trabalhos

Ruan et al. (2004) apresentam um algoritmo guloso para conjuntos dominantes conexos com razão de desempenho logD
+ 2, onde D é o máximo grau do grafo.
308 Grafos

Dominância de Vértices

Em um torneio T, diz-se que o vértice v domina o vértice w quando, no grafo,


Um torneio é um grafo dire-
existe o arco (v,w).
cionado cujo grafo subjacente
é completo. Em um torneio
O escore de v é o número de vértices dominados por v. existe um arco entre cada par de
O in-escore de v é o número de vértices que dominam v. vértices.

Um torneio T é dito regular se todos os escores de T são iguais.


Um torneio T é dito duplamente regular quando cada par de vértices de T do-
mina um mesmo número de vértices distintos.

No grafo exemplo da Figura 5.14(1) o vértice 2 domina os vértices 1 e 4 e é dominado pelo vértice 3, o qual
domina todos os vértices do torneio. A dominância de vértices é um conceito associado aos torneios. Conforme
visto no Capítulo 1, o torneio da Figura 5.14(1) é redutível, conforme ilustrado pelos subconjuntos de vértices U1 e
U2 na Figura 5.14(2), onde os arcos que ligam vértices do conjunto U1 aos vértices do conjunto U2 são direcionados
de U1 para U2. Uma sequência de escores em um torneio é um conceito relacionado ao de sequência de graus em
um grafo não direcionado. Uma sequência de escores de um torneio T é uma sequência não decrescente de graus
de saída dos vértices de T.

(1) Torneio com 4 vértices (2) Conjuntos U1 e U2

Figura 5.14 Dominância de vértices

Vértice Rei
Um rei é um vértice que alcança qualquer outro vértice de um torneio utili-
zando no máximo dois arcos.

Todo vértice de maior grau externo (escore) em um torneio é rei (Landau,


1953).

Vértice Imperador
Um imperador é um vértice que alcança qualquer outro vértice de um torneio Vértices rei
em um arco.
O vértice 3 da Figura 5.14(1) é um im-
perador.
CAPÍTULO 5  Subconjuntos de vértices e arestas 309

Conjunto Independente
Um grafo G é dito bem coberto
Dados um grafo G = (N,M) e um conjunto I  N, I é dito um conjunto indepen- se todo conjunto independente
dente ou um conjunto de estabilidade de G quando para todo x  N e s  I, se maximal de G possui a mesma
x  Γ(s), então x  I. Alguns autores denotam o conjunto de todos os conjuntos cardinalidade.
independentes de vértices do grafo G como S(G).
A noção de conjunto independente é maximal e pode ser expressa pelo parâ-
metro a0(G). Determinar o número de estabilida-
de de um grafo é
a0
NP-Difícil

As Figuras 5.15(2) e (3) exemplificam conjuntos independentes maximais do grafo da Figura 5.15(1). A Figura
5.15(3) mostra um conjunto independente de máxima cardinalidade, portanto um conjunto independente máximo.

(1) Grafo G (2) Conjunto S1 = {a,d} (3) Conjunto S2 = {a,c,e}

Figura 5.15 Exemplo de conjunto independente de vértices

Teorema 5.2

Para todo grafo G(N,M)

Teorema 5.3
Dada uma cobertura de vértices em G, todos os vértices que não pertencem a
cobertura definem um conjunto independente (Skiena 1990, p. 218).

❂ Conjunto Independente – Dicas de Trabalhos

Pullan (2009) relata um algoritmo de busca estocástica para a solução da determinação de conjuntos independentes em
grafos com vértices ponderados / não ponderados.
310 Grafos

k-Packing Um conjunto independente de um


grafo G é um 1-packing de G.
Denomina-se k-packing de G um conjunto υ de vértices tal que todo par de Para todo k-packing, k > 1, se dois
vértices u, v  υ tem distância d(u,v) > k. O conjunto de todos os k-packings de vértices u e v  υ, então Γ(u)  Γ(v)
G é denotado por PK(G). = .
A noção de k-packing é maximal e pode ser expressa pelo parâmetro b1(G). Determinar um k-packing maxi-
mal em G é
b1
NP-Difícil

As Figuras 5.16(1) e (2) exibem dois 2-packings para o mesmo grafo. O conjunto  exibido na Figura 5.16(2)
possui cardinalidade máxima.

(1) 2-packing maximal (2) 2-packing máximo

Figura 5.16 2-packings em G

O mesmo conceito é abordado no trabalho de Wolch & Wolch (2010) sob o nome de conjuntos k-independentes.
Os autores estudam o número de conjuntos k-independentes em diversas famílias de grafos.

5.3 Emparelhamento ou Matching


Emparelhamento ou Matching O conceito análogo à
propriedade de boa cobertura
Dado um grafo G = (N,M), um emparelhamento em G – ou matching em G, é
considerado em relação
definido pelo conjunto E de arestas tal que nenhum vértice de G seja incidente
às arestas é denominado
em mais de uma aresta de E. O conjunto de todos os emparelhamentos de G
equimatchable ou
será denotado por E(G).
bem emparelhado.
Como um conjunto vazio de arestas é um emparelhamento trivial, a noção de Um grafo é dito bem
emparelhamento é maximal e pode ser expressa pelo parâmetro a1(G). emparelhado quando todo
emparelhamento maximal é

a1
Polinomial

As Figuras 5.17(1) – (3) exibem, através das arestas em vemelho, matchings do grafo da Figura 5.17(1). Em um
emparelhamento dA(i)1, iN, onde dA(i) é o grau do vértice i no emparelhamento. Alguns autores denominam
essa estrutura arestas de 1-emparelhamento. Se o grafo é ponderado, define-se emparelhamento de custo mínimo
como o emparelhamento de máxima cardinalidade cuja soma do valor das arestas é mínimo.
CAPÍTULO 5  Subconjuntos de vértices e arestas 311

(1) E = {(a-b),(e-g),(c-d)} (2) E = {(a-f),(e-g),(b-c)} (3) E = {(a-g),(f-d)}

(4) Grafo G (5) 2-Emparelhamento (6) Matching Perfeito

Figura 5.17 Alguns exemplos de matchings e de um emparelhamento perfeito

A generalização no conceito de emparelhamento permite considerar dA(i) b, onde b é um inteiro positivo. A
Figura 5.17(5) exibe um 2-emparelhamento do grafo da Figura 5.17(4). Um emparelhamento que cobre todos os
vértices de G é dito completo ou perfeito. A Figura 5.17(6) exibe um emparelhamento perfeito através das arestas
em vermelho para o grafo da Figura 5.17(1).

Tabela 5.1 (1): Algoritmos para solução do matching em grafos


Algoritmos Exatos
Trabalho Técnica Utilizada Complexidade
Edmonds (1965) Contração de ciclos ímpares e expansão de “blossoms” O(n4)
Hopcroft & Karp (1973) Utilizando uma coleção selecionada de caminhos aumentantes em n0,5 fases O(mn0,5)
Kameda & Munro (1974) Determinação do caminho aumentante através de busca em largura O(mn)
Even e Kariv (1975) Aperfeiçoamento das estruturas de dados do algoritmo de Edmonds O(n2,5) e O(mn0,5logn)
Even e Tarjan (1975) Uma implementação eficiente do algoritmo de Dinic (1970) para fluxo em O(n2,5) – grafos bipartidos
redes
Gabow (1976) Evitando a contração explícita de ciclos ímpares no algoritmo de Edmonds O(n3)
(1965)
Lawler (1976) Evitando a contração explícita de ciclos ímpares no algoritmo de Edmonds O(n3)
(1965)
Micali & Vazirani (1980) Minimização do caminho aumentante e uma técnica especial de rotulação O(mn0,5)
Papadimitriou & Steiglitz Expansão e contração de “blossoms” e rotulação de caminhos aumentantes O(n4) e O(n3)
(1982)
Ball & Derigs (1983) Menores caminhos aumentantes O(mnlogn)
Rabin & Vazirani (1984) Inversão de matrizes de Coppersmith & Winograd (1982) O(n3,5)
Derigs (1988) Caminhos mais curtos O(mn0,5)
Blum (1990) Melhorias no algoritmo de Edmonds (1965) O(mn0,5)
312 Grafos

Gabow & Tarjan (1991) Diversos aperfeiçoamentos no algoritmo de Edmonds (1965) O(mn0,5)
Cheriyan (1994) Algoritmo Las Vegas baseado na decomposição de Gallai-Edmonds O(n2,38) – tempo esperado
Gabow et al. (2001) Conectividade dinâmica e caracterizando matching em termos de pontes (Kot- O(mlog4n) e para grafos planares
zig, 1955) O(nlogn)

Tabela 5.1 (2): Algoritmos para solução do matching em grafos


Algoritmos Aproximativos
Trabalho Técnica Utilizada Complexidade
Iri et al. (1981) Vários algoritmos de aproximação linear – aplicados na O(n)
elaboração de mapas de Tokio
Bartholdi III & Platzman (1982) Curvas de Sierpinski e Hilbert O(nlogn) – tempo esperado li-
near
Avis (1983) Revisão de vários algoritmos (vários)
Iri et al. (1983) Curvas de Hilbert / enquadramento espiral O(nlogn)

Algoritmo de Edmonds
Dado um emparelhamento E em um grafo G = (N,M), tem-se as seguintes definições:

(1) Emparelhamento E em G (2) Vértice raiz de Ta (3) Exame da raiz

(4) Inclusão arestas (d,e) e (e,f) (5) Exame do vértice d (6) Caminho aumentante

(7) Emparelhamento máximo


Figura 5.19 Árvore alternante
CAPÍTULO 5  Subconjuntos de vértices e arestas 313

Aresta Emparelhada – Vértice Saturado – Caminho Alternante


1. Uma aresta emparelhada é uma aresta de E, caso contrário, a aresta é dita não emparelhada.
2. Um vértice é dito saturado (sob o ponto de vista de um emparelhamento) se é um vértice terminal de
alguma aresta de E, caso contrário, o vértice é dito não saturado.
3. Um caminho alternante de G é um caminho cujas arestas são alternadamente emparelhadas e não em-
parelhadas.

Considerando o emparelhamento mostrado na Figura 5.17(6) do grafo G da Figura 5.17(4), um caminho al-
ternante em G é definido pela sequência de vértices 1-4-7-8-5-2-3-6, onde as arestas (1,4), (7,8), (5,2) e (3,6) são
emparelhadas e as arestas (4,7), (8,5) e (2,3) são não emparelhadas. Neste exemplo, todos os vértices são saturados.
A Figura 5.18(1) apresenta um exemplo onde o emparelhamento mostrado na Figura 5.18(2) é maximal, ou seja,
um emparelhamento que não está contido em qualquer outro de maior cardinalidade. Os vértices g e h são não
saturados em relação ao emparelhamento exibido. Um exemplo de caminho alternante com relação ao empare-
lhamento mostrado na Figura 5.18(2) é g-c-d-e-f, onde as arestas (c,d) e (e,f) são emparelhadas e as arestas (g,c) e
(d,e) são não emparelhadas. Outro exemplo de caminho alternante é g-c-d-h com a aresta (c,d) emparelhada e as
arestas (g,c) e (d,h) não emparelhadas. Este caminho alternante possui uma propriedade interessante: ele começa
e termina em vértices não saturados. Se invertermos a condição de emparelhamento das arestas deste caminho,
poderemos estender o emparelhamento para outro de maior cardinalidade, como ilustrado na Figura 5.18(3). O
caminho alternante g-c-d-h é dito caminho aumentante.

(1) Grafo G (2) Emparelhamento maximal (3) Emparelhamento máximo


Figura 5.18 Emparelhamento maximal e máximo

Caminho Aumentante
Um caminho de G é dito um caminho aumentante se é um caminho alternante
não trivial de G com a propriedade de que o vértice inicial e o vértice final são
não saturados.

Um teorema bastante conhecido que relaciona caminho aumentante e emparelhamento máximo foi apresen-
tado por Berge (1957). Baseado no Teorema de Berge, Edmonds (1965) apresentou um algoritmo para encontrar
um emparelhamento máximo em um grafo qualquer. O procedimento consiste nos passos descritos no quadro
Edmonds.
314 Grafos

Teorema 5.4
(Berge)
Um emparelhamento E de G é máximo se e somente se não existe nenhum
caminho aumentante com respeito a E em G (Berge, 1957).

A Edmonds
Ler G = (N, M)
1 Determinar um emparelhamento E.
2 Encontrar um caminho aumentante P em G em relação a E.
3 Se um caminho aumentante foi encontrado, expanda o emparelhamento e volte ao passo 2.
4 Senão, emparelhamento máximo encontrado, fim do procedimento.

Para que o algoritmo construído com base nestes passos seja eficiente, é necessário que os caminhos de aumen-
to também sejam encontrados de forma eficiente. Para isto, Edmonds (1965) introduz o conceito de blossom, o
qual será apresentado adiante. Antes, entretanto, é necessário apresentar o conceito de árvore alternante.
Para encontrar um caminho aumentante com respeito ao emparelhamento E, inicia-se por um vértice não sa-
turado u e prossegue-se construindo um caminho alternante até encontrar outro vértice não saturado u’. Suponha
que existe um caminho alternante P entre u e u’. Se u e u’ são adjacentes, então um caminho aumentante é encon-
trado, bastando incluir a aresta (u,u’) no emparelhamento E. Caso contrário, u’ é adjacente a um vértice saturado
w. O comprimento do caminho entre u e w é 2k, onde k é o número de arestas de E que estão em P. Portanto,
começando em u, o algoritmo busca vértices à distância par de u em caminhos alternantes. O algoritmo constrói
uma árvore alternante com raiz u.

Árvore Alternate
Considerando E um emparelhamento em G e u um vértice não saturado, uma
árvore alternante Ta de G com raiz u, é tal que todo caminho entre u e um des-
cendente é um caminho alternante em G com respeito a E.

Considerando-se um grafo G = (N,M) e um emparelhamento E de G, para construir uma árvore alternante


Ta = (NT,MT) de G com respeito a E, escolhe-se um vértice vN, tal que v é não saturado em E, para ser a raiz de
Ta. Define-se um conjunto de vértices, Esp, e coloca-se o vértice v em Esp. Todo elemento de Esp é um vértice tal
que, se ele tiver um adjacente não emparelhado, então, um caminho aumentante foi encontrado. Dado um vértice
u, uEsp, u é examinado pelo algoritmo, ou seja, os vértices w(u), wNT, são verificados. Se w é não saturado,
então um caminho aumentante foi encontrado. Caso contrário, w é saturado em E pela aresta (w,u’). Neste caso,
duas situações são de interesse:

1. u’NT
2. u’NT e u’Esp
CAPÍTULO 5  Subconjuntos de vértices e arestas 315

No primeiro caso, o algoritmo inclui as arestas (u,w) e (w,u’) em Ta e o vértice u’ em Esp. Um exemplo de
construção de uma árvore alternante é mostrado para o emparelhamento da Figura 5.19(1) nas Figuras 5.19(2)-
(5). Inicialmente, escolhe-se um vértice não emparelhado, no caso o vértice g foi escolhido (Figura 5.19(2)), e g é
incluído no conjunto Esp. A lista de adjacentes ao vértice g é {c}. O vértice c não está na árvore e está emparelhado
com o vértice d. As arestas (g,c) e (c,d) são incluídas na árvore. O vértice d é incluído em Esp. O algoritmo escolhe
um vértice não examinado de Esp para prosseguir. Neste caso, o vértice d. A lista de adjacentes ao vértice d é {c,e,h}.
O vértice c não é considerado porque a aresta (c,d) já se encontra na árvore. O vértice e não se encontra na árvore
e está emparelhado com f, portanto as arestas (d,e) e (e,f) são incluídas e f é adicionado a Esp, como mostrado na
Figura 5.19(4). Ainda durante o exame do vértice d, é encontrado o vértice h que não está na árvore e não é empa-
relhado (Figura 5.19(5)). Portanto, um caminho aumentante foi encontrado. Esse caminho é mostrado na Figura
5.19(6) e o emparelhamento resultante do aumento é mostrado na 5.20.
No segundo caso, u’NT e u’Esp, nesta situação um ciclo ímpar foi encontrado. Tal ciclo é chamado de blos-
som. Um blossom com 5 vértices é ilustrado na Figura 5.20.

Figura 5.20 Blossom

Blossom
Um caminho alternante fechado de comprimento ímpar.

Quando um blossom B é criado, todo vértice w, tal que wB e wEsp, é incluído em Esp, uma vez que um
caminho aumentante também pode ser encontrado a partir deste vértice. Quando um blossom B é encontrado, o
algoritmo de Edmonds contrai os vértices de B em um único vértice, criando um grafo reduzido. O novo vértice
é adjacente a todos os vértices que eram antes adjacentes aos vértices de B. O algoritmo prossegue construindo a
árvore alternante para o grafo reduzido. O processo continua até que um caminho aumentante seja encontrado ou
até a obtenção de um grafo reduzido para o qual não existe caminho aumentante.
O procedimento é ilustrado para o grafo da Figura 5.21(1). O algoritmo parte de um vértice não saturado
como raiz da árvore alternante, no exemplo o vértice d (Figura 5.21(2)) o qual é incluído no conjunto Esp. A lista
de adjacência de d é {a, e, g}. O vértice a não está na árvore e está emparelhado com o vértice b. As arestas (d,a)
e (a,b) são incluídas na árvore e o vértice b é incluído em Esp (Figura 5.21(3)). Do mesmo modo, as arestas (d,e)
e (e,g) são incluídas na árvore e o vértice g é incluído em Esp (Figura 5.21(4)). Ao examinar o vértice g, verifica-
-se que gNT e gEsp, portanto, um blossom foi identificado (Figura 5.21(5)). O vértice e entra para a lista Esp
através do blossom X1, ilustrado na Figura 5.21(6). O grafo é reduzido como ilustrado na Figura 5.21(7). O
algoritmo prossegue identificando os vértices adjacentes a X1, verificando que o vértice gNT e gEsp (Figura
316 Grafos

5.21(8)). Um novo blossom, X2, é criado como ilustrado na Figura 5.21(9), com o vértice e sendo incluído na lis-
ta de vértices especiais. O grafo reduzido com o blossom X2 é mostrado na Figura 5.21(10). Durante o exame do
vértice X2, são incluídas as arestas (X2,c) e (c,f) na árvore (Figura 5.21(11)). Devido à existência da aresta (X2,f)
o blossom X3 é criado, resultando no grafo reduzido mostrado na Figura 5.21(14). O vértice X3 é adjacente ao
vértice h não emparelhado, encontrando-se um caminho aumentante. O caminho aumentante é mostrado na
Figura 5.21(15) e o grafo G com o emparelhamento resultante do aumento é mostrado na Figura 5.22. Depois
que um caminho aumentante é encontrado, o algoritmo faz a expansão do emparelhamento e repete o procedi-
mento a partir de outro vértice não saturado.

(1) Emparelhamento E em G (2) Esp = {d} (3) Esp = {d,b}

(4) Esp = {d,b,g} (5) Esp = {d,b,g,e} (6) Blossom X1

(7) Grafo reduzido por X1 (8) Esp = {X1, b, a} (9) Blossom X2

(10) Grafo reduzido por X2 (11) Esp = {X2, f} (12) Esp = {X2, f, c}
CAPÍTULO 5  Subconjuntos de vértices e arestas 317

(13) Blossom X3 (14) Grafo reduzido por X2 (15) Caminho aumentante

Figura 5.21 Passos do algoritmo de Edmonds

Figura 5.22 Emparelhamento resultante do procedimento ilustrado na Figura 5.21

O procedimento termina se não existirem vértices não saturados (emparelhamento perfeito) ou depois que
todos os vértices não saturados com respeito a um emparelhamento sejam testados como raiz da árvore alternante
sem que nenhum caminho aumentante seja encontrado. Uma implementação do algoritmo de Edmonds (1965)
em O(n3) é apresentada por Gabow (1976).

Emparelhamento Ponderado Mínimo


Um emparelhamento ponderado mínimo é um emparelhamento em G tal que a Polinomial
soma dos custos de suas arestas é mínima.

As Figuras 5.23(2) e (3) exibem emparelhamentos do grafo da Figura 5.23(1). O emparelhamento da Figura
5.23(3) é ótimo.
318 Grafos

(1) Grafo G (2) Emparelhamento de custo 13 (3) Emparelhamento de custo 5

Figura 5.23 Exemplos de emparelhamentos ponderados

Teorema 5.5
Um grafo é bem emparelhado se e somente se seu grafo de linha for bem
coberto (Skiena, 1990).

Teorema 5.6
Um grafo 1-fator de G é um matching perfeito de G (Skiena, 1990).

❂ Matching – Dicas de Trabalhos

Holloway et al. (1994) apresentam um algoritmo aproximativo paralelo com complexidade em tempo O(log3n) usando
n3/logn processadores para o problema de emparelhamento ponderado em grafos completos com desigualdade triangu-
lar. Tal algoritmo tem garantia de afastamento da melhor solução de 2log3n. Takafuji et al. (2002) apresentam algoritmos
aproximativos sequenciais em tempo O(mlogn) para o problema de emparelhamento ponderado em grafos quaisquer
com garantia de afastamento igual a 2.

k-Fator de um grafo G Decidir se um grafo possui um


3-fator é
Um k-fator de um grafo G = (N,M) é um subgrafo gerador k-regular de G.

NP-Completo
Um grafo é (k,r)-fator-crítico se a remoção de algum conjunto de r de vérti- O 2-fator é uma coleção dos
ces resultta em um grafo k-fator. ciclos que alcança todos os
vértices de G.

As Figuras 5.24(2) e (3) exemplificam grafos 1-fator e 2-fator, respectivamente, do grafo da Figura 5.24(1). O
grafo da Figura 5.24(4) possui um subgrafo 2-fator, mas não um 1-fator. A Figura 5.24(6) mostra um 1-fator do
grafo da Figura 5.24(5). Os grafos k-fatores são generalizações dos matchings completos.
CAPÍTULO 5  Subconjuntos de vértices e arestas 319

(1) Grafo G (2) Grafo 1-fator de G (3) Grafo 2-fator de G

(4) Grafo sem 1-fator (5) Grafo G (6) Grafo 1-Fator de (5)

Figura 5.24 Exemplo de grafos 1 e 2-fator de G

Grafo 1-Fator

Um grafo é dito 1-fator quando contém um conjunto de n/2 arestas distintas de


G e coletivamente incidentes em todos os vértices do grafo.

❂ Grafo k-fator – Dicas de Trabalhos

Volkmann (2004) apresenta um estudo das condições de existência de um único k-fator em um grafo G.

5.4 Resumo dos Invariantes

Cobertura de Arestas Cobertura de Vértices

Conjunto Independente Conjunto Dominante


320 Grafos

Matching k-Packing

Teorema 5.7
(Gallai)
Para todo grafo conexo não trivial tem-se:
a + a1 = b + a0 = n
(Gallai, 1959)

Teorema 5.8
Sendo G um grafo bipartido, a cardinalidade do emparelhamento máximo de G
é igual ao tamanho da menor cobertura em arestas de G.

Teorema 5.9
Sejam Ma um matching e Cb uma cobertura de vértices de G tais que |Ma|=|Cb|.
Então Ma é um matching máximo e Cb uma cobertura mínima.

5.5 Decomposição em Subgrafos


Dor & Tarsi (1997)
provam que a decomposição
Decomposição de G em subgrafos H
de um grafo G em subgrafos
Diz-se que o grafo G possui uma H-decomposição, onde H é um subgrafo de G, é NP-completo.
quando existe um conjunto L de grafos isomorfos a H em que cada aresta de G
aparece exatamente em um membro do conjunto L. Decidir se um grafo G tem uma
decomposição em subgrafos H é

NP-Completo

A Figura 5.25(3) exemplifica uma decomposição do grafo da Figura 5.24(1) em subgrafos H isomorfos ao grafo
da Figura 5.25(2).
CAPÍTULO 5  Subconjuntos de vértices e arestas 321

(1) Grafo G

(2) Grafo H (3) Decomposição de G em subgrafos H

Figura 5.25 Exemplo de uma H decomposição de G

Teorema 5.10
Para que G possua uma H decomposição, duas condições são necessárias:

1. O número de arestas de H deve dividir o número de arestas de G.


2. O máximo divisor comum dos graus dos vértices de H deve dividir o máxi-
mo divisor comum dos vértices de G (grafo de linha de G).

A largura da árvore de decomposição


Decomposição de G em árvore é dada por max{|Xi|, i  I } – 1.

Dado um grafo G = (N, M) não direcionado, uma decomposição em árvore de A largura arbórea (treewidth) do gra-
G é um par ({Xi | i  I}, T), onde cada Xi é um subconjunto de N denominado fo G é o menor inteiro k para o qual G
"bag", e T é uma árvore com os elementos de I como vértices. Em uma decom- possui uma árvore de decomposição
posição em árvore do grafo G as seguintes propriedades devem ser verificadas: com largura k.
Decidir se um grafo G tem uma de-
1. UiI Xi = N composição em árvore com largura k
2. Para toda aresta u-v  M existe i  I tal que u,v  Xi. é
3. Para todo i, j, k  I, se j pertence a um caminho entre i e k em T, Xi  Xk  Xj.
NP-Completo
Arnborg et al. (1987)

A Figura 5.26 exemplifica a aplicação de uma estratégia válida para a decomposição em árvore do grafo da Fi-
gura 5.26(1). A estratégia consiste em obter uma árvore geradora de G, remover de G as arestas da árvore geradora
e os vértices que, após a remoção das arestas, ficarem com grau zero. Repetir o processo, iterativamente, no grafo
resultante desta operação até que não exista mais aresta de G. As árvores obtidas em cada iteração determinam os
conjuntos de decomposição. As Figuras 5.26(2)-(4) exemplificam o desenvolvimento da estratégia associado ao
grafo da Figura 5.26(1). A sequência dos vértices obtidos nas árvores constitui uma decomposição em árvore de G
322 Grafos

que atende as duas primeiras condições da definição. A decomposição em árvore de G mostrada na Figura 5.26(6)
satisfaz as três condições da definição.

(1) Grafo G (2) X1 (3) X2

X1 = { A, B, C, D, E, F, G, H, J}

X2 = { B, D, E, F, H, J }

X3 = { D, H }

(4) X3 (5) Conjuntos de vértices (6) G+ e árvore de decomposição

Figura 5.26 Exemplo de decomposição em árvore


Considere um grafo G+ em que os vértices representam conjuntos de vértices do grafo G, e existe uma ligação
entre os vértices de G+ quando dois de seus vértices possuem um mesmo vértice de G. Uma decomposição em
árvore válida atende a terceira condição quando é possível determinar em G+ uma árvore geradora T onde para
cada nó v de G se v está representado em dois nós x e y de T, então v está representado em todos os nós no único
caminho entre x e y em T. O grafo G+ do exemplo apresentado na Figura 5.26 é representado na parte superior da
Figura 5.26(6) em amarelo. A árvore associada é exibida na parte inferior dessa mesma figura azul.
Visando esclarecer detalhadamente o processo de validação da decomposição em árvore, as Figuras 5.27(1)
e (3) exibem a formação de conjuntos de uma decomposição inválida e outra válida, respectivamente, do grafo
da Figura 5.26(1). No caso da Figura 5.27(1) é impossível determinar uma árvore que atenda a terceira restrição
da definição. Na Figura 5.27(3) exibe-se uma decomposição válida do grafo G+ da Figura 5.27(2). A árvore que
permite que todos os vértices de G sejam ligados por caminhos é exibida na Figura 5.27(4), destacando-se alguns
desses caminhos. A árvore de decomposição mostrada na Figura 5.27(4) tem largura 3, que dá a largura arbórea
do grafo da Figura 5.26(1).
Intuitivamente, a largura arbórea de um grafo G é uma medida de quão próximo G está de ser uma árvore
(Dourisboure & Gavoille, 2007). Quanto menor for a largura arbórea de G mais próximo o grafo está de uma árvo-
re. O problema de encontrar a largura arbórea de um grafo é NP-difícil (Arnborg et al., 1987).
CAPÍTULO 5  Subconjuntos de vértices e arestas 323

(1) Decomposição inválida para a Figura 5.26(1) (2) Grafo G+ associado

(3) Decomposição válida para a Figura 5.26(1) (4) Grafo G+ associado

Figura 5.27 Segundo exemplo de decomposição de G em árvores

Teorema 5.11
1. Toda árvore com pelo menos uma aresta possui uma árvore-decomposição
com largura 1.
2. Todo ciclo possui uma árvore-decomposição de largura 2.
3. Uma clique com k vértices possui árvore-decomposição com largura k-1.

❂ Decomposição em Árvore – Dicas de Trabalhos

Xu et al. (2005) apresentam uma aplicação da decomposição em árvore na predição da estrutura de proteínas. Bodlaender
& Fomin (2005) abordam o problema associada da decomposição em árvores de menor custo. Dourisboure & Gavoille
(2007) tratam da decomposição em árvores com menor diâmetro.

5.6 Algoritmo para Conjunto Estável


O quadro abaixo apresenta um algoritmo guloso para a solução da determinação de um conjunto independente
ou estável em G.
324 Grafos

A Conjunto Estável
Ler G = (N,M)
S ← ; a0(G) ← 0;
Ordenar os vértices em ordem não crescente de graus
Enquanto N ≠  Fazer
k ← mínimo {j tal que xj  N}
N ← N\ {xk  Γ(xk)}
S ← S  {xk}
M ← M \ R // R o conjunto das arestas adjacentes a xk e Γ(xk)// a0(G) ← a0(G) + 1
Fim_do_Enquanto
Escrever S e a0(G)

Heurístico

As Figuras 5.28(2) e (3) exibem os resultados de duas aplicações do algoritmo do quadro Conjunto Estável ao
grafo da Figura 5.28(1), uma começando pelo vértice 5 e a outra começando pelo vértice 6.
A Figura 5.29 mostra o desenvolvimento do algoritmo, que leva ao resultado da Figura 5.28(2). A ordena-
ção inicial dos vértices é 5, 6, 2, 4, 9, 10, 1, 3, 7, 8, 11. Uma vez selecionado o vértice k = 5, o algoritmo remove
de N este vértice e todos os seus adjacentes para a próxima iteração, bem como todas as arestas incidentes aos
vértices removidos conforme ilustrado na Figura 5.29(1). O vértice 5 é adicionado ao conjunto S, S = {5} e o
número de estabilidade é incrementado em uma unidade. Seguindo a ordenação inicial dos vértices, o pri-
meiro vértice na lista que ainda permanece em N é o vértice 10. Portanto, na segunda iteração do algoritmo
k = 10. Nesta iteração são removidos de N os vértices 10 e 11 e são removidas de M as arestas pontilhadas ilus-
tradas na Figura 5.29(2). O número de estabilidade α0 (G) é novamente incrementado, passando a ter valor
2 e S = {5,10}. Na terceira iteração k = 1. Portanto, o vértice 1 é removido de N e incluído em S, S = {5,10,1},
conforme ilustrado na Figura 5.29(3). Como existem apenas vértices isolados, nenhuma aresta existe para
remover de M. O algoritmo realiza mais três iterações como a última incluindo em S (e removendo de N),
em cada iteração, os vértices 3, 7 e 8. Em cada uma destas iterações α0 (G) é incrementado chegando a 6, a
cardinalidade de S, S = {5,10,1,3,7,8} (Figura 5.29(4)).

(1) Grafo G
CAPÍTULO 5  Subconjuntos de vértices e arestas 325

(2) Conjunto com α0 = 6 (3) Conjunto com α0 = 5

Figura 5.28 Conjuntos independentes produzidos pelo algoritmo Conjunto Estável

(1) Primeira iteração (2) Segunda iteração

(3) Terceira iteração (4) Quarta iteração

Figura 5.29 Exemplo de funcionamento do algoritmo do quadro Conjunto Estável

Complexidade Conjunto Estável


O procedimento de ordenação dos vértices é O(nlogn). O comando “enquanto” examina, no pior caso, os n vértices e as
m arestas do grafo, portanto, se o grafo for representado em lista de adjacência, o algoritmo fará, no total, O(n+m)
operações para remover vértices e arestas no laço principal. No final o algoritmo terá complexidade O(nlogn + m).

Heurístico O(m+nlogn)

5.7 Algoritmo para Cobertura de Vértice


326 Grafos

Com uma pequena alteração no algoritmo do quadro Conjunto Estável é possível elaborar um algoritmo constru-
tivo para o problema da cobertura de vértices. O algoritmo está descrito no quadro Cobertura de Vértices.

A Cobertura de Vértices
Ler G = (N, M)
S ← ; b (G) ← 0;
Ordenar os vértices em ordem não crescente de graus
Enquanto M ≠  Fazer
k ← mínimo { j tal que xj  N }
N ← N \ { xk }
S ← S  { xk }
M ← M \ R // R o conjunto das arestas adjacentes a xk)//
b (G) ← b (G) + 1
Fim_Enquanto
Escrever S e b(G)

Heurístico
As Figuras 5.30(2)-(7) ilustram a execução, passo a passo, do algoritmo no quadro Cobertura de Vértices para
o grafo da Figura 5.30(1). Neste caso, o algoritmo itera até que M fique vazio. Considerando a ordenação inicial
4,3,5,7,8,1,2,6,9, tem-se k = 4 na primeira iteração do algoritmo. Como ilustrado na Figura 5.30(1), o vértice 4 e suas
arestas são removidos de G. A primeira iteração termina com S = {4} e β (G) = 1. O próximo vértice da lista é o 3.
Portanto, na segunda iteração do algoritmo, k = 3. A Figura 5.30(3) ilustra a remoção do vértice 3 e das suas arestas
adjacentes do grafo resultante após a primeira iteração. No final da segunda iteração tem-se S = {4,3} e β (G) = 2. O
algoritmo prossegue por mais quatro iterações chegando ao resultado final mostrado na Figura 5.30(8), onde S = {4,3}
e β (G) = 6.

(1) Grafo G (2) Primeira iteração


Figura 5.30 Exemplo de funcionamento do algoritmo cobertura de vértices – 1ª Parte
CAPÍTULO 5  Subconjuntos de vértices e arestas 327

(3) Segunda iteração (4) Terceira iteração

(5) Quarta iteração (6) Quinta iteração

(7) Sexta iteração (8) Solução final

Figura 5.30 Exemplo de funcionamento do algoritmo cobertura de vértices – 2ª Parte

Complexidade Cobertura de Vértices


O procedimento de ordenação é O(nlogn). O comando enquanto examina, no pior caso, os n vértices e remove as m
arestas do grafo. Se implementado em lista de adjacência, o algoritmo terá complexidade O(nlogn+m).

Heurístico O(m+nlogn)
328 Grafos

5.8 Problemas de Otimização Associados

Conjunto Independente Máximo Ponderado


p
O problema consiste em determinar em um grafo G = (N,M) ponderado em
vértices, um conjunto independente tal que a soma da ponderação de seus
vértices seja máxima (Hota, 2001).

Conjunto Independente Ponderado Exato


p
O problema consiste em determinar em um grafo G = (N,M) ponderado em
vértices, um conjunto independente máximo cuja soma da ponderação de
seus vértices seja igual a p (Milanic & Monnot, 2010).

A Figura 5.31(1) exibe o conjunto máximo ponderado no valor de 16 (8+2+1+5). A Figura 5.31(2) encontra o
conjunto independente máximo de valor 14.

(1) Independente ponderado (2) Independente exato p = 14

Figura 5.31 Exemplos de solução para os problemas de otimização citados

❂ Conjunto Independente Ponderado – Dicas de Trabalhos

Sakai et al. (2003) apresentam algoritmos gulosos para o problema do conjunto independente ponderado. Basagni (2005)
apresenta uma aplicação do problema em redes sem fio. Kako et al. (2009) apresentam algoritmos aproximados para o
problema do conjunto independente ponderado em grafos esparsos. Pullan (2009) aplica algoritmos de busca local ao
problema.
CAPÍTULO 5  Subconjuntos de vértices e arestas 329

5.9 Exemplos de Aplicações


O presente tópico apresenta duas aplicações práticas associadas aos modelos estudados no presente capítulo.

►Exemplo 1 – O Problema da Fofoca

Os problemas da fofoca e do broadcasting são dois problemas de disseminação de informação descritos para um
grupo de indivíduos conectados em uma rede de comunicação. No problema da fofoca, todas as pessoas da rede
detêm um único item de informação e desejam comunicá-lo a todos os outros membros da rede. No broadcasting,
um indivíduo possui um item de informação que deseja comunicar aos demais (Hedetniemi et al., 1988). Uma
formulação comum assume que existem n pessoas, cada uma retendo um item de informação desconhecido das
demais. Toda vez que duas pessoas dessa rede se comunicam elas trocam entre si toda a informação que possuem.
Essa informação pode advir de contatos anteriores com elementos da rede.

Questões p
1. Quem são os vértices que deverão replicar as informações em uma rede de
comunicações?
2. Qual a sequência das ligações que deverão ser realizadas?
3. Qual é o número mínimo de contatos (ligações) necessário para que todas
as pessoas da rede conheçam todos os itens de informação no mais curto
tempo possível?

As questões anteriores remetem à otimização da difusão de informações em redes. O modelo igualmente pode
representar problemas de otimização de memória e emprego de sistemas de processamento múltiplo (Bermond et
al., 1998). A Figura 5.32 exibe os padrões de comunicação possíveis na difusão da informação no modelo de fofoca.

(1) Difusão simples (2) Difusão múltipla (3) Simples com troca (4) Múltipla com troca

Figura 5.32 Padrões de difusão de fofoca

A Figura 5.33 mostra uma configuração de evolução da difusão simples em sete etapas. Observar que, na
difusão simples, cada vértice que detém a informação pode realizar apenas uma ligação em cada etapa. O exem-
plo supõe que as ligações consomem o mesmo tempo e começam a ser realizadas imediatamente após serem
recebidas. Claramente, a Figura 5.33 não esgota todos os possíveis padrões de difusão de informação em uma
rede. Na figura, o padrão utilizado de difusão é o de permitir que todos os pontos que recebem a informação
comuniquem essa informação aos seus vizinhos no grafo de conexões. Nesse padrão poderão ocorrer repeti-
ções de chamadas. A Figura 5.33 mostra somente as comunicações que expandem a notícia alcançando novos
vértices do grafo.
330 Grafos

(1) Ponto inicial da difusão (2) Primeira etapa

(3) Segunda etapa (4) Terceira etapa

(5) Quarta etapa (6) Quinta etapa

(7) Quinta etapa (8) Conclusão da difusão

Figura 5.33 Evolução da fofoca em uma rede de conexões


CAPÍTULO 5  Subconjuntos de vértices e arestas 331

No caso da difusão múltipla, cada vértice pode realizar simultaneamente r chamadas. A Figura 5.33 adota
r = 1. A difusão é modelada em etapas de igual tempo de duração. Em cada etapa todos os vértices portadores da
informação realizam r chamadas (no caso do exemplo, uma chamada). No caso da difusão com troca de informa-
ção, o de destino também possui informação a compartilhar. A difusão com troca pode ocorrer tanto na forma de
ligações simples como de ligações múltiplas.
A Figura 5.34 exibe um padrão de difusão em que apenas o último replicador contatado pode realizar ligações
em cada etapa. Dessa forma, o replicador ativo pode receber, junto com a informação a ser divulgada, a lista
dos vértices já visitados, impedindo a repetição de comunicações e o congestionamento da rede. Nesse padrão, a
informação se espalha no grafo em forma de árvore.

(1) Ponto inicial da difusão (2) Primeira etapa

(3) Segunda etapa (4) Terceira etapa

(5) Quarta etapa (6) Quinta etapa

(7) Sexta etapa (8) Árvore em formação

Figura 5.34 Evolução da fofoca em padrão árvore


332 Grafos

Observar que a solução de uma difusão de informações segundo o padrão árvore é encontrada no
desenvolvimento de uma árvore geradora mínima taturana. Considerando uma etapa ou passo de difusão
de informação como o tempo necessário para que o vértice v se comunique com o vértice w transmitindo a
informação, pode-se formalizar o seguinte problema de otimização combinatória:

Questão – Difusão Ótima


p
Dado um padrão de comunicação em uma rede de conexões, determine o
esquema de comunicações que difunde uma informação na rede no mais
curto número de etapas.

►Exemplo 2 – O Problema do Broadcasting

O problema de broadcasting consiste em, dada uma fonte de geração de informação, distribuir essa informação em
uma rede de demanda, utilizando componentes intermediários de passagem. A Figura 5.35 exemplifica uma rede
de broadcasting com seus diversos componentes.

Figura 5.35 Uma rede de broadcasting (difusão de um sinal de informação)

Nos problemas de broadcast com uma única fonte, existem k dados armazenados em um único local, a fonte.
Supondo que a rede é composta por outros n – 1 pontos além da fonte, é necessário difundir todos os k itens para
os n – 1 pontos. Bar-Noy et al. (2000) apresentam algoritmos polinomiais para a solução do problema, admitin-
do comunicação bidirecional entre os pontos. Considerando um conjunto de dados com k itens, o problema de
multicast com uma única fonte consiste em transmitir cada item i do conjunto de dados a um subconjunto Di de
pontos da rede. No problema de broadcast com múltiplas fontes, existem k dados, cada um deles armazenado se-
paradamente em uma fonte específica. Os k dados devem ser transmitidos a todos os pontos da rede. No problema
de multicast com múltiplas fontes, existem k dados, cada um armazenado separadamente em uma única fonte. O
i-ésimo dado, i = 1,...,k, deve ser transmitido a um subconjunto Di de pontos da rede. Khuller et al. (2006) demons-
traram que este problema é NP-difícil.
CAPÍTULO 5  Subconjuntos de vértices e arestas 333

O trecho que conecta os provedores de grande porte normalmente pertence a uma rede de alto desempenho
e confiabilidade denominada backbone (Figura 5.36(1)). Essa rede pode ser composta de vários anéis – tramos
fechados. Os provedores se ligam localmente aos servidores das redes locais, onde a demanda encontra-se hos-
pedada. A solução do problema apresentada pela Figura 5.36(2) exemplifica um caminho do fluxo de informação
para os servidores. Nesse caso, supõe-se que a informação que será recebida pelos terminais de demanda está
processada e individualizada pelos servidores a partir de apenas um sinal e dos endereços de entrega recebido dos
provedores. Outra forma de solução consiste em gerar múltiplos fluxos de informações idênticas, um para cada
ponto de demanda, sustentando-se uma conexão individual entre a fonte da informação e cada ponto de demanda.

(1) Backbone (2) Uma solução

Figura 5.36 Uma solução para o problema de broadcasting

❂ Fofoca e Broadcasting – Dicas de Trabalhos

Trabalhos de revisão da literatura sobre esses problemas podem ser encontrados em Hedetniemi et al. (1988), Hromkovic
et al. (1995) e Harary & Schwenk (1974). Sinha et al. (2008) desenvolvem algoritmos eficientes para a solução do problema
da fofoca e broadcasting em redes sem fio. Khuller et al. (2006) demonstram a NP-Completude de algumas variantes e
propõe algoritmos eficientes de solução.

►Exemplo 3 – O Problema da Modulação da Energia em Reatores Nucleares

Um reator nuclear é um dos sistemas mais complexos de geração de energia elétrica existentes. A geração de calor
através de reações nucleares envolve altíssimos riscos e necessita de tecnologia sofisticada de controle. Basica-
mente, um reator é formado por um núcleo central ocupado por material radioativo que gera calor. Nesse núcleo
central, o calor da fissão de materiais radioativos transforma água em vapor, e esse vapor canalizado move turbinas
que geram energia elétrica. O vapor, posteriormente, é resfriado e reingressa no sistema. O controle do processo
de fissão é o ponto crítico da tecnologia e pode ser realizado por diversos e diferentes mecanismos. Um dos mais
utilizados emprega a intercalação de material absorvente entre as unidades de radiação, de forma a reduzir fisica-
mente o processo de fissão nuclear dentro no coração do reator.
O material radioativo, via de regra, é localizado em uma câmara pressurizada e lacrada (que pode possuir
dimensões enormes, como uma piscina, ou ser pequena como um vaso de plantas). O material radioativo é envolto
em um meio líquido (na maioria dos casos, água) que deverá capturar o calor gerado. No processo de operação
do reator, uma forma de moderar a reação nuclear é mergulhar dentro do material radioativo material capaz de
absorver radiação. Para tal, é comum que o material de moderação seja modelado em barras e o material radioativo
disposto em forma celular de modo a criar espaços próprios para serem ocupados pelo mergulho do material de
moderação. A Figura 5.37(2) mostra o funcionamento de um esquema de moderação do dispositivo da Figura
5.37(1) em que três barras são mergulhadas no interior do material radioativo.
334 Grafos

(1) Dispositivo de controle (2) Um esquema de moderação

Figura 5.37 Funcionamento do sistema de controle de um reator nuclear

A Figura 5.38 exibe um corte na grade de material radioativo do reator (mostrando a locação dos
irradiadores nos losangos em vermelho) e os espaços hexagonais brancos constituídos para receber o material
de intercalação.

Figura 5.38 Esquema do núcleo de um gerador nuclear

Quando todas as barras moderadoras são mergulhadas no espaço a elas destinado, a reação nuclear do reator
é interrompida. Normalmente as barras de moderação são constituídas de cádmio ou boro com alto poder de
absorção de nêutrons. A Figura 5.39 exibe um esquema do painel de operação que controla a movimentação das
barras moderadoras. As células que mostram a cor verde tiveram a sua barra associada mergulhada na grade do
núcleo.
CAPÍTULO 5  Subconjuntos de vértices e arestas 335

Figura 5.39 Um esquema de moderação

A cada diferente configuração de mergulho das barras moderadoras corresponderá determinado esquema de
iteração nuclear com uma temperatura associada, uma vez que diferentes configurações físicas são constituídas.
Por outro lado, os esquemas de moderação devem ser pelo menos simétricos em relação aos eixos horizontal e
vertical do plano de corte da grade do núcleo do reator para minimizar a ocorrência de fluxos de convenção entre
regiões de diferente temperatura no coração do reator. Todavia, o ideal é que distribuam o mais homogeneamente
possível a iteração entre as barras de radiação.
Os dois fatos anteriores definem a possibilidade do esquema de moderação ser modelado através de um
conjunto dominante simétrico no grafo de ligação da Figura 5.40. As restrições de que todas as posições de
radiação sejam vizinhas de pelo menos uma posição de moderação ativa e de que o conjunto dominante seja
simétrico em relação aos eixos vertical e horizontal de um corte no núcleo do gerador caminham no sentido de
reduzir gradientes de temperatura no interior do gerador.
O número de diferentes conjuntos dominantes simétricos do grafo de vizinhanças entre as posições de
irradiação e de moderação define o número de diferentes esquemas de funcionamento estável para o reator.
A Figura 5.40 exibe um grafo que modela a distribuição das barras de moderação através dos vértices de maior
tamanho. Os vértices maiores e mais escuros representando o material radioativo, e os vértices mais claros, maiores
ou menores, são posição que podem ser ocupada por barras moderadoras. Uma aresta modela a existência de uma
relação de vizinhança entre duas posições. Os vértices mais claros e maiores representam posições que tiverem
barras de moderação mergulhadas.
Os vértices azuis são os vértices do conjunto amarelo cujas barras foram mergulhadas.
336 Grafos

Observa-se que na configuração apresentada não existe a interrupção do funcionamento do reator. A solução
permite um esquema em que todas as posições de material radioativo possuem pelo menos uma barra de modera-
ção mergulhada em sua vizinhança.

Figura 5.40 Uma solução em conjunto dominante para o exemplo da Figura 5.37

►Exemplo 4 – Localização de Facilidades

A prefeitura de uma cidade deseja ativar uma rede de postos de informação ao turista. Para facilitar o acesso a
esse tipo de serviço a prefeitura decidiu que os postos devem ser localizados junto aos pontos mais frequentados
pelos turistas. O conjunto das atrações turísticas da cidade e outros pontos frequentados pelos turistas constam da
Figura 5.41.
Visando otimizar as despesas com a implantação dos novos postos de atendimento, o prefeito decidiu que, na área
central da cidade, os turistas não deveriam andar mais de 150 metros para encontrar um posto de atendimento.
Onde construir os postos de atendimento na planta da Figura 5.41 de forma a minimizar as despesas?
CAPÍTULO 5  Subconjuntos de vértices e arestas 337

Figura 5.41 A distribuição dos pontos de frequência turística

O problema anteriormente descrito pertence a uma classe de problemas de localização em que os possíveis
pontos de localização das facilidades é conhecido e existe algum tipo de restrição em relação à distância entre os
postos ou de capacidade de atendimento dos postos. No caso, a restrição de distância pode ser representada por
um círculo com raio igual à distância máxima de caminhada, e de centro em cada possível ponto de localização.
Cada ponto turístico da planta é candidato a receber um posto de turistas. Um posto de turistas localizado em
algum ponto de frequência pode atender aos demais pontos de frequência, desde que eles se encontrem dentro
do círculo de alcance desse posto. A Figura 5.42(1) esclarece o modelo. Caso um posto possa atender um ponto
turístico diferente do próprio ponto de alocação, então existirá uma aresta ligando os dois pontos (e postos) como
exemplifica a Figura 5.42(2). Observar que, se um dado ponto A da planta pode atender um outro ponto B, o ponto
B também poderá atender o ponto A.

(1) Exemplo do alcance de atendimento (2) Ligações associadas ao fragmento (1)

Figura 5.42 Modelo para o problema de localização de postos de atendimento

A Figura 5.43(1) mostra todos os círculos de atendimento e a Figura 5.43(2) exibe o grafo dele decorrente.
Observe que o grafo é desconexo, uma vez que um dos pontos turísticos fica fora do alcance de qualquer outro
ponto turístico. A Figura 5.44 mostra uma solução para o problema através de um conjunto dominante mínimo.
338 Grafos

(1) Alcances associados aos pontos de demanda (2) Ligações associadas ao fragmento (1)

Figura 5.43 Modelo para o problema de localização de postos de atendimento

Figura 5.44 Solução para o problema de localização de postos de atendimento

►Exemplo 4 – O Light Up

O Light-Up é um puzzle paper-and-pencil hoje bastante difundido. Os puzzles paper-and-pencil são jogos constitu-
ídos em uma grelha (uma matriz n x m) de células em que, via de regra, algumas dessas células possuem valores
atribuídos a priori. O objetivo básicos desses jogos é permitir que o jogador complete a lápis (justificando o termo
paper-and-pencil) as posições da grelha que estão em branco. Obviamente, para cada jogo são estabelecidas regras
específicas para esse processo preenchimento. Existem vários jogos dessa classe como: Nurikabe, Nonogram (ou
Paint-by-Numbers), Slither Link, Cross Sum (ou Kakkuro), Number Place (ou Sudoku) e Heyawake (Yato, 2003).
No Light-Up o objetivo é dispor luzes em algumas células brancas da grelha de modo a iluminar todas as células
brancas. A célula de localização da luz é considerada iluminada. Uma célula branca é iluminada por uma luz se
ambas estão na mesma linha ou coluna, desde que não haja uma célula negra entre elas. Além disso, duas restrições
devem ser satisfeitas. A primeira determina que não é válido que duas luzes se iluminem. A segunda atende aos
números no interior das células negras, que variam entre 0 e 4. O número dentro das células negras define quantas
luzes devem estar localizadas em células brancas adjacentes aos seus lados. Uma célula é adjacente a outra se ambas
CAPÍTULO 5  Subconjuntos de vértices e arestas 339

estão na mesma linha ou coluna e compartilham um lado (a diagonal não é considerada como produzindo uma
vizinhança). McPhail (2005) demonstra que o problema é NP-Difícil através de redução polinomial do circuito-
-sat. A Figura 5.45(1) exemplifica uma instância do Light-Up e a Figura 5.45(2) apresenta uma solução associada.
O problema pode ser formulado em um grafo L = (N,M), onde o conjunto N é dividido em dois subconjuntos
de vértices (N = NN NB e NNNB = ). O conjunto NNocupa as células brancas da grelha. O conjunto NB ocupa
as células negras da grelha. No grafo L existe sempre uma aresta entre qualquer par de vértices que ocupe uma mes-
ma linha ou coluna contínuas na grelha (sem uma célula negra em seu interior). Existem arestas ligando os vértices
das células negras aos vértices das células brancas vizinhas. Quando um vértice negro possui associado o número
zero, as células brancas vizinhas a esse vértice não podem receber alocação de luzes. Nos demais casos, o número
de vizinhos às células negras devem corresponder ao número registrado na célula negra. A Figura 5.45(3) exem-
plifica o grafo de representação do problema, e a Figura 5.45(4) mostra que a solução é um conjunto independente
do conjunto NB, que atende as condições de vizinhança do conjunto NN. Observe que na Figura 5.45(4) os vértices
em branco do conjunto NB não são candidatos a participar do conjunto independente que deve se formar em NB.

(1) Instância do Light-Up (2) Solução da instância (1)

(3) Grafo L (4) Solução

Figura 5.45 O Light-Up e sua solução

5.10 Grafos Especiais Associados ao Tema do Capítulo


A Figura 5.46(3) exibe um gra-
Grafo Sanduíche fo sanduíche dos grafos das Fi-
guras 5.46(1) e (2) em relação à
Dados um grafo G1 =(N1,M1) e um grafo G2 =(N2,M2), onde G2 é um supergrafo propriedade de planaridade. Os
de G1. Um grafo G3 é dito sanduíche de G1 e G2 em relação à propriedade p se grafos sanduíche possuem várias
M1  M3  M2. aplicações práticas, dentre elas o
mapeamento de DNA (Carrano,
1988).
340 Grafos

(1) G1 (2) G2 (3) G3 – sanduíche planar

Figura 5.46 Grafo sanduíche

Grafo k-Potência A Figura 5.47(2) exibe o grafo


potência 3 do grafo da Figura
Um grafo k-potência de G, denotado por Gk, é um supergrafo de G formado
5.47(1). A Figura 5.47(3) exibe
pela adição de uma aresta entre todos os pares de vértices de G que possuem
distância pelo menos igual a k. o grafo 2-potência ou quadrá-
tico de G.

(1) Grafo G (2) Grafo 3-potência (3) Grafo quadrático

Figura 5.47 Grafo k-potência

Subgrafo Vértice-Removido
Denomina-se subgrafo vértice-removido ao subgrafo obtido pela remoção de
um vértice v e de todas as suas arestas incidentes em G.

Subgrafo Aresta-Removido
A Figura 5.48(2) exemplifica o
Denominado subgrafo aresta-removido o subgrafo obtido pela remoção de deck do grafo da Figura 5.48(1).
uma aresta a de G.

Grafo Deck
D[G]
Um Deck (D[G]) é a coleção de todos os subgrafos vértice-removidos de G.
CAPÍTULO 5  Subconjuntos de vértices e arestas 341

(1) Grafo G (2) Deck de G

Figura 5.48 Grafo deck

Grafo Reconstrução
A Figura 5.49(2) apresenta um
Qualquer grafo H com o mesmo deck de G é denominado uma reconstrução exemplo de um grafo reconstru-
de G. ção do grafo da Figura 5.49(1).
Associado ao problema da re-
Se toda reconstrução de G é isomórfica com G, G é denominado reconstrutí- construção, enuncia-se a conjec-
vel. tura que se segue à Figura 5.49.

(1) Grafo G (2) Reconstrução de G

Figura 5.49 Grafo reconstrução

Conjectura ?
Todo grafo com pelo menos três vértices é reconstrutível.
342 Grafos

Simplex de um Grafo Uma clique de ordem n + 1 é


(G) chamada por alguns autores de
Dado um grafo não direcionado G, κ(G), o grafo simplex de G possui um vér-
n-simplex. O conceito vem da
tice para cada clique de G e existe uma aresta entre dois vértices de κ(G), se as Geometria, onde um n-simplex
cliques correspondentes forem comparáveis e diferirem em no máximo um vér- é definido como um politopo
tice. Duas cliques C1 e C2 são comparáveis se C1  C2 ou C2  C1. n-dimensional, o qual é a envoltó-
ria convexa de seus n + 1 vértices.

A Figura 5.50 ilustra a formação do simplex do grafo não direcionado da Figura 5.50(1). O simplex de G, mos-
trado na Figura 5.50(5), possui 13 vértices: 1 para a clique vazia, 5 para as 1-cliques, 6 para as 2-cliques e 1 para a
3-clique de G. O vértice correspondente a 0-clique é ligado a todos os vértices correspondentes às cliques de or-
dem 1, as quais correspondem aos vértices de G, conforme ilustrado na Figura 5.50(2). A Figura 5.50(3) mostra a
inclusão dos vértices correspondentes às 2-cliques em κ(G). Cada um deles é ligado aos dois vértices terminais da
aresta que corresponde a cada 2-clique. A Figura 5.50(4) mostra a inclusão do vértice correspondente a 3-clique.
Este vértice é ligado aos vértices correspondentes às 2-cliques contidas na 3-clique em G.
O simplex de um grafo não direcionado foi introduzido por Bandelt & Van de Vel (1989). O grafo simplex de
um grafo completo é um grafo hipercubo. O grafo simplex de um grafo ciclo de comprimento quatro ou mais é
um grafo engrenagem.

(1) Grafo G (2) 0-clique e 1-cliques (3) 2-cliques

(4) 3-cliques (5) κ(G)

Figura 5.50 Simplex de um grafo


CAPÍTULO 5  Subconjuntos de vértices e arestas 343

Grafo Split (Grafo Dividido)


A Figura 5.51 apresenta um gra-
Um grafo não direcionado G = (N,M) é dito split quando existe uma partição fo split (conhecido também como
nos vértices de G tal que N = S  K, S  K =  e, adicionalmente, S é um conjunto grafo dividido) destacando os
independente e K forma uma clique em G. conjuntos S e K.

(1) Grafo split (2) Vértices dos conjuntos S e K

Figura 5.51 Grafos split

Teorema 5.12
G é um grafo split se e somente se não contém subgrafos induzidos por:

Foldes & Hammer (1977)

Grafo Probe
O grafo é dito probe se:
Um grafo G = (N, M) é um grafo probe de uma família de grafos de G se o 1. O conjunto S é
conjunto de vértices de G pode ser particionado em um conjunto P de vértices independente em G.
denominados vértices probe, e um conjunto independente S de vértices deno- 2. O conjunto de arestas
minados não probe, tal que G pode ser incorporado em um grafo G, adicio- M  (P × N).
nando arestas entre vértices certos de S.

P é dito conjunto dos vértices probe e S = N\P é o conjunto dos vértices não probe. O grafo probe é uma estrutura
útil para uma aplicação específica. As arestas pontilhadas dos grafos da Figura 5.52 representam o conjunto M’,
que, ligando vértices de S, transforma o grafo de substrato em cordal.
344 Grafos

Figura 5.52 Grafos probe

Grafo Extremal EG A Figura 5.53(2) exibe um gra-


Um grafo é dito extremal (EG) se é o maior grafo de ordem n que não contém fo extremal do grafo da Figura
um dado grafo G como subgrafo (Goodman, 1959). 5.53(1).

Grafo de Turán A Figura 5.53(3) exibe um grafo


É um grafo extremal que não contém Kp como subgrafo. de Turán para K4.

(1) Grafo G (2) Um grafo extremal de G (3) Um grafo Turán p = 4

Figura 5.53 Grafo extremal e de Turán

Grafo Gaiola
A Figura 5.54 apresenta dois gra-
Um grafo é denominado grafo (v, g)- gaiola quando é o menor grafo v-regular fos gaiola completos.
que possui cintura g.
CAPÍTULO 5  Subconjuntos de vértices e arestas 345

(1) K4 – (3,3)-gaiola (2) K3,3 – (3,4)-gaiola

Figura 5.54 Grafos gaiola cliques


As Figuras 5.55(1) e (2) exibem os grafos (3,5)-gaiola, conhecido também como grafo de Petersen, e o gaiola
(3,6) conhecido também como grafo de Heawood. Alguns grafos-gaiola receberam nomes de seus descobridores.
A Figura 5.55 apresenta outros tradicionais grafos do tipo gaiola.

(1) Grafo de Petersen (2) Grafo de Heawood (3) Grafo de Robertson Wegner
(3,5)-Gaiola (3,6)-Gaiola (5,5) Gaiola – 30 vértices

(4) Grafo de Foster (5) Grafo de Meringer (6) Grafo de Wong


(5,5) Gaiola (5,5) Gaiola (5,5) Gaiola
346 Grafos

(7) Grafo de Tutte-Coxeter (8) Grafo de McGee (9) Grafo de Balban


(3,8) Gaiola (3,7) gaiola (3,10) gaiola com 70 vértices

Figura 5.55 Grafos gaiola

Grafo Circular
A Figura 5.56 exemplifica a for-
É um grafo obtido pela interseção de cordas no interior de um círculo. Cada mação de um grafo circular.
corda é representada por um vértice. Cada interseção é representada por uma

(1) Cordas no círculo (2) Grafo circular associado ao círculo em (1)

Figura 5.56 Formação de um grafo circular

5.11 Aplicações Reais Selecionadas


Os conjuntos de vértices em grafos encontram diversas aplicações para a modelagem e solução de problemas
reais. Dentre tais aplicações encontram-se as que se seguem relacionadas.

 Redes sem fio (Lando & Nutov, 2010).


 Canais de comunicação em redes celulares (Feng et. al., 2009).
 Redes Ad-Hoc – computação móvel (Meghanathan & Farago, 2008).
 Modelagem na Química (García-Domenech et al., 2008).
 Otimização de canais em satélites de órbita baixa (Lianzhen et al., 2007).
 Bioquímica e análise genética (Butenko & Wilhelm, 2006).
 Biologia molecular (Lehmann et al., 2006).
 Recuperação de informações em bancos de dados (Bath et al., 2005).
 No planejamento de cadeias de suprimento (Cochrana & Uribeb, 2005).
 Na estocagem de itens sujeitos a deterioração (Hwang, 2004).
 Segmentação de imagens (Pavan & Pelillo 2003).
 Na tomografia (Bonnet et al., 2002).
 Para o problema de alocação de facilidades (Savelsbergh, 1997).
 Alocação de tripulações em linhas aéreas (Vance et al., 1997).
 Projeto de circuitos (Christofides & Brooker,1976; Eben-Chaine et al., 1996).
 Explotação de petróleo em campos submarinos (Goldbarg & Fampa, 1995).
CAPÍTULO 5  Subconjuntos de vértices e arestas 347

 Para designação de bandas de telecomunicações (Parker & Ryan, 1994)


 Alocação arma x alvo (Campello & Goldbarg, 1991).
 Lógica (Kaeslin, 1989).
 Análise de amostras de sangue (Nawijn, 1988).
 Localização de estações de radar (Goldbarg, 1987).
 Planejamento da utilização de ferramentas de usinagem e corte (Finke & Kusiak, 1987).
 Distribuição do tráfego de comunicações em satélites (Minoux, 1986).
 Alocação de serviços de emergência (Benvenites, 1982).
 Seleção de listas (Dwyer & Evans, 1981).
 Distribuição de serviços médicos (Daskin & Stern, 1981).
 Distribuição de distritos de venda (Easingwood, 1973).
 Planejamento de tarefas (Bartholdi III et al., 1980).
 Alocação de serviços diversos (Revelle et al., 1970 e 1976).
 Gestão estratégica (Garfinkel & Nemhauser, 1970).
 Balanceamento de capacidade em linhas de produção (Salveson, 1955).

5.12 Exercícios Resolvidos do Capítulo 5


348 Grafos

Exercício no 1
Calcule os seguintes invariantes para o grafo de Petersen:
1) Número de independência
2) Número de absorção
3) Cardinalidade da menor cobertura de arestas
4) Cardinalidade do menor conjunto dominante.

Exercício no 2
Encontre um 2-packing para o grafo de Heawood.

Exercício no 3
Encontre um 2-fator, uma partição em clique e uma cobertura por cliques para o grafo abaixo.
CAPÍTULO 5  Subconjuntos de vértices e arestas 349

Exercício no 4
Dado G = (N,M) um grafo sem vértices isolados, mostre que 0 +  = n.
Exercício no 5
Dado G = (N,M) um grafo sem vértices isolados, mostre que  + 1 = n.
Exercício no 6
Um governo deseja monitorar atividades ilegais em uma vasta área de florestas de seu território. Para tal de-
cidiu empregar um conjunto de sensores acústicos que podem ser lançados de paraquedas para se alojarem
no alto das árvores. Um sensor apenas pode indicar a presença dentro de seu raio de alcance. Dois sensores
acústicos são suficientes para identificar, com uma precisão de 100.000 metros quadrados, a localização
de um som captado simultaneamente. Três sensores reduzem a localização provável para 10.000 metros
quadrado. Do solo, a localização dos sensores nas árvores é extremamente difícil de ser feita, já que o pa-
raquedas é pequeno e camuflado. Dotados de baterias solares recarregáveis e de um transmissor de médio
alcance, podem transmitir os dados sonoros captados diretamente a um satélite. A imprecisão do alcance
de monitoramento e da qualidade de sinal dos sensores (em virtude dos resultados da aterrissagem), bem
como a grande extensão territorial que deverá ser monitorada, determina que um grande número desses
sensores deva ser lançado para que o sistema seja eficiente. Quando o sensor aterrissa com sucesso, envia
um sinal para o satélite de forma a determinar precisamente suas coordenadas de localização e medir a
força de seu sinal. Caso o sinal do sensor não seja captado pelo satélite, o sensor não será considerado ativo.
Dessa forma é possível, após cada missão de lançamento, mapear a real posição de cada sensor lançado com
sucesso, e seu provável alcance de sensoriamento. Tanto o elevado custo dos sensores (e de toda a missão
de sensoriamento), quanto a necessidade de minimizar os espaços não monitorados na área, determinam
que o sistema seja otimizado.
Após a primeira missão de lançamento de sensores a rede efetiva de monitoramente foi levantada e re-
presentada no mapa do exercício em posicionamento e em alcance de monitoramento. Tendo em vista os
resultados do primeiro lançamento, programa-se uma segunda missão mais precisa (provavelmente empre-
gará helicópteros e patrulhas por terra) para o lançamento de sensores em locais críticos.
Determine os pontos alvos mais apropriados no mapa para a localização de uma segunda malha de sete
sensores de forma a maximizar a área coberta por dois ou mais sensores dentro das regiões prioritárias. O
raio de alcance dos sensores da segunda malha será adotado, por segurança, igual ao dos sensores de sua
vizinhança.

Mapa da região de monitoramento


350 Grafos

Fonte: Adaptado de Google Maps

Áreas prioritárias para o sensoriamento dentro da região de sensoriamento

Fonte: Adaptado de Google Maps


Resultado do lançamento aéreo da primeira malha de sensores
CAPÍTULO 5  Subconjuntos de vértices e arestas 351

Fonte: Adaptado de Google Maps

Exercício no 7
Dentre os muitos problemas enfrentados por Noé, o alojamento dos animais foi um dos piores. Noé não era
engenheiro, mas sabia que deveria planejar o embarque dos animais em sua Arca, ou acabaria tendo de tra-
balhar muito mais do que o necessário. Noé não conhecia a priori quais animais embarcariam na Arca nem
quando eles chegariam. Assim, imaginou a estratégia de criar vários espaços amplos (salões) e neles alojar os
animais na medida em que chegassem. Sua política de embarque seria lotar completamente os espaços para
minimizar o tamanho da Arca. Estando a Arca ainda parcialmente construída, subitamente um primeiro gru-
po de animais surgiu. Então Noé resolveu testar seu plano e ocupar os dois primeiros espaços que já estavam
prontos. Contudo, Noé descobriu, para sua surpresa, que vários dos animais chegados na primeira onda não
poderiam ser alojados juntos. A lista da compatibilidade desses animais está transcrita no presente exercício.
Sabendo que Noé não pode, para essa onda, alterar sua política de embarque, encontre uma solução que ma-
ximiza o número de animais que poderão ser recebidos nos dois primeiros alojamentos prontos sem que haja
riscos para a sobrevivência dos alojados.

Paca Galo Mico Tigre Ema Anu Cotia Ganso Preá Lebre Rã Bode Hiena
Águia X X X X X X X
Paca X X
Galo X X X
Mico X X
Tigre X X X X X
Ema X X X
Anu X X
Cotia X
Ganso X X
Preá
Lebre X

Bode X
Hiena
Exercício no 8
352 Grafos

Um investigador chega à cena de um crime em uma casa e deve descobrir quem é o culpado dentre um grupo
de seis suspeitos. Para ajudar na descoberta do culpado juntam-se os resultados da perícia e do laboratório
com as resposta obtidas no interrogatório. O laboratório e perícia descobriram que provavelmente o culpado:

1. estava no jardim momentos antes do crime.


2. comeu bolo antes de atirar na vítima.
3. usava um relógio analógico.
4. gosta de jogar cartas.
5. gosta de animais.
6. usava roupas sintéticas no momento do crime.
7. o culpado usava roupa de cor azul, verde ou branca.

As informações acima estão reunidas em três grupos – perícia de campo 1 (conclusões 1, 2), perícia de labora-
tório (conclusões 3 e 4) e laboratório (conclusões 5, 6 e 7). Com certeza, o culpado atende a pelo uma exigência
em cada um dos três grupos de conclusões. Todavia, quanto mais exigências o suspeito atender, mais provável
é sua culpa. As perguntas filtradas do primeiro interrogatório levantaram que:

1. João gosta de cães e não pode ficar junto de Maria porque essa gosta de gatos. Ele viu alguém também
vestido de azul no jardim pouco antes do assassinato. Veste-se impecavelmente de linho branco. Não gosta
de animais.
2. Antônio é diabético e não come doces. Usava um abrigo preto no dia do fato. Estava gripado e não saiu de
casa. Mas sabe que Maria detesta animais e sempre se veste de rosa. Disse que viu de longe que uma pessoa
de azul estava em um corredor no momento do tiro na sala.
3. Maria diz que estava no quarto superior da casa e viu alguém vestido de verde na sala segundos antes de
ouvir um disparo. Ela admite gostar de jogar cartas, mas é diabética e não come bolo.
4. Ana usava uma roupa verde na ocasião. Admite que comeu uma fatia de bolo poucos minutos antes do
fato. Ela viu Maria com um gato no colo. Maria estava na sala antes do assassinato. Não usava relógio no
dia.
5. Carla admite que comeu o mesmo bolo que Ana e disse que mais pessoas comeram desse bolo. Ela per-
guntou as horas ao mordomo, que usava um relógio antigo de bolso. Viu o mordomo jogando cartas pela
manha e sabia que a roupa de Antônio era de náilon e que ele não joga. Carla estava de dieta e se vestia de
azul.
6. O mordomo admite que passou no jardim pouco antes da morte acontecer e vestia-se de azul naquele dia.
Sabe que Ana gosta de jogar cartas e ama a animais. Ele detesta bicho. Usa roupa de algodão.

O investigador já pode saber quem é o culpado ou necessita fazer mais perguntas aos suspeitos?
Exercício no 9
Considere um grafo G = (N,M) onde |N| = 2k, k > 1, e i, i  N, d(i) ≥ k. Mostre que G tem um matching
perfeito.
Exercício no 10
Uma agência matrimonial tem cadastrado um conjunto de n homens e outro de n mulheres que desejam se
casar. Cada homem fez uma lista de preferências ordenando as n mulheres em ordem decrescente de prefe-
rência. Cada mulher fez o mesmo em relação aos homens. O agente fará uma indicação de casais e deseja que
a chance de esses casais permanecerem estáveis seja a maior possível. Para isto, é necessário que não exista
nenhum par homem h e mulher m tal que h e m tenham um pelo outro preferência maior do que a que eles
têm pelos seus pares. No caso de h e m terem preferência um pelo outro maior do que pelos seus pares, h e m
terão a tendência de romper seus casamentos para se unir. Se tal casal não existir, a agência pode considerar
que fez uma atribuição estável. Como este problema pode ser modelado por grafos? Apresente um algoritmo
polinomial que resolva o problema.
CAPÍTULO 5  Subconjuntos de vértices e arestas 353

Exercício no 11
Mostre quantos matchings perfeitos possui um grafo completo com 2n vértices.
Exercício no 12
Exiba o grafo com 6 vértices que possua o maior número possível de arestas e não contenha um subgrafo K3.
Desenhe um grafo de 7 vértices com a mesma propriedade e que não contenha um subgrafo K4 como subgrafo.
Exercício no 13
Encontre o grafo circular da interseção de arcos da figura do exercício.

Exercício no 14
Encontre o grafo com 7 vértices que possui o maior número possível de arestas e que não possui como subgra-
fo um grafo isomorfo ao grafo diamante.
Exercício no 15
O grafo do exercício é o grafo de Chvátal. Encontrar, se houver, uma H decomposição do grafo em subgrafos
C4.

Grafo de Chvátal

5.13 Exercícios Propostos do Capítulo 5

Teoria
354 Grafos

5.1: Prove que todo conjunto conector mínimo de um grafo conexo possui n-1 arestas.

Conjunto Conector
Um conector de um grafo G = (N,M) é qualquer conjunto Ct de arestas de G tal
que o subgrafo S = (N,Ct) é conexo.
Prove também:

Conjunto Conector Mínimo 1. que um conjunto conector mí-


nimo é sempre uma árvore e
U conector Ct* de
Um d um grafo f G = (N
(N,M)
M) é mínimo
í i se não
ã existe
i outro conector uma árvore é sempre um co-
Ct  M tal que |Ct| < |Ct*|. nector mínimo.

Conjunto Conector Mínimal 2. que um conector minimal é


Um conector Ct# de um grafo G = (N,M) é mínimal se não existe outro conector também mínimo.
Ct  M tal que Ct  Ct#.

5.2: Seja um grafo G com conectividade igual ao tamanho do maior conjunto independente de vértices. Prove
que G é hamiltoniano.
5.3: Demonstre que, no caso de grafos bipartidos, (G) = M(G), e no caso geral (G) 2M(G).
5.4: Prove ou mostre um contraexemplo: Para qualquer grafo G = (N,M) uma partição em vértices composta
pelos subconjuntos de vértices U1 e U2 tal que U1  U2 = N e U1  U2 =, então para cada vértice pertencente
a U1 e U2 , existe na partição pelo menos o piso do valor correspondente à metade dos vértices vizinhos no
grafo original.
5.5: Considerando um grafo G com n vértices, n 2, determine o número máximo de arestas em G, em funções
do número de vértices ou dos parâmetros citados, para que as seguintes condições sejam verificadas:
1. G possua um conjunto independente de tamanho a.
2. Possua exatamente k componentes.
3. Seja desconexo.
5.6: Para um grafo G = (N, M), prove que: χ(G) + χ(G)  |N| +1.
5.7: Um grafo G = (V,E) direcionado possui arcos de três cores – vermelho, amarelo e preto. Suponha que v-w é
um arco vermelho. Demonstre que apenas uma das assertivas que se seguem é verdadeira:
1. v-w pertence a um ciclo de arcos vermelhos e amarelos em que todos os arcos vermelhos possuem a
mesma orientação.
2. v-w pertence a um corte cujos arcos são vermelhos e pretos e todos os arcos vermelhos possuem a mesma
orientação.
5.8: Demonstre que um grafo bipartido k-regular, k 1, pode ser decomposto em k emparelhamentos perfeitos
em G.
5.9: Prove que, para o grafo de Petersen, cada aresta do grafo pertence a dois diferentes emparelhamentos ótimos.
5.10: Prove ou mostre um contraexemplo: em um grafo que não possua ciclos de comprimento par existe pelo
menos um emparelhamento perfeito.
5.11. Para um grafo G = (N, M), prove que: χ(G) + χ(G)  |N| +1.
5.12: Um grafo G = (V,E) direcionado possui arcos de três cores – vermelho, amarelo e preto. Suponha que v-w é
um arco vermelho. Demonstre que apenas uma das assertivas que se seguem é verdadeira:
CAPÍTULO 5  Subconjuntos de vértices e arestas 355

3. v-w pertence a um ciclo de arcos vermelhos e amarelos em que todos os arcos vermelhos possuem a
mesma orientação.
4. v-w pertence a um corte cujos arcos são vermelhos e pretos e todos os arcos vermelhos possuem a mesma
orientação.
5.13: A figura do exercício representa a rede de relações levantada ao final do semestre para uma classe com 28
alunos. Cada aluno é identificado por um número. Considerando que um arco modela a relação de depen-
dência acadêmica (com quem o aluno estuda, faz trabalho ou tira suas dúvidas), os alunos possuidores de
desempenho acadêmico superior, via de regra, também contam com o maior número de relações a eles
associadas. Entende-se que uma relação pode ser uma associação direta através de um arco de entrada, ou
através de qualquer caminho que alcance o aluno. Determine os dois alunos que, provavelmente, possuem o
melhor desempenho e defina o tipo de relação acadêmica existente entre eles na turma.

Figura do exercício 5.13

Algoritmos

5.14: Considere o seguinte problema de “agrupamento”: dados um conjunto N de objetos e uma função distância
d: N×N+, com d(n,n) = 0, e um parâmetro k, que determina a busca de um grupo de k agrupamentos
de objetos N1, N2,...,Nk tal que a distância mínima entre cada par de objetos de diferentes agrupamentos é
maximizada. Desenvolva um algoritmo eficiente para a solução desse problema. Verifique que se trata de um
algoritmo exato e analise sua função de complexidade de tempo de processamento.
5.15: Dado um grafo G com n vértices e m arestas, e um inteiro k, desenvolva um algoritmo O(m+n) para deter-
minar um subgrafo induzido H, tal que (H) ≥ k.
5.16: Desenvolva um algoritmo que seja capaz de determinar o menor subgrafo H conexo de G com (H)  k.
5.17: Desenvolva um algoritmo para encontrar o Node Packing e o aplique para solucionar o problema no grafo
da figura do exercício
356 Grafos

Grafo do exercício 5.17

Modelos

5.18: O Rio de Janeiro está preparando um plano para uma campanha de vacinação em um feriado nacional. O
mapa do exercício apresenta uma suposta localização dos postos primários de vacinação da cidade. Cada
um dos postos primários pode se desdobrar entre 5 e 10 outros postos menores, conforme a necessidade.
Para que isso possa ser realizado, os postos primários precisam ser apoiados por centros maiores de coorde-
nação e distribuição de vacina. O objetivo do plano é determinar quais postos primários serão usados tam-
bém como postos de coordenação e distribuição da campanha, devendo ser reforçados com uma estrutura
maior de armazenagem e comunicação. Para facilitar vários aspectos logísticos do plano, os postos de apoio
devem ser sempre vizinhos dos postos que serão apoiados, e um posto de armazenamento coordenação
não deve atender mais do que quatro postos primários. Modele o problema de minimizar o número desses
postos através de grafos. Apresente uma solução para o caso da rede de vacinação proposta.

Figura do exercício 5.18: Mapa da distribuição dos postos


5.19: Suponha que existe uma creche que possui dez crianças registradas. É necessário planejar o uso dos escani-
nhos onde os pais das crianças deixam sua comida. As crianças chegam e saem de forma que nunca estão
CAPÍTULO 5  Subconjuntos de vértices e arestas 357

todas juntas na creche. A permanência é mensurada por períodos de uma hora, e se estende das 7:00 às
12:00. Na tabela abaixo um asterisco significa que a criança da coluna associada está na creche no horário
marcado. Qual o número mínimo de escaninhos necessários para que cada uma das crianças tenha um es-
caninho individual para a sua comida? Formule e solucione o problema através de um grafo.

Quadro dos horários de permanência das crianças

01 02 03 04 05 06 07 08 09 10

7:00 * – – * – – * – –

8:00 * * * – * – – * – –

9:00 * * * – – * – * – *

10:00 * * – – – * * – * *

11:00 * – – * – – * – * *

12:00 – – – * – – – – * *

5.20: Uma escola deve programar a distribuição dos exames de segunda chamada de forma que os alunos não
tenham que fazer mais de um exame por dia. Existem oito disciplinas no curso. A secretaria organizou um
quadro que marca com um asterisco as disciplinas que possuem alunos em comum para a segunda chama-
da. Quantos dias de exames serão necessários?

Quadro dos alunos em comum para a segunda chamada

Português Matemática História Geografia Inglês Biologia Química Física

Português – * – * – * * *

Matemática – * – – – * *

História – * – – – *

Geografia – * * – *

Inglês – * – –

Biologia – * –

Química – *

Física –

5.21: O acriônio, um minério especial encontrado no Acre, é minerado em placas de dimensão 9×9, onde a uni-
dade de medida é um núcleo cristal. As placas desse minério são formadas por cristais de quatro tipos de
elementos (c1, c2, c3 e c4). Os cristais de cada elemento ci são distribuídos aleatoriamente na placa. De fato,
um minério de acriônio é formado por um bloco de cristais com a dimensão 2×2 e contendo uma unidade
cristalina de cada um dos quatro diferentes tipos de cristais existentes no minério. Os cristais de cada ele-
mento químico da placa são formados por dois núcleos idênticos e se desenvolvem em blocos de dimensões
2×1 unidades de cristal. Existe um único cristal de dimensão 1×1, o que permite a formação do bloco 9×9. O
bloco cristalino 1×1 pode ser de qualquer um dos quatro elementos. A purificação do acriônio consiste em
encontrar e remover blocos 2×2 que possuam os quatro tipos de cristais. Formule o problema da purificação
do acriônio como um problema em grafos e desenvolver um algoritmo de solução que maximize o número
de blocos de quatro cristais a serem retirados de cada placa de mineração.
358 Grafos

(1) Uma placa qualquer de mineração (2) Um esquema de mineração da placa


Figura do exercício 5.21: Mineração de acriônio

5.22: Existem n experimentos biológicos sendo processados e1, e2,..., ei em determinado laboratório. Cada um
desses experimentos possui várias lâminas de ensaio que devem ser mantidas refrigeradas segundo uma
temperatura constante em um intervalo de temperatura [li, hi]  . A temperatura pode ser fixada livre-
mente dentro do intervalo, contudo, uma vez fixada, não mais poderá ser alterada, sob pena de destruir os
elementos biológicos. Dados os intervalos e sabendo-se que cada refrigerador é grande o suficiente para
preservar todas as lâminas de todos os experimentos, cada refrigerador deverá funcionar em apenas uma
temperatura. Determine o menor número possível de refrigeradores capazes de atender ao laboratório.
5.23: Noé, em sua arca, tem que acomodar animais em compartimentos de transporte de forma que a paz da arca
seja mantida. Animais inimigos naturais não podem ser vizinhos (laterais e diagonais das celas), porque existe
a possibilidade de que se machuquem. Também o alimento deve ser preservado. Assim os animais não podem
ser acomodados em compartimentos vizinhos a compartimentos que guardem sua comida natural. A arca
possui vários módulos de transporte, um deles é exibido na figura a seguir, tratando-se de uma área quadra-
da com 25 celas. Em cada cela pode ser acomodado um animal ou um pacote de ração de um animal. Cada
animal possui um pacote de ração específica. Uma cela deve ser deixada vazia para permitir acomodações de
viagem, se necessário. Existem os seguintes casais de animais para serem alojados: periquitos (P), lêmures (L),
queixadas (Q), furões (F), gatos (G) e cães (C). A comida dos cães é salsicha (S). O alimento dos furões são
insetos (I). Gatos comem pedaços de tainha (T). Lêmures viverão de nozes (N). Porcos comerão verduras (V).
Os periquitos receberão minhocas. Gatos comem periquitos. Cães atacam os gatos. Furões e lêmures brigam
até a morte. Queixadas ficam desesperados se a cela vizinha contiver minhocas. Gatos não dormem se a cela do
lado estiver cheia de insetos. Formule um modelo em grafos para encontrar uma alocação quer atenda a todos
os requisitos dos animais. A figura abaixo exibe uma alocação parcial viável.

C Q C Q F
T N L N P
P P V V S
* * * * *
* * * * *
CAPÍTULO 5  Subconjuntos de vértices e arestas 359

5.24: Em um tabuleiro de xadrez deseja-se localizar o menor número possível de rainhas, de forma que todas as
células do tabuleiro estejam sob pelo menos uma rainha. Formule e solucione o problema através do modelo
de grafos.
5.25: Um muro de arrimo deve ser construído com lajes quadradas de contenção, como exibido na Figura 1 do
exercício. Existem dois tipos de lajes no muro. As lajes de apoio que são fixadas a um cabo de protensão e
as lajes propriamente de contenção realizam a fixação do solo contido pelo muro. As lajes de contenção são
ligadas às lajes de apoio segundo as configurações comerciais exibidas na Figura 2 do exercício. As lajes de
apoio são dimensionadas para também trabalhar na contenção da parcela de solo que lhe compete na geo-
metria do muro. Considerando que uma laje de contenção juntamente com seu cabo de ancoragem custa
cerca de cem vezes mais que uma laje de apoio, determinar um conjunto de configurações comerciais que,
minimizando o número de lajes de contenção necessárias, possa atender exatamente a distribuição de lajes
exigida pelo projeto.

(1) Murro de arrimo (2) Blocos do muro de arrimo


Figura do exercício 5.25: Muro de arrimo e blocos de montagem

5.26: Um engenheiro pretende construir um salão sustentado por sete pilares. Os pilares somente poderão ser
localizados dentro de uma área circular de raio conhecido. Por razões de segurança, a base de cada um dos
pilares deve ser ligada à de três outros pilares através de cintas de amarração. As cintas são construídas na
mesma cota – estão no mesmo plano – e não podem se cruzar. A amarração dos pilares é uma obra possível
de ser executada?
5.27: Uma batalha espacial está sendo travada entre duas frotas de naves estelares, uma vermelha e outra verde.
As duas frotas devem deslocar naves para ocupar posições estratégicas no cenário de combate. Os locais
que podem ser ocupados pelas naves são representados pelos n vértices de um grafo G. Os sítios vizinhos
são ligados por arestas no grafo de localização. O objetivo das frotas é imobilizar a frota inimiga. Uma frota
imobilizada é considerada destruída. Uma frota é imobilizada quando não existirem mais locais livres – sem
qualquer nave localizada anteriormente – no grafo e pudessem ser ocupados por suas naves. Cada frota
somente poderá localizar novas naves nas vizinhanças da última nave inimiga situada no grafo. A primeira
localização de naves é realizada livremente pela frota vermelha. As frotas devem localizar suas naves inter-
caladamente até que uma delas seja imobilizada. Cada frota possui mais que n/2 naves. Demonstre que se
no grafo G existe um emparelhamento perfeito, a frota verde possui uma sequência de localizações que per-
mitirá imobilizar a frota vermelha, independentemente dos movimentos dessa última. Em caso contrário,
demonstre que é a frota vermelha que possui essa sequência vencedora.
5.28: No cenário do robô curioso, exercício 4.87 (Capítulo 4), localize o menor número de câmeras nas quadrícu-
las, de forma que todas possam ser monitoradas visualmente por um sistema de segurança. Uma localização
é exemplificada no cenário da Figura 5.28, caracterizando-se a visibilidade entre duas quadrículas a possi-
360 Grafos

bilidade de ligação visual entre seus centros. Note que a área “visualizada” deve ser contínua. A quadrícula
marcada pela cor tijolo ao alto do cenário atende a condição de acesso visual, todavia não é contínua a qual-
quer outra célula monitorada pela câmera em consideração. Para efeitos de vigilância não será considerada
passível de monitoramento por essa câmera. Observe que a exigência de continuidade da área monitorada
não está presente no problema 4.88.

Cenário do exercício 5.28

5.29: Um jogo consiste em dois jogadores alternando marcações em um grafo G. O primeiro, jogador número 1,
seleciona um vértice v0. Em seguida, o número 2 escolhe um vértice v1 adjacente a v0. Na sequência o jogador
1 escolhe um vértice adjacente a v1 e ainda não selecionado. Perde o jogo o primeiro jogador que não puder
mais selecionar um vértice para fazer sua jogada. De fato o jogo desenvolve um caminho no grafo G, uma
vez que nunca um vértice já escolhido pode ser novamente escolhido, e existe uma aresta de ligação entre o
novo vértice e o último vértice selecionado. Prove que o jogador 2 possui uma estratégia vencedora se G tem
um emparelhamento perfeito. Prove que o jogador 1 possui uma estratégia vencedora em caso contrário.
5.30: Um jogo consiste em dois jogadores alternando marcações em um grafo G. O primeiro, jogador número 1,
seleciona um vértice v0. Em seguida, o número 2 escolhe um vértice v1 adjacente a v0. Na sequência o jogador
1 escolhe um vértice adjacente a v1 ou v0 e ainda não selecionado. Perde o jogo o primeiro jogador que não
puder mais selecionar um vértice para fazer sua jogada. De fato o jogo desenvolve uma árvore no grafo G,
uma vez que nunca um vértice já escolhido pode ser novamente escolhido, e as escolhas são feitas sempre
em vértices vizinhos aos já escolhidos, portanto nunca se formando um ciclo na estrutura em formação.
Encontre uma característica do grafo G que garante que sempre exista uma estratégia de escolhas para o
jogador 1 que o leva à vitória.
5.31: Um jogo consiste em dois jogadores alternando marcações em um grafo G. O primeiro, jogador número 1,
seleciona um vértice v0. Em seguida, o número 2 escolhe um vértice v1 não adjacente a v0. O jogo prossegue
com o jogador 1 selecionado vértices ainda não selecionados e não adjacentes aos vértices selecionados por
2 e vice-versa. Encontre uma característica do grafo G que garanta que sempre exista uma estratégia de es-
colhas para o jogador 1 que o leva à vitória.
CAPÍTULO 5  Subconjuntos de vértices e arestas 361

Aplicações

5.32: 20 casais participam de uma festa na casa de Antônio, inclusive ele e sua esposa. Cada participante aperta a mão
dele ou dela apenas quando se encontram pela primeira vez na festa. Obviamente os casais não apertam a mão de
seu parceiro, porque vieram juntos para a festa. Ao final do evento, Antônio pergunta aos 39 outros participantes
(inclusive sua mulher) quantas mãos haviam apertado e descobriu que ninguém apertou o mesmo número de
mãos. Dado que Antônio cumprimentou a todos na festa, a informação que ele recebeu é verdadeira?
5.33: Determine o menor número de vértices que devem ser removidos do grafo de Petersen para que ele tenha
reduzido seu número de independência.
5.34: Uma esquadra de naves alienígenas aproxima-se do planeta Terra. São n naves. As defesas da Terra estão
preparando seus sistemas e analisando a melhor forma de destruir a esquadra. Sabe-se que uma nave alie-
nígena é capaz de se comunicar com até n/4 outras naves em um minuto. Em quanto tempo toda a frota
alienígena estará alertada se uma das naves detectar alguma ameaça?
5.35: Considerando um tabuleiro de xadrez em que foram removidas as células dos quatros cantos, é possível
cobrir o tabuleiro com peças de dominó que possuam exatamente o tamanho de duas células do tabuleiro?
5.36: Em uma escavação na Lua, uma região de fragilidade em um talude deve ser estabilizada pela construção de
uma cortina atirantada. Uma cortina atirantada lunar é uma estrutura de metal que se apóia em tirantes fixados
em solo firme, de modo a ser capaz de sustentar o empuxo do talude e mantê-lo em equilíbrio. Nessa cortina
lunar existem três tipos de tirantes: os tirantes comuns, os tirantes de apoio e os tirantes estaca. Um tirante
comum necessita possuir uma viga de estabilização ligando sua cabeça à cabeça de um tirante de apoio ou de
um tirante estaca. Um tirante de apoio pode sustentar até seis tirantes comuns. Esse número acaba produzindo,
na cortina, uma distribuição das cabeças dos tirantes em forma celular, como mostram as figuras do exercício,
uma vez que para sustentar os tirantes comuns é necessário que suas cabeças sejam vizinhas da cabeça de um
tirante de apoio ou um tirante estaca. O grupo formado por um tirante de apoio e seus tirantes satélites, que
são comuns, deve ser também estabilizado pela influência de um tirante estaca. Um tirante estaca, por sua vez,
pode também estabilizar tirantes comuns da mesma forma que um tirante de apoio, todavia não dependendo
de qualquer outro componente para exercer seu papel. A Figura 1(b) do exercício mostra a distribuição da
localização dos tirantes em uma cortina que vai estabilizar o talude da Figura 1(a). A Figura 1(c) exemplifica
como os tirantes de apoio e estaca podem se ligar aos outros tirantes. A Figura 1(d) mostra uma solução para
a localização viável dos tirantes na cortina. Sabendo que um tirante estaca custa 10 vezes mais que um tirante
de apoio, e um tirante de apoio custa 3 vezes o custo de um tirante comum, modele o problema de localizar os
tirantes em uma cortina, de forma a minimizar os custos de construção.

(a) Distribuição das cabeças de tirantes


362 Grafos

(b) Áreas de Influência da cabeça dos


(c) Uma solução viável
tirantes
Figura do exercício 5.36: Distribuição de tirantes em uma cortina de contenção

5.37: Um time de futebol está jogando simultaneamente dois torneios. O treinador deve escalar seu time para
jogar na quarta e na sexta-feira. O time possui os mesmos 24 jogadores registrados nos dois torneios. 12
correspondem ao time titular e 12 são reservas. Não é possível que 12 jogadores joguem nos dois jogos como
titulares. O treinador pode repetir a escalação como titular do goleiro, de três jogadores da defesa, de um do
meio-campo e de um do ataque. Na quarta, o jogo é muito importante e na sexta o jogo não é tão decisivo. O
departamento médico sabe o rendimento físico de cada jogador e quantificou isso numericamente, conside-
rando o desempenho no primeiro jogo (jogador descansado) e desempenho na condição em que o jogador
já jogou o primeiro jogo.
Sabe-se que os jogadores de 1 a 12 representam os jogadores normalmente titulares e de 13 a 24 são os re-
servas. Sabe-se que, além do aspecto físico, existe o técnico a ser considerado. Todavia, esses dois aspectos
estão ligados. O rendimento total de um jogador titular pode ser considerado o dobro de seu rendimento
físico, enquanto o jogador reserva tem seu rendimento técnico igual ao valor do rendimento físico. A tabela
de desempenho dos jogadores é presentemente transcrita:

Jogador 1oJogo 2o Jogo Jogador 1o Jogo 2o Jogo Posição


01 10 4 13 10 10 Goleiro
02 12 10 14 14 10
03 13 10 15 15 7
Defesa
04 10 4 16 21 20
05 15 5 17 15 8
06 18 9 18 15 10
07 13 7 19 17 16 Meio-campo
08 14 6 20 22 20
09 18 8 21 21 10
10 21 18 22 22 11
Ataque
11 14 10 23 22 10
12 18 15 24 25 10
CAPÍTULO 5  Subconjuntos de vértices e arestas 363

Considerando que o rendimento do time é igual a soma do rendimento de seus titulares, modele e solucione
via grafos a designação de titular e reserva dos 24 jogadores nos 2 jogos, de forma a maximizar a soma do
número de pontos do primeiro jogo, mais 50% dos pontos do segundo jogo.
364 Grafos

Desafios

5.38: Prove que se em G existe um H-minor, e G possui uma decomposição de árvore-comprimento com valor
pelo menos k, então H possui uma decomposição de árvore-comprimento com valor pelo menos k.
5.39: Um reator nuclear experimental (de pequeno porte) possui um núcleo composto de 22 hastes radioativas
(hexágonos de centro vermelho) e 20 hastes de moderação (hexágonos de centro azul), como mostra o es-
quema da Figura (1) do exemplo. O material radioativo das hastes é pequeno, de forma que pode ser isolado
por uma bainha de chumbo e pode permitir que as hastes radioativas sejam removidas de sua posição e
realocadas em outras posições sem que o operador seja submetido à radiação muito intensa.
Assim, qualquer haste do reator pode ser trocada por outra dentro do quadro. As hastes radioativas podem
também ser giradas de modo a configurar duas diferentes orientações, como mostra a Figura (2) do exercí-
cio. Cada diferente esquema de distribuição das hastes (localização e giro) produz um dado retorno em ca-
lor. Supondo que as distribuições de hastes devam ser sempre simétricas tanto em relação ao eixo horizontal
quanto ao vertical, para que os gradientes de temperatura no interior do reator sejam minimizados (uma
barra radioativa é considerada com orientação simétrica quando possui a mesma direção de suas barras
associadas pela relação de simetria), determine:
1. Quantos diferentes resultados de produção de calor o reator pode fornecer.
2. Considerando que as configurações mais estáveis minimizam o número de hastes de moderação que são
vizinhas umas das outras (uma haste é considerada vizinha de outra quando se emparelha horizontal ou
verticalmente com essa haste), encontre uma dessas configurações consideradas mais estáveis.

(1) Uma configuração do reator (2) Possíveis orientações das barras radioativas
Figura do exercício: Um esquema de distribuição de barras em um reator nuclear

5.40: A cidade de Curitiba possui um dos mais eficientes sistemas de transporte urbano do Brasil. A figura do
exercício exibe uma dada configuração desse sistema. Supondo que:
1.  Cada terminal de integração urbano possa receber e dar vazão a 20 mil novos usuários/hora.
2.  Cada terminal metropolitano possa receber e dar vazão a 500 mil usuários/hora.
CAPÍTULO 5  Subconjuntos de vértices e arestas 365

3.  Os corredores dos alimentadores possuam a capacidade de transportar 150 mil usuários/hora (total do
tráfego nos dois sentidos – quando houver dois sentidos).
4.  Os corredores expressos possuam a capacidade de 200 mil usuários/hora (total do tráfego nos dois sen-
tidos – quando houver dois sentidos.
5.  Os corredores de integração interbairros possam transportar 100 mil usuários/hora (total do tráfego nos
dois sentidos – quando houver dois sentidos).
6.  Os corredores de integração linha direta possam transportar 150 mil usuários/hora (total do tráfego nos
dois sentidos – quando houver dois sentidos).

Suponha que todos os terminais de integração urbana funcionem dando vazão à circulação de todos os
usuários do sistema já embarcados e captando adicionalmente sua capacidade nominal descrita anterior-
mente; que os terminais de integração metropolitana funcionem somente como pontos terminais em que a
demanda deixa o sistema; que toda a demanda da integração urbana será direcionada aos terminais de inte-
gração metropolitana que se localizar mais próximo do ponto de embarque; que, durante duas horas, toda
a demanda de passageiros possua um único destino: o caminho mais curto para fora de Curitiba (de forma
a que se supere a fase de transição necessária ao carregamento do sistema). Dimensione as capacidades das
quatro rotas para fora de Curitiba associadas aos terminais de integração metropolitana de forma que não
haja retenção no fluxo dos passageiros. Determine esse fluxo máximo. Identifique onde residem os gargalos
desse sistema de transporte. A capacidade dos terminais metropolitanos será esgotada?

Figura do exercício: Esquema do sistema de transporte de Curitiba


366 Grafos

5.14 Referências
Ahuja, R. K., Magnanti, T. L. & Orlin, J. B. (1993) Network Flows: Theory, Algorithms, and Applications. Prentice Hall.
Arnborg, S., Corneil, D. G. & Proskurowski, A. (1987). Complexity of Finding Embeddings in a k-tree. SIAM Jour-
nal on Algebraic and Discrete Methods 8:277-284.
Ausiello, G., Crescenzi, P., Gambosi, G., Kann, V., Marchetti-Spaccamela, A. & Protasi, M. (1999). Complexity and
Approximation: Combinatorial Optimization Problems and Their Approximability Properties. Springer-Verlag.
Avis, D. (1983). A Survey of Heuristics for the Weighted Matching Problem. Networks 13:475-493.
Ball, M. O. & Derigs, U. (1983). An Analysis of Alternative Strategies for Implementing Matching Algorithms.
Networks 13(4):517-549.
Bandelt, H-J. & van de Vel, M. (1989). Embedding topological median algebras in products of dendrons. In: Pro-
ceedings of the London Mathematical Society s3-58(3):439-453.
Bar-Noy, A., Kipnis, S. & Schieber, B. (2000). Optimal Multiple Message Broadcasting in Telephone-like Commu-
nication Systems. Discrete Applied Mathematics 100:1-15.
Bartholdi III, J. J., Orlin J. B. & Ratliff, H. D. (1980). Cyclic Scheduling via Integer Programs with Circular Ones.
Operations Research 28 (5):1074-1085.
Bartholdi III, J. J. & Platzman, L. K. (1982). A Fast Heuristic Based on Spacefilling Curves for Minimum-Weight
Matching in the Plane. Information Processing Letters 17:177-180.
Basagni, S. (2001). Finding a Maximal Weighted Independent Set in Wireless Networks. Telecommunication Sys-
tems 19(1-3), 155-168.
Bath, P. A., Craigs, C., Maheswaran, R., Raymond, J. & Willett, P. (2005). Use of Graph Theory to Identify Patterns
of Deprivation and High Morbidity and Mortality in Public Health Data Sets. Journal of the American Medical
Informatics Association 12:630-641.
Benvenites, R. (1982). A Note on the Covering Problem. Journal of the Operational Research Society 23:261-265.
Berge, C. (1957). Two Theorems in Graph Theory. Proc. Nat. Acad. Sci. USA 43:842-844.
Bermond, J.-C., Gargano, L., Rescigno, A. A. & Vaccaro, U. (1998). Fast Gossiping by Short Messages. SIAM Jour-
nal on Computing 27:917-941.
Bläser, M. & Manthey, B. (2005). Approximating Maximum Weight Cycle Covers in Directed Graphs with Weights
Zero and One. Algorithmica 42(2):121-139.
Blum, N. (1990). A New Approach to Maximum Matching in General Graphs. Lecture Notes in Computer Science
443:586-597.
Bodlaender, H. L. & Fomin, F. V. (2005). Tree Decompositions with Small Cost. Discrete Applied Mathematics
145:143-154.
Bomze, I., Budinich, M., Pardalos, P. & Pelillo, M. (1999). The Maximum Clique Problem. In: Du, D.-Z., Pardalos,
P. M. (Eds.), Handbook of Combinatorial Optimization (Suppl. Vol. A), Kluwer, 1-74.
Bonnet, S., Peyrin, F., Turjman, F. & Prost, R. (2002). Multiresolution Reconstruction in Fan-beam Tomography.
IEEE Transactions on Image Processing 11(3):169-176.
Bshouty, N. H. & Burroughs. L. (1998). Massaging a Linear Programming Solution to Give a 2-approximation
for a Generalization of the Vertex Cover Problem. In: Proceedings of the 15th Symposium on Theoretical Aspects of
Computer Science (STACS’98). Lecture Notes in Computer Science 1373:298-308.
Bui, T. N. & Jones, C. (1992). Finding Good Approximate Vertex and Edge Partitions is NP-hard. Information
Processing Letters 42(3):153-159.
Bui, T. S., Chaudhuri, S., Leighton, F. T. & Sipser, M. (1987). Graph Bisection Algorithms with good Average Case
Behavior. Combinatorica 7(2):171-191.
Butenko, S. & Wilhelm, W. E. (2006). Clique-detection Models in Computational Biochemistry and Genomics.
European Journal of Operational Research 173:1-17.
CAPÍTULO 6  Fluxo em redes 367

capítulo
368 Grafos

6.1 Fluxo em Redes – Conceitos Básicos


Os chamados problemas de fluxo abordam o problema de fazer circular determinado produto através dos vértices
e arestas de uma rede. Portanto, esse tipo de problema associa aos já conhecidos componentes de um grafo um
novo elemento denominado fluxo. Os problemas de fluxo são associados às várias situações reais de distribuição
de água, eletricidade, produtos industriais, movimentação de veículos etc.

Rede
A distribuição dos produtos de
Uma rede R = (V,E,F,U) é definida como um grafo direcionado G = (V,E) atra- uma rede não é realizada obriga-
vessado por um fluxo. toriamente de um ponto de pro-
O fluxo F pode ser representado por F = {f1, f2,..., fm} circulando pelos m arcos da dução a um ponto de demanda,
rede ou por F = {f(i,j)}, (i,j)  m. permitindo-se que pontos inter-
O conjunto U = {u(i,j)}, (i,j)  m é o conjunto dos limites de fluxo associados mediários, tais como depósitos ou
aos arcos de E. centros de concentração e distri-
buição, sejam utilizados. As inter-
ligações podem possuir restrições
f(s,t) de capacidade de tráfego e custos
Fonte variados. Os arcos de uma rede
Sumidouro
u(s,t) podem ser sempre considerados
s t capacitados.

Fluxo entre Conjuntos de Vértices


Dados dois conjuntos X,Y  N de vértices de uma rede, tal que X  Y = , o fluxo
entre eles ocorre do conjunto X para o conjunto Y e vice-versa. Considerando a rede da Figu-
ra 6.1(1) com X = {x1,x2} e Y =
O fluxo do conjunto X para o conjunto Y, sendo denotado como f(X,Y), pode
ser obtido pela expressão: {x4,x5}. As Figuras (3) e (4) exem-
plificam os fluxos entre esses dois
conjuntos de vértices.

O conjunto U dos limites de fluxo definem o valor máximo e mínimo dos fluxos nos arcos (i,j) da rede, i,jV.
O limite máximo desse mesmo fluxo será convencionado igual a u(i,j) e o mínimo será u(i,j). A Figura 6.2 exem-
plifica algumas formas válidas de rótulo para os arcos de uma rede.

(1) Rede R (2) Conjuntos X e YR


CAPÍTULO 6  Fluxo em redes 369

(3) f(X,Y) = f(x1,x4) + f(x1,x5) (4) f(Y, X) = f(x4, x2) + f(x5, x2)

Figura 6.1 Fluxo entre conjuntos X e Y de vértices de uma rede R

(1) Rotulação com limites e fluxo (2) Outros possíveis esquemas de rotulação

Figura 6.2 Exemplo da constituição de um rótulo uij em uma rede

Caso não exista algum dos limites citados, ou ambos, os limites superior e inferior serão considerados + e -,
respectivamente. A Figura 6.3 apresenta um exemplo de uma rede em que existe somente um limite máximo para
o fluxo nos arcos – talvez o caso prático mais comum.

Figura 6.3 Exemplos de uma rede


370 Grafos

Condições de conservação de fluxo em uma Rede – 1a Lei de Kirchoff

A 1a Lei de Kirchoff diz que, para todo fluxo conservativo em uma rede, o fluxo que chega a um vértice de passagem
desse fluxo deve ser igual ao fluxo que sai desse vértice. A Figura 6.4 exemplifica a 1a Lei de Kirchoff.

Equação geral de fluxo

Figura 6.4 1a Lei de Kirchoff

Considerando x  N, x ≠ s, t, é possível reescrever a equação da Figura 6.4 como se segue:

Os vértices de uma rede que atendem a 1a lei de conservação de fluxos são denominados vértices conservativos
– ou vértices de passagem de fluxo. Em uma rede, os vértices sumidouro e fonte não atendem, a princípio, a 1a Lei
de Kirchoff, uma vez que não são vértices de passagem de fluxo, e sim de oferta e demanda de fluxo. Todavia, dois
tipos de transformações permitem estender a todos os vértices de uma rede as propriedades de fluxo conservativo.
1a Transformação: redução de todos os vértices de oferta em um único vértice fonte e de todos os vértices de
consumo em um único vértice sumidouro. Considere a existência de apenas um vértice fonte e um vértice
sumidouro em uma rede.
a
2 Transformação: redução dos vértices fonte e sumidouro em vértices conservativos.
A primeira transformação é exemplificada na rede da Figura 6.5(1) onde são apresentadas as capacidades dos
arcos. Os vértices de oferta r e p da Figura 6.5(1) são reunidos em um único vértice artificial de oferta s. Os vértices
w e q são reunidos através de um vértice artificial de consumo t. O total das ofertas e dos consumos associados
aos vértices são reunidos em um único arco artificial unindo o vértice real com o vértice artificial de substituição
como mostra a Figura 6.5(2).

(1) Rede original


CAPÍTULO 6  Fluxo em redes 371

(2) Rede com os vértices de demanda e oferta unificados

Figura 6.5 Primeira transformação: unificação dos vértices de demanda em t e oferta em s

A segunda transformação é exemplificada na Figura 6.6 através da ligação dos vértices s e t por um arco artifi-
cial com capacidade igual ao menor valor entre a capacidade de oferta (36) e a capacidade de demanda (45).

Figura 6.6 Segunda transformação: unificação dos vértices s e t

Fluxo Viável
Um fluxo f = (f1, ..., fm) Rm é dito viável, se: A Figura 6.7(2) exemplifica um
1. É conservativo fluxo viável para a rede da Figu-
2. Atende as seguintes condições: ra 6.7(1). Os valores dos rótulos
marcam o valor do fluxo mínimo
u(i,j)  u(i,j), i,j  N tal que: e máximo no arco. Os valores em
u(i,j) ≤ fij ≤ u(i,j), fij  F vermelho são os fluxos associados.
0 ≤ u(i,j) ≤ u(i,j)
372 Grafos

(1) Rede exemplo (2) Fluxo viável

Figura 6.7 Exemplo de fluxo viável

Tabela 6.1 (1): Algoritmos para determinação de fluxo máximo em redes


Trabalho Técnica utilizada Complexidade
2
Dantzig (1951) SIMPLEX O(n mU)
Ford & Fulkerson (1956) Caminhos de aumento de fluxo O(mnU)
Dinitz (1970) Fluxo forçado em uma rede em camadas O(nm2) e O(mn2)
Edmonsds & Karp (1972) Caminhos de aumento de fluxo O(nm2) e O(m2logU)
Dinitz (1973); Gabow (1985) Técnicas de escala e redução de resíduos O(mnlogU)
Karzanov (1974) Fluxo forçado em uma rede em camadas O(n3)
Fluxo forçado em uma rede com procedi-
Cherkassky (1977)
mentos de re-rotulação
Malhotra et al. (1978) Fluxo forçado em uma rede em camadas O(n3)
Galil & Naamad (1980) Path compression O(|m| |n|Iog2n)
Shiloach & Vishkin (1982) Programação paralela com n processadores O(n2log(n))
Sleator & Tarjan (1983) Estrutura de dados dinâmica O(mnlogn)
Goldberg & Tarjan (1986) Push-Relabel Method O(mnlog(n2/m)
Highest Label
Goldberg & Tarjan (1987); (1988) FIFO Algorithm O(n3)
Lowest Label O(n2m)
Ahuja & Orlin (1989) Original Excess-scaling O(mn+n2logU)

Ahuja et al. (1989) Dynamic Trees and Scaling Factor

Cheriyan & Hagerup (1989) Algoritmo Aleatorizado E(nm+n2log2n)

Cheriyan et al. (1990) Incremental Excess-scaling

Alon (1990) Permutações Pseudoaleatórias O(mn+n8/3logn)

Stack-scaling
Ahuja et al. (1991)
Wave-scaling

Versão determinística do algoritmo de Che-


King et al. (1992) O(nm + n2+ε)
riyan et al. (1990)
CAPÍTULO 6  Fluxo em redes 373

Tabela 6.1 (2): Algoritmos para determinação de fluxo máximo em redes

Trabalho Técnica Utilizada Complexidade

Algoritmo baseado na melhoria do algoritmo de


Phillips & Westbrook (1993) King et al (1992) usando a técnica de node kill O(mnlogm/nn+n2log2+εn)
game.

Goldberg & Rao (1997) Binary blocking flow O(min{m1/2,n2/3}mlog(n2/m)logU

Goldfarb & Chen (1997) Dual network simplex O(n2m)

Hochbaum (2008) Pseudofluxos O(mnlogn)

U representa a capacidade máxima de um arco da rede.

6.2 O Problema do Fluxo Máximo

Conceitos Básicos

O Problema do Fluxo Máximo


p
O problema de fluxo máximo consiste em fazer circular, em uma dada rede R
= {V,E,F,U}, o maior fluxo possível (evidentemente respeitando-se as restrições
que constam dos limites anotados no conjunto U) entre os vértices s e t.

A Figura 6.8 exemplifica um fluxo máximo (destacado em vermelho na rotulação) na rede proposta.

Figura 6.8 Fluxo Máximo s-t igual a 7 unidades


374 Grafos

Corte s-t em uma Rede


Considerando uma partição no conjunto de vértices N de uma rede tal que X 
X =  e X  X = N com s  X e t  X.
A Figura 6.9(2) exemplifica um
corte s-t na rede da Figura 6.9(1).
Diz-se que essa partição define um corte em R que também é denominado por
corte s-t.
A Figura 6.9(2) exemplifica um
corte s-t com X = {s,1,2} e X =
Capacidade de um Corte s-t {3,4,t}.
É o somatório dos limites dos fluxos associados aos arcos do corte. É definida
A capacidade do corte assinalado
de X para X.
As expressões que seguem calculam a capacidade de um corte s-t. é:

u(X,X) =1
u(X,X) = 4 + 5 + 4

(1) Rede exemplo (2) Um corte

Figura 6.9 Exemplo de um corte s-t

Os cortes s-t podem possuir tanto arcos de entrada como arcos de saída ligando os dois conjuntos de vértices
do corte. Como é possível que haja circulação em arcos de entrada e saída de cada conjunto, de fato a circulação
entre s e t está associada ao fluxo líquido em qualquer corte s-t da rede.

Fluxo Líquido e Capacidade Líquida O conceito de fluxo máximo em


uma rede está associado ao con-
O fluxo líquido através do corte s-t é o resultado do balanço do fluxo de X para ceito de fluxo líquido máximo e
Y e de Y para X, conforme a expressão abaixo: capacidade líquida máxima de um
corte em uma rede R.
fL = f(X, Y) – f(Y, X)

A capacidade líquida do corte s-t é o resultado do balanço de capacidades dos Como é possível a existência de
arcos do corte, conforme a expressão abaixo: diferentes cortes s-t em uma rede,
o fluxo máximo está associado ao
uL = u(X, Y) – u(Y, X) corte de menor capacidade líqui-
da entre s e t.
CAPÍTULO 6  Fluxo em redes 375

Gargalo de Fluxo

É comum nominar os elementos que restringem o fluxo em uma rede de elementos gargalo. Os gargalos po-
dem ser arcos ou conjuntos de arcos.
1. O arco de menor capacidade em um caminho de fluxo é dito gargalo do caminho.
2. O corte de mínimo fluxo em uma rede é denominado de gargalo de fluxo.

Considerando uma rede s-t constituída por um único caminho de s para t como exemplificado na Figura 6.10.

Figura 6.10 Caminho s-t

Então o valor do fluxo máximo que percorre esta rede é:

f0 = min {u(s, x1), u(x1, x2), ..., u(xn, t)}

Teorema 6.1
Dado um fluxo f de valor val(f ), qualquer que seja o corte (X, X):

val(f ) ≤ u(X, X)–u(X,X)

Teorema 6.2
Para qualquer rede s-t o valor do fluxo máximo é igual a capacidade líquida mí-
nima entre seus cortes s-t.
376 Grafos

Grafo de Aumento de Fluxo A Figura 6.11 exemplifica um


Um grafo de aumento de fluxo G = (Vf ,Ef ) possui somente arcos simples sendo grafo de aumento de fluxo, as folgas
construído da seguinte forma: ξ(x, y) e ξ(x, y) e os arcos utilizáveis.

1. (x, y)  Ef se (x, y)  E e f (x, y) < u(x, y) A rede do grafo 6.11(1) é toma-


2. (y, x)  Ef se (y, x)  E e f (x, y) > u(x, y) da por base do exemplo. Os rótulos
marcam a capacidade mínima e
máxima dos arcos.
Folga de um Arco
Uma folga do arco (x, y) é obtida da seguinte forma: A Figura 6.11(2) rotula somente
o fluxo f = 8 unidades.
1. ξ (x, y) = u(x, y) – f (x, y) se f (x, y) < u(x, y)
2. ξ (x, y) = f (x, y) – u (x, y) se f (x, y) > u(x, y) A Figura 6.11(3) exibe as folgas
nos arcos da rede.
Arco Utilizável
A Figura 6.11(4) exemplifica o
Dados dois vértices x e y, sendo x rotulado e y não rotulado, um arco a é utilizá- grafo de aumento de fluxo associa-
vel em duas situações: a = (x,y), dito arco direto, ou a = (y,x), dito arco rever- do ao fluxo de 8 unidades da Figura
so. Observe que esse conceito diz respeito ao funcionamento dos algoritmos de 6.11(2).

(1) Rede exemplo (2) Fluxo de 8 unidades na rede da Figura (1)

(3) Folgas nos arcos da rede da Figura (1) (4) Grafo de aumento de fluxo

Figura 6.11 Exemplo das folgas nos arcos e do grafo de aumento de fluxo

Algoritmos Baseados no Caminho de Aumento de Fluxo

Uma das estratégias mais antigas utilizadas para a determinação de fluxo máximo em redes é encontrar uma se-
quência de caminhos de aumento de fluxo entre s e t, caminhos definidos no grafo de aumento de fluxo. Para cada
caminho de aumento de fluxo encontrado, esses algoritmos fazem circular um fluxo entre s e t que esgota seu arco
de menor capacidade e atualiza as capacidades dos arcos da rede percorridos pelo fluxo. Quando não for mais pos-
CAPÍTULO 6  Fluxo em redes 377

sível encontrar um caminho de aumento de fluxo entre s e t o fluxo máximo é alcançado. Um dos algoritmos que
melhor representa essa estratégia é o de Ford e Fulkerson.

Algoritmo de Ford e Fulkerson


A seguir é apresentado o algoritmo de Ford & Fulkerson (1956) para o cálculo do fluxo máximo em uma rede
G = (V,E,F,U). O algoritmo parte de um fluxo viável na rede. No caso de os limites inferiores de todos os arcos
serem iguais a zero, o fluxo zero pode ser adotado, isto é f(i,j) = 0 para todo arco (i,j)  E. O algoritmo rotula os
vértices de G buscando encontrar um caminho de aumento de fluxo entre s e t. Caso tal caminho exista, o algorit-
mo aumenta o fluxo na rede.

A Ford e Fulkerson
Sendo f um fluxo viável na rede
Rotular s com [–∞ ,0,+∞]
Enquanto existir vértice i rotulado incidente a um arco a utilizável Faça
Se a = (i,j) // arco utilizável: j não rotulado e f (i, j) < u(i, j)
Rotular j com [i,+, ξ j ], onde ξ j = min {ξ j , u(i, j) – f (i, j)}
Senão // arco utilizável a = (j, i) com j não rotulado e f (j, i) > u(i, j)
Rotular j com [i,–, ξ j ], onde ξ j = min {ξ j , f (i, j) – u (i, j)}
Fim_se
Se t foi rotulado
Construir o caminho P de aumento de fluxo a partir de t
Aumentar o fluxo nos arcos de P somando ξ t nos arcos diretos e decrescendo ξ t nos arcos reversos.
Cancelar todos os rótulos (exceto de s)
Fim_se
Fim_Enquanto
// O fluxo é máximo. Um corte s-t de capacidade mínima pode ser obtido colocando-se todos os nós rotulados em X
e os restantes em X

O processo de rotulação e aumento de fluxo é repetido até que não seja mais possível encontrar um caminho de
aumento de fluxo, situação na qual um fluxo máximo está circulando na rede.
Os rótulos são atribuídos a vértices y tais que exista um caminho de aumento de fluxo de s até y. Um vértice y,
não rotulado, recebe um rótulo quando existe um arco utilizável, a, incidente em y. Dado x um vértice rotulado,
um arco a é utilizável em duas situações: a = (x, y) e f(x, y) < u(x, y), dito arco direto, ou a = (y, x) e f(y, x) > u(x, y),
dito arco reverso. O rótulo atribuído ao vértice y é composto de três campos e tem a forma [x, ±, ξy], onde x denota
o vértice a partir do qual y foi rotulado, + ou – indicando que y foi rotulado por um arco direto ou reverso, respec-
tivamente, e ξy o máximo valor de fluxo que pode chegar a y a partir de s pelo caminho de aumento de fluxo sendo
construído na iteração corrente. Quando t é rotulado, um caminho de fluxo entre s e t é encontrado.
Um exemplo da aplicação do algoritmo de Ford e Fulkerson para encontrar o fluxo máximo em uma rede é
dado a seguir para o grafo da Figura 6.12(1). O algoritmo parte de um fluxo viável f = 0, notado em vermelho em
cada aresta, onde também são apresentados os limites inferiores e superiores para o fluxo. Inicialmente, o vértice s
recebe rótulo [–∞,–,+∞]. A partir da rotulação de s existem dois arcos utilizáveis: (s, x1) e (s, x2). A escolha do arco
utilizável é arbitrária. Escolhe-se o arco (s, x1) que tem folga dada por u(s, x1) – f(s, x1) = 4. O vértice x1 recebe o
378 Grafos

rótulo [s, +, 4], como mostrado na Figura 6.12(2), uma vez que ele foi rotulado a partir de s, por um arco direto, e
min{+∞, 4} = 4. Os arcos utilizáveis, neste momento, são (s, x2), (x1, x2), (x1, x3) e (x1, x4). É escolhido o arco (x1, x4).
O vértice x4 recebe o rótulo [x1, +, 2], como mostrado na Figura 6.12(3), uma vez que ele foi rotulado a partir de x1,
por um arco direto, e min{4,2} = 2. A lista dos arcos utilizáveis é atualizada para (s, x2), (x1, x2), (x1, x3) e (x4, x3) e
(x4, t). Escolhendo-se o arco (x4, x3), o vértice x3 é rotulado com [x4, +, 2], como mostrado na Figura 6.12(4), uma
vez que ele foi rotulado a partir de x4, por um arco direto, e min{2,5} = 2. A nova lista dos arcos utilizáveis é (s, x2),
(x1, x2), (x4, t) e (x3, t). Escolhendo-se (x3, t), o rótulo vértice t é [x3, +, 2], como mostrado na Figura 6.12(5), uma
vez que t foi rotulado a partir de x3, por um arco direto, e min{2,6} = 2. Como o vértice t foi rotulado, um caminho
de aumento de fluxo foi encontrado.

(1) Rede exemplo (2) Primeira rotulação do vértice x1

(3) Primeira rotulação do vértice x4 (4) Primeira rotulação do vértice x3

(5) Primeira rotulação do vértice t (6) Rede com fluxo f = 2

Figura 6.12 Primeiro aumento de fluxo pelo algoritmo Ford e Fulkerson

O número de unidades de fluxo que podem ser aumentadas no caminho de fluxo encontrado no processamen-
to de t é dado no seu rótulo, sendo 2. O caminho é recuperado andando para trás a partir de t, nos rótulos dos
vértices do caminho, sendo t–x3–x4–x1–s, aumentando 2 unidades de fluxo em cada arco do caminho, uma vez que
todos são arcos diretos. Um fluxo f = 2 é transmitido na rede. O algoritmo remove todos os rótulos dos vértices,
exceto de s e reinicia o processo de rotulação, como mostrado na Figura 6.13(1).
CAPÍTULO 6  Fluxo em redes 379

(1) Segunda rotulação do vértice x1 (2) Segunda rotulação do vértice x3

(3) Segunda rotulação do vértice x4 (4) Primeira rotulação do vértice x2

(5) Segunda rotulação do vértice t (6) Rede com fluxo f = 4

Figura 6.13 Segundo aumento de fluxo pelo algoritmo Ford e Fulkerson

Como na primeira iteração, existem dois arcos utilizáveis a partir de s: (s, x1) e (s, x2). Escolhe-se o arco (s, x1)
que tem folga dada por u(s, x1) – f(s, x1) = 2. O vértice x1 recebe o rótulo [s, +, 2], como mostrado na Figura 6.13(1),
uma vez que ele foi rotulado a partir de s, por um arco direto, e min{+,2} = 2. Depois da rotulação de x1, os arcos
utilizáveis são (s, x2), (x1, x2) e (x1, x3). Escolhe-se o arco (x1, x3) e o vértice x3 recebe rótulo [x1, +, 2], como mos-
trado na Figura 6.13(2), uma vez que ele foi rotulado a partir de x1, por um arco direto, e min{2,2} = 2. Depois da
rotulação de x3, os arcos utilizáveis são (s, x2), (x1, x2), (x3, t) e (x4, x3), sendo este último um arco reverso com folga
f(x4, x3) – u(x4, x3) = 2. Escolhendo (x4, x3) o vértice x4 recebe rótulo [x3, –, 2], como mostrado na Figura 6.13(3),
uma vez que x4 foi rotulado a partir de x3, por um arco reverso e min{2,2} = 2. Depois da rotulação de x4, os arcos
utilizáveis são (s, x2), (x1, x2), (x3, t) e (x4, t). Escolhendo (s, x2) o vértice x2 recebe rótulo [s, +, 3], como mostrado
na Figura 6.13(4), uma vez que x2 foi rotulado a partir de s, por um arco direto e min{+, 3} = 3. Depois da rotu-
lação de x2, os arcos utilizáveis são (x3, t) e (x4, t). Escolhendo (x4, t), o rótulo vértice t é [x4, +, 2], como mostrado
na Figura 6.13(5), uma vez que t foi rotulado a partir de x4, por um arco direto, e min{2,10} = 2. Como o vértice t
foi rotulado, um caminho de aumento de fluxo foi encontrado. O caminho recuperado a partir de t é t–x4–x3–x1–s,
aumentando 2 unidades de fluxo nos arcos diretos (s, x1), (x1, x3) e (x4, t), e diminuindo 2 unidades de fluxo no arco
reverso (x4, x3). Um fluxo f = 4 é transmitido na rede. O algoritmo remove todos os rótulos dos vértices, exceto de
s, e reinicia o processo de rotulação como mostrado na Figura 6.14(1).
Neste ponto, só existe um arco utilizável a partir de s, sendo (s, x2). Portanto, o vértice x2 recebe rótulo [s, +, 3]
como mostrado na Figura 6.14(1), uma vez que x2 foi rotulado a partir de s, por um arco direto e min{+, 3} = 3.
Depois da rotulação de x2, os arcos utilizáveis são (x2, x3) e (x2, x4). Escolhendo (x2, x4) o vértice x4 recebe rótulo
380 Grafos

[x2,+, 3], como mostrado na Figura 6.14(2), uma vez que x4 foi rotulado a partir de x2, por um arco direto e min{3,3}
= 3. Depois da rotulação de x4, os arcos utilizáveis são (x4, x3) e (x4, t). Escolhendo (x4, t) o vértice t recebe rótulo
[x4, +, 3], como mostrado na Figura 6.13(3), uma vez que t foi rotulado a partir de x4, por um arco direto e
min{3,8} = 3. Como o vértice t foi rotulado, um caminho de aumento de fluxo foi encontrado. O caminho
recuperado a partir de t é t–x4–x2–s, aumentando 3 unidades de fluxo nos arcos diretos (s, x2), (x2, x4) e (x4, t).
Um fluxo f = 7 é transmitido na rede. O algoritmo remove todos os rótulos dos vértices, exceto de s, e reinicia
o processo de rotulação. Neste ponto, não existe arco utilizável a partir de s e, portanto, não é possível rotular
qualquer vértice, indicando que o fluxo máximo foi encontrado. O único vértice rotulado é s, portanto, tem-se
que X = {s} e X = {x1, x2, x3, x4, t}.

(1) Segunda rotulação do vértice x2 (2) Terceira rotulação do vértice x4

(3) Terceira rotulação do vértice t (4) Rede com fluxo f = 7

Figura 6.14 Terceiro aumento de fluxo pelo algoritmo Ford e Fulkerson

O algoritmo Ford e Fulkerson termina quando o vértice t não pode mais ser rotulado. Nesse caso os vértices
rotulados e os não rotulados definem também um corte mínimo em R. Todavia, o algoritmo pode apresentar um
comportamento ineficiente no caso de as capacidades nos arcos possuírem valores irracionais. A rede da Figura
6.15 mostra um caso em que o algoritmo F&F pode ser ineficiente.
É possível que o algoritmo escolha, alternada-
mente, os caminhos de aumento de fluxo (s, x1,
x2, t) e (s, x2, x1, t). Dessa forma, serão necessárias
2 × 10n operações de aumento de fluxo para en-
contrar o fluxo máximo. No caso de a escolha do
caminho de aumento de fluxo se dar na sequência
(s, x1, t) e (s, x2, t), serão necessárias apenas duas
iterações para a solução do fluxo. Infelizmente, o
comportamento patológico do algoritmo F&F não
pode ser descartado.

Figura 6.15 Caso patológico para o algoritmo de fluxo máxi-


mo F&F
CAPÍTULO 6  Fluxo em redes 381

Complexidade Ford e Fulkerson


No caso de a capacidade dos arcos ser inteira, a complexidade de F&F será O(mfmáx) ou ainda O(mnU). Se o algoritmo realizar
o aumento de fluxo no caminho que possui o menor número possível de arcos, então a complexidade de F&F será O(m2n)
(Dinitz,1970).

O(mnU) O(mfmáx)

A complexidade O(m2n) pode ser obtida modificando a sequência de rotulação e exame de modo que os vér-
tices sejam examinados na mesma ordem em que tiverem recebido seus rótulos. O teorema de Edmonds e Karp
calcula a ordem do número de aumentos de fluxo necessário para o término do algoritmo F&F quando a modifi-
cação de rotulação e exame é introduzida.

Teorema 6.3
(Edmonds & Karp)
Se cada aumento de fluxo é efetuado em um caminho, se s para t de mínimo
número de arcos, então um fluxo máximo é obtido após, em no máximo, mn/2
≤ (n3–n2)/2 aumentos de fluxo.
(Lawler, 1976)

Como para cada aumento de fluxo são necessárias O(m) operações, a complexidade do algoritmo F&F mo-
dificado é O(m2n). Outro resultado bastante interessante diz respeito à complexidade do algoritmo ótimo para a
solução do problema de fluxo máximo.

Algoritmos de Fluxo Forçado

Uma classe de algoritmos de fluxo máximo caracteriza-se por forçar o fluxo através da identificação de gargalos de
fluxo em uma rede em camadas. Serão apresentados no presente tópico os algoritmos de Dinitz e MPM.

Algoritmo de Dinitz

Um destes algoritmos foi proposto por Dinitz em 1970 (Dinitz, 2006) e utiliza redes em camadas na construção dos
caminhos de aumento de fluxo. Uma rede em camadas H é uma rede induzida de uma rede R onde já circula um
dado fluxo f. Na camada zero ela contém somente o vértice s da rede R, o qual é considerado um vértice rotulado.
Na camada 1 estão os vértices do conjunto y Y tal que exista um arco utilizável de s para y. São colocados em H
somente os arcos utilizáveis de s para y. A capacidade desses arcos é u(s, y) – f(s, y) + f(y, s). Após a conclusão da
inclusão dos arcos entre qualquer par de camadas, os vértices da última camada são considerados rotulados. Na
camada 2 estão os vértices w, tais que existem arcos utilizáveis dos vértices y da camada 1 para os vértices w. Então
são colocados em H arcos dos vértices da camada 1 para os vértices da camada 2 tais que a capacidade destes arcos
é dada por u(y, w) – f(y, w) + f(w, y). A construção da rede prossegue até que o vértice t seja incluído na camada
L ou até que não existam mais arcos utilizáveis para serem incluídos em H. Caso t não tenha sido incluído não
existe uma rede H a ser considerada, situação correspondente a um fluxo máximo circulando na rede R. Caso t
seja incluído, existe caminho de aumento de fluxo entre s e t e f pode ser aumentado. Nesse caso todos os vértices
da camada L diferentes de t são removidos de H. Examinam-se as camadas k de H, k = L –1, ..., 1, removendo-se
sucessivamente os vértices rotulados que não possuem arcos para a camada k + 1. A Figura 6.16(2) mostra a rede
em camadas induzida da rede mostrada na Figura 6.16(1), na qual circula um fluxo viável.
382 Grafos

(1) Rede com um fluxo viável (2) Rede em camadas

Figura 6.16 Rede em camadas

Os números entre chaves na rede em camadas indicam a capacidade do arco. Na camada 0 só existe o vértice s.
Na camada 1 estão os vértices alcançáveis a partir de s por um arco utilizável: x1 e x2. Embora no arco (s, x1) esteja
passando um fluxo de valor igual a capacidade do arco, no arco (x1, s) está retornando para s um fluxo de valor 2,
portanto u(s, x1) – f(s, x1) + f(x1, s) = 2. Assim, é inserido na rede em camadas um arco (s, x1) com capacidade 2. No
arco (s,x2) ainda é possível passar 2 unidades de fluxo, portanto, um arco (s, x2) com capacidade 2 é inserido na rede
em camadas. A camada 2 contém os vértices alcançáveis a partir de x1 e x2 por um arco utilizável. Os arcos (x1, x4),
(x2, x3) e (x2, x4) são inseridos na rede em camadas com as capacidades mostradas na Figura 6.16(2). O arco (x1, x3)
não é inserido na rede em camadas uma vez que u(x1, x3) = f(x1, x3). Finalmente, o vértice t é inserido na camada 3.

A Dinitz
Ler G = (N,M) // F é um fluxo viável com valor f
Construir a rede em camada H de R em relação a F
Repita
Enquanto existir caminho entre s e t em H Faça
P ← caminho_aumento(H, s, t)
f ← aumentar_fluxo(P)
Sat ← arestas_saturadas (P)
H ← limpeza (H, Sat)
Fim_enquanto
Construir rede em camada H com base no grafo residual de R considerando fluxo F
Até que não seja possível construir rede em camada H entre s e t

O algoritmo de Dinitz é composto por fases, cada uma delas consistindo na operação de uma rede em camadas
com respeito a um fluxo viável. Cada fase corresponde a uma iteração do laço mais externo. Em cada fase, são en-
contrados todos os caminhos de aumento de fluxo na rede em camadas H e o fluxo é aumentado nestes caminhos.
Uma vez construída a rede em camadas H, o algoritmo entra no laço mais interno, onde um caminho de aumento
de fluxo é encontrado a partir de t. O caminho entre s e t é construído iterativamente tomando um arco incidente
em t. Suponha que na outra extremidade do arco incidente em t está o vértice v1, então, a construção do caminho
para s continua a partir de v1, escolhendo-se um arco (v2, v1). Esse procedimento é repetido até que um arco (s, vL-1)
seja escolhido. Portanto, após L passos, o caminho P de aumento de fluxo é construído no procedimento cami-
nho_aumento( ). O fluxo f é aumentado na rede no valor da menor capacidade residual de um arco no caminho P.
Os arcos de P têm suas capacidades atualizadas. Em cada iteração do laço mais interno, pelo menos uma aresta é
saturada. As arestas saturadas de P são armazenadas no conjunto Sat, que é passado como dado de entrada para o
procedimento limpeza( ), o qual remove todas as arestas saturadas, vértices com grau de entrada ou de saída igual
a zero (exceto s e t) e outras arestas em que um dos vértices terminais tenha sido removido de H. O funcionamento
do algoritmo de Dinitz é ilustrado para a rede da Figura 6.54(1) nas Figuras 6.54(2) e 6.54(3).
CAPÍTULO 6  Fluxo em redes 383

O fluxo circulando na rede da Figura 6.17(1) tem valor 0. A primeira rede em camadas é construída conforme
ilustrado na Figura 6.17(2). O caminho de aumento de fluxo P = s–x1–x3–t é escolhido pelo algoritmo (Figura
6.17(3)). Neste caminho, o arco de menor capacidade é (x1, x3) que tem capacidade 2. Portanto, o fluxo em P pode
ser aumentado em 2 unidades. A Figura 6.17(4) ilustra o aumento de fluxo na rede original, onde as setas mostram
o novo fluxo nas arestas do caminho P. No procedimento de limpeza o arco saturado (x1, x3) é removido e a rede
em camadas atualizada é ilustrada na Figura 6.17(5). Observe que os arcos (s, x1) e (x3, t) tiveram suas capacidades
atualizadas. Um novo caminho de aumento de fluxo P = s–x1–x4–t é encontrado nesta rede, o qual permite um
aumento de fluxo de 2 unidades dado pela capacidade do arco (x1, x4). O aumento de fluxo é mostrado na Figura
6.17(6). O arco (x1, x4) é removido de H e, como consequência, o vértice x1 também é retirado, uma vez que o mes-
mo não possui arcos de saída. A rede atualizada e um novo caminho de aumento de fluxo são mostrados na Figura
6.17(7). No caminho P = s–x2–x4–t todos os arcos têm capacidade 3, fazendo com que o fluxo possa ser aumentado
em 3 unidades, como ilustrado na Figura 6.17(8).

(1) Rede R com um fluxo viável (2) 1a rede em camadas

(3) P = s–x1–x3–t (4) 1o aumento de fluxo em R

(5) P = s–x1–x4–t (6) 2o aumento de fluxo em R

(7) P = s–x2–x4–t (8) 3o aumento de fluxo em R

Figura 6.17 Primeira iteração do laço mais externo do algoritmo de Dinitz


384 Grafos

A rede atualizada após a última operação de aumento de fluxo não possui caminho entre s e t, então o laço mais
interno termina e o algoritmo constroi uma nova rede em camadas H com base no fluxo circulante, que é mostrada
na Figura 6.18(1). Esta rede contém apenas 1 caminho de aumento de fluxo entre s e t, por onde podem ser escoa-
das ainda 2 unidades de fluxo conforme a capacidade do arco (x1, x2). Após o aumento de fluxo ilustrado na Figura
6.18(2) a rede H é desconectada e o laço mais interno termina. O algoritmo inicia a construção de uma nova rede
em camadas. O algoritmo inclui o vértice s na camada 0 e o vértice x1 na camada 1, o único com um arco utilizável
a partir de s. Entretanto, todos os arcos a partir de x1 estão saturados e uma rede em camadas entre s e t não pode
ser construída. Portanto, o algoritmo termina mostrando que o fluxo máximo nesta rede tem valor 9.

(1) P = s–x1–x2–x3–t (2) 4o aumento de fluxo em R

Figura 6.18 Segunda iteração do laço mais externo do algoritmo de Dinitz

Considerando Hi e Hi+1 duas redes em camadas construídas pelo algoritmo na i-ésima e na i+1-ésima itera-
ções com Li e Li+1 camadas, respectivamente, então, pela construção da rede tem-se que Li < Li+1. O maior núme-
ro de camadas que a rede pode conter é n–1, quando todos os vértices da rede original estão no caminho entre
s e t. Portanto, no máximo n–1 iterações do laço mais externo são executadas pelo algoritmo. A construção de
uma rede em camadas em cada iteração do laço mais externo pode ser realizada em O(m) por um algoritmo de
busca em largura. O laço mais interno opera alterando uma rede H com L camadas, sendo terminado quando
não existir um caminho entre s e t em H. Um caminho de aumento de fluxo P é construído em L passos, poden-
do ter no máximo n–1 arcos. O aumento do fluxo e a identificação do conjunto de arestas saturadas podem ser
feitos em conjunto necessitando de L passos. Em cada iteração do laço mais interno pelo menos 1 arco é remo-
vido da rede H. A remoção dos arcos saturados pode acarretar a remoção de vértices e outros arcos incidentes
nos vértices removidos. Desse modo, o conjunto de operações referentes à limpeza da rede H desde a primeira
iteração do laço mais interno até a desconexão de H tem complexidade O(m+n), sendo O(m). Portanto, a com-
plexidade total do laço mais interno é O(mn). Como são feitas O(n) iterações do laço mais externo, o algoritmo
de Dinitz tem complexidade O(mn2).

Algoritmo MPM

Desde a criação do algoritmo de Dinitz diversas propostas foram apresentadas na literatura para melhorar sua
complexidade. Uma destas propostas é devida a Malhotra et al. (1978), que apresentam um algoritmo em O(n3)
para o problema do fluxo máximo, chamado MPM. A ideia do algoritmo MPM é esgotar a capacidade dos nós da
rede R, em vez da capacidade de suas arestas. Para isto ele trabalha com a ideia de potencial do vértice. Conside-
rando uma rede em camadas H construída a partir da rede R onde circula um fluxo viável, o potencial de entrada
de um vértice w de H é dado pela soma das capacidades dos arcos que chegam em w. Analogamente, o potencial de
saída de um vértice w de H é dado pela soma das capacidades dos arcos que saem de w. O potencial de w é dado
pelo mínimo entre o seu potencial de entrada e de saída. O vértice v de menor potencial, g, em H, é encontrado.
O algoritmo, então, empurra g unidades de fluxo de v para t e, depois, puxa g unidades de fluxo de s até v. Para
CAPÍTULO 6  Fluxo em redes 385

empurrar g unidades de fluxo entre v e t, os arcos que saem de v são ordenados. Suponha que j arcos saem de v,
a1,..., aj, com capacidades u1, ...uj. Se g ≥ u1, o algoritmo faz passar u1 unidades de fluxo em a1. Sobram s1 = u1 – g
unidades de fluxo. Se s1 ≥ u2, o algoritmo faz passar u2 unidades de fluxo em a2, restando s2 = u2 – s1 unidades
de fluxo. Esse procedimento se repete até que aj seja saturado ou que si ≤ 0 para algum i, 1 ≤ i ≤ j (neste caso, se
i = j, então sj < 0). Se aj foi saturado, então o potencial de v é igual ao seu potencial de saída, caso onde
O procedimento é repetido para os vértices terminais dos arcos ai, onde um fluxo foi empurrado sucessivamente
até chegar a t. De modo análogo, para puxar g unidades de fluxo de s até v, os arcos que chegam a v são ordenados
e saturados nesta ordem, até que as g unidades de fluxo se esgotem. Do mesmo modo, se todos os k arcos que che-
gam a v forem saturados, o potencial de v é igual ao seu potencial de saída. O procedimento é repetido
puxando-se fluxo dos vértices terminais por onde o fluxo é puxado até chegar a s.

A MPM
Ler R = (V, E, F, U) // F é um fluxo viável com valor f
Construir a rede em camada H de R em relação a F
Repita
Enquanto existir caminho s e t em H Faça
Encontrar v o vértice de mínimo potencial g
Empurrar g unidades de fluxo de v para t
Puxar g unidades de fluxo de s até v
Atualizar a rede H e o fluxo F
Fim_enquanto
Construir rede em camada H com base no grafo residual de R considerando fluxo F
Até que não seja possível construir rede em camada H entre s e t

A execução do algoritmo MPM é ilustrada na rede R, exibida na Figura 6.19(1), onde já circula um fluxo viável.
A primeira rede em camadas produzida pelo algoritmo e os potenciais de cada vértice são mostrados na Figura
6.19(2). O menor potencial de um vértice na rede é 4 e é escolhido o vértice x1 como o vértice de menor potencial.
Portanto, o algoritmo vai empurrar 4 unidades de fluxo de x1 até t e depois puxar a mesma quantidade de fluxo de
s a x1. A Figura 6.19(3) mostra que 1 unidade de fluxo é empurrada através da aresta (x1, x3) e 3 unidades de fluxo
são empurradas através da aresta (x1, x3), saturando as arestas de saída de x1. O fluxo que chega aos vértices x3 e x4
continua sendo escoado pela rede até chegar ao vértice t, como ilustrado na Figura 6.19(4). Depois, o algoritmo
puxa 4 unidades de fluxo a partir do vértice x1 até s, como mostra a Figura 6.19(5). O novo fluxo na rede R é mos-
trado na Figura 6.19(6). A rede H é atualizada e o vértice x3 é escolhido, como mostrado na Figura 6.19(7).
O algoritmo empurra 3 unidades de fluxo até t e puxa a mesma quantidade de s. A rede é atualizada como
mostra a Figura 6.19(8) e 2 unidades de fluxo são passadas através do vértice x2 de menor potencial. A rede H
torna-se desconexa encerrando a primeira iteração do laço mais externo do algoritmo MPM. O fluxo na rede
R após a primeira iteração é mostrado na Figura 6.20(1). A rede em camadas construída no final da primeira
iteração e o cálculo dos potenciais são mostrados na Figura 6.20(2). Existe um único caminho de aumento de
fluxo nesta rede. O menor potencial é 1 e é escolhido o vértice x1. Após esta atualização de fluxo a rede é desco-
nectada. Uma nova rede em camadas não pode ser construída pelo algoritmo que termina com o fluxo máximo
exibido na Figura 6.20(3).
386 Grafos

(1) Rede R (2) Rede em camadas H

(3) Empurra 4 unidades de fluxo a partir de x1 (4) Empurra 1 unidade de fluxo a partir de x3 e 3 a partir de x4

(5) Puxa 4 unidades de fluxo a partir de x1 (6) Rede R com fluxo atualizado de 4 unidades

(7) 1a atualização da rede H (8) 2a atualização da rede H

Figura 6.19 Primeira iteração do laço mais externo do algoritmo MPM


CAPÍTULO 6  Fluxo em redes 387

(1) Fluxo na rede R no início da 2a iteração (2) Rede em camadas H

(3) Fluxo máximo em R

Figura 6.20 Segunda iteração do laço mais externo do algoritmo MPM

Em cada fase (1 iteração do laço mais externo) o número total de arcos saturados nas operações puxa e empurra
é, no máximo, m. Em cada iteração do laço mais interno, o número de arcos parcialmente saturados é, no máximo,
2 para cada vértice atingido pelas operações puxa e empurra. Para cada vértice de potencial mínimo são atingidos,
no máximo, n outros vértices. No máximo, n iterações do laço mais interno são realizadas, uma vez que em cada
iteração, pelo menos, 1 vértice é removido de H. A operação de encontrar um vértice de mínimo potencial é rea-
lizada em conjunto com a saturação dos arcos. Cada vez que um arco é atingido nas operações puxa e empurra os
potenciais de seus vértices terminais são atualizados. Assim, o custo de manter os potenciais dos vértices atualiza-
dos é O(n). Desse modo, uma fase do algoritmo MPM possui complexidade O(m+n2). Como visto anteriormente,
pela construção da rede em camadas, o número de iterações do laço mais externo é O(n). Portanto a complexidade
do algoritmo MPM é O(n3).

Complexidade Dinitz – MPM


O algoritmo de Dinitz é O(mn2) e o algoritmo MPM é O(n3).

O(Mn2) O(n3)

6.3 O Problema da Circulação Viável em Redes


O Problema da Circulação
p
O problema da circulação em uma rede R é o de determinar, para todo e qualquer
subconjunto da rede R, um fluxo que atenda as condições de viabilidade de
fluxo definidas anteriormente.
388 Grafos

Nos algoritmos apresentados, para encontrar o fluxo máximo em uma rede R sempre se parte de um fluxo viável.
Se todas as capacidades inferiores dos arcos forem iguais a 0, o problema de encontrar um fluxo viável é trivial,
sendo este fluxo 0. Entretanto, se existem limites inferiores u(i, j) > 0 nos arcos (i, j), o fluxo 0 não é viável. Uma
rede desta forma pode, inclusive, não ter circulação viável. Esta situação é ilustrada na rede da Figura 6.21, onde o
maior fluxo que pode chegar ao nó x1 é 1 e o menor fluxo que deve passar pelo arco (x1, x2) é 2.
O problema da circulação viável pode ser re-
solvido através dos algoritmos apresentados para
o problema do fluxo máximo. Para isto é necessá-
rio fazer uma transformação na rede R. O método
apresentado aqui foi sugerido por Ford e Fulkerson
(1962). Considere uma rede R = (V, E, F, U) com
fonte s e sumidouro t e capacidades não negativas
Figura 6.21 Rede sem circulação viável
0 ≤ u(i, j) ≤ u(i, j) para todo arco (i, j)  E. É cons-
truída uma rede H = (VH, EH, F⬘, U⬘) a partir de R tal que VH é constituído por todo os vértices de V e dois vértices
especiais s⬘ e t⬘, EH é constituído por todos os arcos de E, arcos adicionais (s⬘, v), (v, t⬘) para todo v  V e arco de
retorno (t, s) com capacidades:

u⬘(t, s) = ∞,
u⬘(i, j) = u(i, j) – u(i, j) para todo arco (i, j)  E,
para todo vértice i  V e

para todo vértice i  V.

Na nova rede H tem-se que u⬘(i, j) ≥ 0 para todo arco (i, j)  EH. A construção da rede H é ilustrada na Figura
6.22. A rede H é obtida de R pela inclusão dos vértices s⬘ e t⬘, dos arcos de s⬘ para todos os vértices de R e dos arcos
de todos os vértices de R para t⬘. O limite inferior de todos os arcos é 0 e as capacidades são calculadas como des-
crito anteriormente. Por exemplo, a soma dos limites inferiores dos arcos que chegam ao vértice x2 é 2, portanto o
arco de s⬘ para x2 tem capacidade 2. A soma dos limites inferiores dos arcos que saem do vértice x2 é 1, portanto a
capacidade do arco (x2, t⬘) é 1.

Rede R Rede H
Figura 6.22 Transformação da rede R em H

Das condições de formação de H tem-se que , onde B é o fluxo máximo

em H. Como todos os arcos de H têm limite inferior 0, os algoritmos de fluxo máximo podem ser aplicados a H
partindo do fluxo 0. O teorema 6.4 mostra a condição de existência de um fluxo viável na rede R.
CAPÍTULO 6  Fluxo em redes 389

Teorema 6.4
Existe uma circulação viável em R se e somente se o fluxo máximo em H é

Prova. Primeiro será mostrado que se existe circulação viável em R então o fluxo máximo em H é
Considerando F um fluxo viável em R, então f(i, j) satisfaz os limites nos arcos de R e f(i, j) = f ⬘(i, j) + u⬘(i, j). Uma
vez que 0 ≤ f ⬘(i, j) ≤ u⬘(i, j) e u⬘(i, j) = u(i, j) – u(i, j), então f ⬘(i, j) também satisfaz os limites nos arcos de H. Como F
é conservativo em R, F⬘ também é em H. Portanto, F⬘ é um fluxo viável em H. Pela construção de H a capacidade de
cada aresta (s⬘, i) é dada pelo somatório dos limites inferiores dos arcos que saem de i. Como o fluxo F é viável em R,
então todas as restrições relativas aos limites inferiores dos arcos que saem de cada vértice i são satisfeitas, portanto,
todo arco (s⬘, i) está saturado em F⬘. Do mesmo modo, todas as restrições relativas aos limites inferiores dos arcos que
chegam em cada vértice i são satisfeitas, portanto, todo arco (i, t⬘) está saturado em F⬘. Assim um corte mínimo na
rede pode ser dado por X = {s⬘}, X = VH\{s⬘} (X = {t⬘}, X = VH\{t⬘}), com capacidade

De forma inversa é possível mostrar que se o fluxo máximo F⬘ em H tem valor , então

existe circulação viável em R. Suponha um fluxo F em R induzido por F⬘, então f(i, j) = f⬘(i, j) + u⬘(i, j).
Como 0 ≤ f ⬘(i, j) ≤ u⬘(i, j) e u⬘(i, j) = u(i, j) – u(i, j), então f (i, j) também satisfaz os limites nos arcos de R.
Para que F seja um fluxo viável em R deve-se mostrar que a condição de conservação de fluxo é satisfeita em
todos os vértices i    V. Uma vez que F⬘ é um fluxo em H, então
Como o fluxo tem valor , então todos os arcos incidentes em s⬘ e em t⬘ estão saturados e

Logo, para todo vértice i  V. ■

A Circulação
Ler R = (V, E, F, U)
// Construção da rede H
VH ← V  {s, t }; EH ← E  {(s, i ) | i  V } U {(i, t) | i  V}  {(t, s)}
u (t, s) = ∞
Para (i, j)  E Fazer u(i, j) = u(i, j) – u(i, j)
Para i  V Fazer

Fim_para
Fluxo-máximo (H = (VH, EH, F , U))

Se para todo i  V então

Para (i, j)  E Fazer f(i, j) = f (i, j) + u(i, j)


Senão
Escreva (Não há circulação viável na rede R)
Fim_se
390 Grafos

O algoritmo circulação é utilizado para encontrar um fluxo viável em uma rede R = (V, E, F, U) com capacidades
0 ≤ u(i, j) ≤ u(i, j) para todo arco (i, j)  E. Após construir a rede H, é chamado o procedimento fluxo-máximo( )
para calcular o fluxo máximo na nova rede. A verificação da saturação dos arcos (s⬘, i) é feita para todo i  V e é
calculado o valor do fluxo na rede R. A Figura 6.23(1) mostra o fluxo máximo na rede H apresentada na Figura
6.22(2). O fluxo viável na rede R obtido do fluxo máximo em H é mostrado na Figura 6.23(2). É possível observar
que o fluxo viável obtido pelo algoritmo circulação não é máximo para a rede R.

Fluxo máximo em H Fluxo viável em R

Figura 6.23 Circulação viável na rede R

Considerando que a rede R possui n vértices e m arcos, a rede H construída pelo algoritmo circulação possui n+2
vértices e m + 2n + 1 arcos. Portanto, o algoritmo faz O(m) operações para construir a rede H. Se o algoritmo MPM for
utilizado para obter o fluxo máximo em H, o procedimento fluxo-máximo( ) é executado em O(n3). A atualização da
rede R para a obtenção do fluxo viável é realizada em O(m). Portanto, o algoritmo circulação tem complexidade O(n3).

6.4 Exemplos de Aplicações


1 – O Problema de Transporte

O problema de transporte é um tradicional problema de programação matemática que consiste em determinar as


quantidades de certo produto que deverão ser transportadas de m origens para n destinos. O problema de trans-
porte é sujeito a restrições de oferta máxima dos produtos em cada origem e de demanda máxima nos destinos.
O problema de transporte pode ser modelado como um problema de fluxo em um grafo bipartido. Na rede
são constituídos dois conjuntos de vértices, os vértices de oferta oi onde o fluxo é originado, e os vértices de de-
manda di, onde o fluxo é consumido. No problema clássico, os arcos não possuem limite de capacidade para o
fluxo. A Figura 6.24(1) exibe o modelo em rede para o problema de transporte. O problema de transporte pode ser
transformado em um problema de fluxo conservativo pela adição de dois vértices artificiais, s reunindo o fluxo de
oferta e t reunindo o fluxo de demanda, bem como arcos capacitados que liguem os vértices s e t aos seus vértices
associados e obriguem ou limitem o fluxo dos pontos de demanda e oferta, conforme as restrições do problema. A
Figura 6.24(2) exemplifica a transformação.
Observe que os arcos s-oi possuem um valor de fluxo limitado inferior e superiormente. Na Figura 6.24(2) os
rótulos são representados por [xi, yi]. Se a oferta dos vértices do problema de transporte deve ser completamente
escoada, então os arcos s-oi deverão possuir xi = yi = valor da oferta. Raciocínio semelhante se aplica aos vértices
de demanda, cujos limites de fluxo são representados pelo rótulo [li, ri]. O modelo permite considerar situações
CAPÍTULO 6  Fluxo em redes 391

híbridas em que alguns vértices possuem a obrigatoriedade de escoamento / atendimento de demanda, enquanto
outros não. Na Figura 6.24(2) os limites de fluxo são exibidos parcialmente para não dificultar a leitura do desenho.

(1) Rede para o problema de transporte (2) Rede capacitada e conservativa

Figura 6.24 Modelo em redes para o problema de transporte

De uma forma geral, o problema de transporte associa custos ao fluxo que percorre os arcos de conexão entre
os vértices de oferta e de demanda. Os arcos artificiais, via de regra, não possuem custos associados. Uma situação
particular poderá determinar custos nos arcos artificiais, quando se deseje levar em conta custos de produção da
oferta no vértice associado. Nesse último caso, todavia, o limite de fluxo deverá ser restrito somente em seu valor
máximo, o que permitiria regular a participação de cada vértice no processo de atendimento da rede. No presente
texto não será abordado o problema do fluxo máximo a custo mínimo. Note que o problema pode ser solucionado
pelo algoritmo SIMPLEX.

2 – O Problema de Emparelhamento

O problema de emparelhamento em grafos bipartidos pode ser formulado e solucionado através de fluxo em redes.
Seja um grafo G simples (ponderado ou não), bipartido com dois conjuntos de vértices P e Q possuindo, respecti-
vamente, p e q vértices (P Q = N), como exibido na Figura 6.25(1).
O grafo bipartido é incorporado a uma rede atravessada por um fluxo de valor igual ao mínimo entre p e q,
como mostra a Figura 6.25(2). A rede possuirá um vértice fonte ligado a um dos conjuntos de vértices do grafo. O
vértice sumidouro será ligado ao segundo conjunto de vértices do grafo bipartidos. Todos os arcos da rede, com
exceção do vértice de retorno, possuem capacidade máxima de fluxo igual a uma unidade. O arco de retorno t-s
obriga-se um fluxo igual ao min{p, q}.

(1) Grafo bipartido obtido de G (2) Rede de fluxo no grafo bipartido

Figura 6.25 Formulação em redes para o problema do 1_emparelhamento máximo


392 Grafos

A Figura 6.26 exemplifica os passos da solução do problema de emparelhamento no grafo da Figura 6.26(1)
através de fluxo em rede. A Figura 6.26(2) mostra a rede, a Figura 6.26(4) o fluxo e a Figura 6.26(3) como o fluxo se
associa ao 1_emparelhamento mínimo. Para o caso de um grafo ponderado, o problema de fluxo a ser solucionado
é o fluxo máximo a custo mínimo.

(1) Grafo G (2) Formação da rede

(3) Emparelhamento máximo (4) Fluxo de custo mínimo

Figura 6.26 Emparelhamento através de fluxo em rede – exemplo

3 – O Problema de Aproveitamento de Carga em Aviões de Passageiros

Genericamente, uma rota é definida como a projeção, na superfície da Terra, do trajeto previsto ou percorrido
por uma aeronave. Contudo, as rotas aéreas também significam os caminhos aéreos que podem ser percorridos por
determinada empresa. Uma rota comercial corresponde a uma autorização de voo para a prestação de serviço e
segundo uma trajetória previamente definida. Assim, os aviões da empresa estarão, via de regra, autorizados a
desembarcar e embarcar produtos e passageiros, bem como proceder a reabastecimento, manutenção e troca de
tripulação nos pontos das rotas concedidas, e conforme a capacidade disponível em terra. Os horários de voo são
acordados com a administração dos aeroportos ou no contrato de concessão. É comum que aviões de passageiros
transportem cargas aproveitando capacidade ociosa. É comum que existam fluxos de cargas áreas entre cidades
cujo peso e volume são previamente conhecidos. Esse é o caso da distribuição de jornais. Na programação de
transporte de cargas de demanda estável entre cidades, é possível a definição do problema de aproveitamento de
capacidade de carga que se segue:
CAPÍTULO 6  Fluxo em redes 393

Aproveitamento de Capacidade Carga


p
Como fazer a melhor programação de distribuição de cargas aéreas em voos
regulares de passageiros para o caso de demandas estáveis e bem conhecidas.

Para exemplificar a presente aplicação será examinado um caso fictício de transporte de jornais. No exemplo,
o jornal é editado no Rio de Janeiro (GIG) e distribuído para algumas cidades do Brasil. A Figura 6.27 exibe, para
o exemplo, seis voos iniciando no Rio de Janeiro (GIG) e capazes de visitar as cidades que demandam pelo jornal
(visita em horário apropriado à distribuição desse jornal).

Figura 6.27 Voos noturnos apropriados ao transporte de jornais

Nem todas as cidades visitadas pelos voos demandam pelo jornal, como o caso de Salvador (SSA) e Porto
Alegre (POA). Cada voo é realizado por um avião com diferente capacidade de carga disponível, capacidade má-
xima nominada pela variável κi, i = 1,...,6. Cada uma das cidades demanda um número diferente de jornais, que
é expresso em um diferente peso de carga a ser transportada dj, para a cidade j, j = 1,...,6 (GRU, REC, CWB, BSB,
FOR e NAT).
Com base nos dados anteriormente descritos, é possível a constituição da rede da Figura 6.27. O vértice GIG
é o vértice fonte. O vértice sumidouro é artificial e a ele se ligam todas as cidades que demandam por jornal. A
capacidade dos arcos que ligam as cidades de demanda ao vértice artificial é igual a demanda da cidade. A capa-
cidade dos arcos de cada rota de voo é igual a capacidade máxima de carga disponível no avião que realiza o voo.
Considerando que a tarifa cobrada pelo quilo de carga transportada não depende do avião que faz esse transporte,
e que o lucro unitário da empresa transportadora é o mesmo qualquer que seja a cidade de destino da carga, o fluxo
máximo na rede da Figura 6.28 representa uma solução para o transporte da demanda ou o máximo de demanda
que será possível à empresa transportar. Observa-se que a oferta de transporte em cada voo relativa a uma cidade
é concentrada em um vértice artificial com o mesmo nome da cidade.
394 Grafos

Figura 6.28 Rede solução do problema proposto

6.5 Aplicações Reais Selecionadas


Os modelos em rede encontram diversas aplicações para a solução de problemas reais. Dentre tais aplicações
encontram-se as que se seguem relacionadas.

 Projeto de redes.
 Instalações de telefone, hidráulicas, elétricas, TV a cabo, petróleo e gás.
 Análise de agrupamentos.
 Geração de limites para problemas NP-Difíceis.
 Nos protocolos de comunicação da Internet.
 Computação móvel.
 Circuitos em placas de computador.
CAPÍTULO 6  Fluxo em redes 395

Nesse sentido destacam os seguintes trabalhos:


 Mineração a céu aberto (Emrah & Tolga 2011).
 Intrusão em redes de comunicação (Sperotto, 2010).
 Controle de congestionamento de rodovias (Zhang et al., 2009).
 Na solução do makespan open-shop scheduling (Sedeño-Noda et al., 2009).
 Otimização de redes móveis (Martinez-Bauset et al., 2009).
 Otimização de procedimentos de evacuação de pessoas (Cepolina, 2009).
 Redes de sensores (Jafari et al., 2009).
 Determinação de tamanhos de lotes com multicomplementação (Ekşioğlu, 2009).
 Controle de tráfego (Chiou, 2009).
 Processo de manufatura (Lu et al., 2009).
 Otimização de corrente elétrica através de diodos (Eisenbrand et al., 2009).
 Solução de árvores geradoras com restrições Hop (Gouveia, 1996; Costa et al., 2008).
 Projeto de redes microvasculares (Aragón et al., 2008).
 Projeto de circuitos VLSI (Terlakya et al., 2008).
 Comunicação em redes sem fio (Huang, 2008).
 Otimização de sistemas de distribuição de água (Hsu et al., 2008).
 Análise de dados (Liu & Sprague, 2008).
 Mineração de dados (Caracas et al., 2008).
 Transporte de gás (Kabirian & Hemmati, 2007).
 Análise de redes ecológicas (Fat et al., 2007).
 Controle e alocação dinâmica de recursos em redes (Feng et al., 2007).
 Coordenação de voos em empresas de aliança aérea (Yan & Chen, 2007).
 Otimização de sistemas reconfiguráveis (Mtibaa et al., 2007).
 Controle de processo na indústria química (Jillson & Ydstie, 2007).
 Aplicações à agricultura (Detlefsen & Jensen, 2007).
 Solução do problema da mochila quadrática (Pisinger, 2007).
 Planejamento do emprego de mão de obra na indústria (Di Gaspero et al., 2007).
 Aplicações à solução do problema de localização de índices (Kakoulis & Tollis, 2006).
 Planejamento de pedido de material (Yenisey, 2006).
 Otimização da capacidade de internamento hospitalar (Akcali et al., 2006).
 Monitoramento de redes de comunicações (Robinson et al., 2006).
 Solução do carteiro rural (Benavent, 2005).
 Visão digital (Boykov & Kolmogorov 2004).
 Reconstrução de imagens de câmeras (Roy & Cox, 2003).
 Integração de produção e distribuição em manufatura (Dhaenens-Flipo & Finke, 2001).
 Eliminação de times no baseball (Wayne, 2001).
 Modelagem da designação de produtos na montagem de sistemas eletrônicos (Peters & McGinnis, 2000).
 Reconstrução de imagens médicas (Boykov & Jolly, 2000).
 Jogos on-line (Phillips & Westbrook, 1998).
 Particionamento de circuitos (Liu & Wong, 1998).
 Planejamento de empresas multinacionais (McBride & O’Leary, 1997).
 Roteamento em manufatura flexível (Sodhi, et al., 1994).
 Localização de satélites (Spälti & Liebling, 1991).
 Otimização de slots em sistemas TDMA (Spälti & Liebling, 1991).
 Otimização de reservatórios de água (Burkard, 1985).
 Operações de manutenção em metalúrgicas (Matveichev, 1969).
396 Grafos

6.6 Exercícios Resolvidos do Capítulo 6


Exercício no 1
Uma operação de produto cartesiano entre um grafo G qualquer (não obrigatoriamente um grafo ciclo) e
K2. Demonstre que se o grafo G possui um caminho hamiltoniano e o grafo G … K2 possui um ciclo hamil-
toniano.
Exercício no 2
Dados os grafos da figura do exercício, encontre um grafo sanduíche de G1 e G2 em relação à propriedade
de ser hamiltoniano – o grafo é sanduíche e hamiltoniano.

Grafos do exercício no 2

Exercício no 3
Uma pequena oficina possui quatro diferentes tornos mecânicos e deve processar cinco peças com esses
tornos. Cada torno deverá realizar somente duas operações de usinagem de modo a otimizar o tempo de
conclusão dos trabalhos. Todavia as peças demandam 1,2 ou 3 operações. A tabela do exercício mostra
quais tornos podem operar sobre as peças. Abaixo de cada peça é anotada a demanda de operações asso-
ciada à peça. Como realizar o planejamento da distribuição dos tornos e das tarefas de forma a atender a
produção da oficina

Peça 1 Peça 2 Peça 3 Peça 4 Peça 5


3 operações 1 operação 1 operação 1 operação 2 operações
Torno 1 X X X X
Torno 2 X X X X
Torno 3 X X X X
Torno 4 X X X X

Exercício no 4
Uma operadora de telefonia celular deseja otimizar o atendimento de seus clientes sobre a rede de re-
transmissores de sinal da cidade. Dado vetor de demanda D = [d1, d2, ..., dn] conhecido, a operadora deseja
distribuir o atendimento de forma que uma estação de retransmissão simultaneamente não atenda mais de
k diferentes chamadas. A demanda somente poderá ser atendida por uma estação de repetição caso esteja
localizada dentro do alcance de operação dessa estação. Formule o problema como um problema de fluxo
em redes. Exiba a rede associada ao grafo da Figura, com k = 3 e n = 9, em que os vértices amarelos repre-
CAPÍTULO 6  Fluxo em redes 397

sentam os pontos de demanda, os vértices em vermelho as estações de retransmissão e círculos representam


o alcance das estações de retransmissão.

Grafo do exercício no 4

Exercício no 5
Uma rede é limitada nos arcos, todavia possui vértices de conexão que também possuem limite para o fluxo
que os atravessa. Desenvolva um modelo que transforme esse problema em um problema de fluxo em redes
tradicional. Exemplifique o processo no grafo do exercício. Determine o fluxo máximo dessa rede e compa-
re esse fluxo com o fluxo máximo sem a limitação de capacidade nos vértices:

Grafo do exercício no 5
398 Grafos

Exercício no 6
Um robô espacial foi lançado ao cinturão de asteroides em busca de acrônio. Um asteroide possui esse
minério em quantidade suficiente para permitir sua exploração econômica. Como o asteroide é um corpo
relativamente pequeno, a exploração do minério não poderá correr o risco de parti-lo em pedaços. Se isso
acontecer, o robô espacial poderá ser danificado com a movimentação das partes do asteroide. Assim, o
robô deve explorar a jazida garantindo que certas regiões do asteroide não serão tocadas. E adicionalmente
deve se garantir que essas regiões-chave para a estabilidade desse objeto espacial formem um corpo único
com o material que deverá remanescer da mineração do asteroide. Modele o problema de encontrar uma
estrutura de estabilização de um asteroide através de fluxos em rede. Exemplifique como o modelo funciona
na figura do exercício no 6 e exiba a solução do problema para o caso proposto.

(1) O asteroide (2) Planta da localização geológica dos blocos estruturais no asteroide
Figura do exercício no 6: Asteroide e blocos estruturais

Exercício no 7
O setor logístico da Tuiuiú Real, uma empresa de transporte aéreo, deve programar a alocação de seus
aviões aos voos que estão previstos nas próximas 24 horas. A frota da empresa é constituída por 10 aviões
de um único tipo. Em virtude de problemas inesperados, a programação normal dessa distribuição foi
completamente desarticulada. O objetivo do setor logístico é examinar – com a necessária rapidez – alter-
nativas para uma distribuição racional de seus recursos. A empresa pode realocar sua demanda em algumas
rotas, parcial ou totalmente, todavia deve escolher, por força da legislação, apenas uma empresa parceira.
As cidades passíveis de realocação de demanda e as parceiras associadas às cidades estão descritas na tabela
do exercício.

GRU GIG REC BSB POA


Parceira 1 x x – – x
Parceira 2 x – x x –

A grade de voos da TuR é apresentada na figura do exercício. O objetivo do setor logístico é examinar os
seguintes cenários:
CAPÍTULO 6  Fluxo em redes 399

1. Qual é o número mínimo necessário de aeronaves para garantir que nenhum dos 15 voos da TuR seja
cancelado nas próximas 24 horas?
2. Em que cidades as aeronaves da questão número 1 deverão estar disponíveis?
3. Se apenas 5 dos 10 aviões da frota estiverem disponíveis, quais seriam os voos ou trechos de voos que
devem ter sua demanda repassada à empresa parceira para evitar que os passageiros sejam indenizados
pelos prejuízos do cancelamento dos voos?

Tabela de distribuição dos voos da TuR para as próximas 24 horas

Exercício no 8
A Bralásia é um país que leva muito a sério as heranças de família. As propriedades somente são deixadas
para o governo quando não existe nenhum parente vivo na linha direta do falecido. As regras de herança
contemplam tanto os descendentes quanto os ascendentes e não existe testamento no país. A lei obriga a
mesma regra de herança para todos.
1. 25% dos bens do falecido constituem herança dos pais.
2. 50% dos bens do falecido são herdados pela esposa.
3. 25% dos bens do falecido são herdados pelos filhos.
4. Quando não existem descendentes vivos de um falecido ou herdeiro, os pais herdam 50% e o cônjuge
50%.
400 Grafos

5. Quando não existem ascendentes diretos vivos de um falecido ou herdeiro, os filhos herdam 50% e o
cônjuge herda 50%.
6. Quando não existe qualquer descendente ou ascendente vivo do falecido, o cônjuge herda 100%.
Quando os cônjuges são casados e vivos, a herança de cada um é dividida meio a meio com o outro
cônjuge.
7. Em caso de morte de algum herdeiro, o que cabe ao herdeiro é redistribuído por descendentes, ascen-
dentes e cônjuge, segundo as regras 1-6.
8. Para efeito de herança, a relação de parentesco é constante dos registros oficiais e os cônjuges separados
nada herdam.

Considere o grafo genealógico oficial que se segue, onde os círculos maiores marcam a formação de um ca-
sal, as setas indicam os filhos de cada casal e os vértices brancos representam os homens e os vértices azuis
as mulheres. 19 e 11 são atualmente casados, mas 19 foi casada também com 18 que já faleceu e 11 casado
com 12 que já faleceu. 19 e 18 tiveram uma filha representada pelo vértice 24. 19, filha de 9 e 10, faleceu e
deixou como herança pessoal 106 reais. Considerando que os vértices com as cruzes representam pessoas já
falecidas, e que os vértices sem ligações representam pessoas sem quaisquer herdeiros fora da árvore traça-
da (como o vértice 13, 15, 16 etc), quanto recebe de herança o indivíduo 9 com a morte de 19? Caso novos
falecimentos ocorram após a morte de 18 e na sequência 9 e X. Qual será a herança final de 11, 13 e 22?

Grafo genealógico do exercício no 8

Exercício no 9
Apresente o grafo com cinco vértices que possui o maior numero possível de arestas e não contém como
subgrafo K4.
CAPÍTULO 6  Fluxo em redes 401

6.7 Exercícios Propostos do Capítulo 6

Teoria

6.1: Determine os grafos prismas associados aos grafos da figura do exercício:

Definindo um arco v-w de uma rede R como vital se, quando removido da rede, ocasiona o maior decrésci-
mo no fluxo máximo s-t. Prove ou providencie um contraexemplo:
1. Um arco vital reduz o fluxo máximo no valor de sua capacidade.
2. Um arco vital pertence a algum corte mínimo (de menor capacidade) em R.
3. Um arco que não pertence a algum corte mínimo não pode ser vital.
4. Uma rede poderá possuir mais de um arco vital.
5. Se a capacidade de um arco vital é ampliada de uma unidade, o fluxo na rede cresce de uma unidade.
6.2: Marque com falso ou verdadeiro as assertivas abaixo.
( ) Em uma rede o fluxo f(v, w) entre dois vértices v e w quaisquer atende a seguinte restrição: Se f(v, w) > 0
então f(w, v) = 0 e se f(w, v) > 0 então f(v, w) = 0.
( ) Se existe um fluxo máximo em uma rede, para o fluxo máximo ou f(w, v) = 0 ou f(v, w) = 0.
( ) Se todos os arcos da rede possuem diferentes capacidades, o fluxo máximo na rede é único.
( ) Se todos os arcos da rede possuem diferentes capacidades, então existe um único corte de capacidade
mínima.
( ) Em uma rede, se os arcos forem substituídos por arestas de igual capacidade aos arcos associados, o fluxo
máximo não se altera.
( ) Se todos os arcos de uma rede possuem capacidade par, então o fluxo é também um valor par.
( ) Todo arco que tem sua capacidade esgotada pelo fluxo máximo pertence a pelo menos um corte de ca-
pacidade mínima.
( ) Todo corte de capacidade mínima é também minimal (possui o menor número possível de arcos).
( ) Em uma rede R com um vértice fonte s e um vértice terminal t existem arcos que não possuem limites
superiores para o fluxo. Considerando que não existe caminho entre s e t formado somente por esses
arcos, é possível considerar que o fluxo máximo que vai circular em qualquer desses arcos ilimitados é
igual ou menor que o máximo fluxo que pode circular no(s) arco(s) limitado(s) de maior capacidade da
rede.
( ) Se for somado um mesmo número B, inteiro e maior que zero, à capacidade de todos os arcos da rede, os
cortes mínimos não se alteram.
402 Grafos

( ) Se a capacidade dos arcos de uma rede for multiplicada pelo mesmo número B, inteiro e maior que zero,
os cortes mínimos não se alteram.
( ) Se uma rede R não possui caminhos de aumento de fluxo com um comprimento maior que três arcos e
possui mais de quatro arcos, se for somado um mesmo número B, inteiro e maior que zero à capacidade
de todos os arcos da rede, o fluxo na rede cresce pelo menos 2B.
6.3: Conhecido um fluxo f(s, t) de valor máximo em uma rede R, desenvolva um algoritmo O(m) para encontrar
o corte da de capacidade máxima nessa rede.
6.4: Conhecido um corte de capacidade máxima em uma rede R, desenvolva um algoritmo para encontrar o
fluxo máximo na rede R com complexidade inferior ao algoritmo de aumento de fluxo de Ford & Fulkerson.

Algoritmos

6.5: Dados uma rede R e seu fluxo máximo, f *. Um dos arcos atravessado pelo fluxo máximo da rede R sofre um
decaimento em sua capacidade de fluxo, que reduz o fluxo real no arco de uma unidade. Desenvolva um
algoritmo com complexidade O(m+n) para recalcular o fluxo máximo da rede a partir das condições do
antigo fluxo máximo e do decaimento do arco.
6.6: Modifique o algoritmo circulação para considerar arcos com capacidades negativas.

Modelos

6.7: Um grupo de embaixadores na ONU é convidado para um jantar. Objetivando promover a integração mun-
dial, os embaixadores de um mesmo país nunca devem sentar-se na mesma mesa. No jantar estarão presen-
tes r países diferentes. Cada país i deverá enviar si embaixadores. Existem q mesas disponíveis para o jantar.
Cada mesa j pode acomodar cj convidados. Formule o problema de acomodar os embaixadores nas mesas
como um problema de fluxo máximo.
6.8: Uma primitiva e cruel tradição reunia uma multidão de pessoas para perseguir e maltratar um boi. Em um
dado ano, o touro escolhido revidou os maus-tratos e cerca de 55 farristas alucinados acabaram feridos.
Os feridos foram levados a um hospital da região necessitando de atendimentos e transfusão de sangue. O
hospital possuía somente 57 bolsas de sangue. O quadro abaixo resume a demanda e a disponibilidade de
bolsas:

Tipo de sangue A B AB O
Bolsas existentes 25 5 7 20
Demanda 10 15 15 15

Observe que pacientes com sangue A podem receber transfusão de bolsa A e O, pacientes com sangue B
podem receber transfusão de bolsa B e O, pacientes com sangue AB podem receber transfusão de bolsa A,
B, AB e O, e pacientes O somente de bolsas O. Formule o problema da distribuição das bolsas como um
problema de fluxo em redes.
6.9: Determinada fábrica possui uma linha de produção que processa certo produto em k diferentes máquinas.
O produto entra em estado bruto no início da linha de produção e passa por todas as máquinas da linha
de produção, sendo lapidado. Cada máquina gasta um tempo fixo ki para realizar a sua operação sobre a
CAPÍTULO 6  Fluxo em redes 403

matéria-prima. As operações devem atender certas restrições de precedência no processamento. Para alguns
pares de máquinas (j, j+1), o processamento do produto primeiramente deverá ser realizado na máquina j,
para posteriormente ser realizado na j+1. As máquinas trabalham independentemente e de forma contínua,
desde que tenham produtos em condição de processar. Programar o escoamento de um lote de r produtos de
forma a minimizar o tempo de processamento do lote. O tempo é contado do momento em que a primeira
máquina é ligada até o instante em que a última máquina da linha de produção é desligada.
6.10: Um hotel tem uma lavanderia própria que possui um ciclo de quatro dias entre a entrega da roupa de cama
e banho usada e sua devolução, limpa e pronta para o uso. O hotel fechou um contrato com uma empresa
turística de forma a ocupar suas instalações por sete dias, segundo uma demanda de hóspedes variável. A
peculiaridade dos clientes imporá um gasto não usual de roupa de cama e banho. Considerando que a de-
manda de roupa limpa em um dia i é li; que existem ci unidades de cama e banho disponíveis no primeiro
dia da semana do pacote turístico; que a demanda por roupa limpa no dia i é de di, programe, se necessário,
o aluguel de roupa de cama e banho de modo a atender a demanda do hotel nos sete dias de duração do
pacote. Formule o problema como um problema de fluxo em redes.
6.11: Na região central de uma cidade existem três estações de metrô (assinaladas no mapa como círculos em
vermelho) que possuem, cada uma delas, a capacidade de embarcar 7 × 104 novos passageiros por hora.
Cada estação possui duas entradas (representadas pela barra vermelha) e cada entrada pode atender a todo
o fluxo de embarque, se necessário. No centro da cidade foram selecionados sete grandes torres comerciais,
que definem praticamente o fluxo de embarque de passageiros dessas três estações entre 18:00 e 19:00 horas,
quando os trabalhadores retornam a casa. O fluxo de pessoas que deixa essas torres no horário assinalado é
conhecido e consta da tabela do exercício. Existem quatro regiões de circulação no centro da cidade. Cada
rua de uma dada região possui a mesma capacidade de fluxo de pedestres – independentemente do sentido
de circulação, constando também da tabela. As ruas são fechadas ao tráfego de veículos no horário em es-
tudo, de modo que os pedestres podem se deslocar livremente por elas. Pede-se: 1. Modele o problema de
circulação dos pedestres pelas ruas do centro dessa cidade na volta do trabalho através de um modelo de
fluxo em redes. 2. Determine se é possível fazer circular os pedestres dos pontos de demanda até as estações
de metrô atendendo todo o fluxo gerado no horário de pico.

Figura do exercício 6.11: Localização das estações de metrô e torres comerciais


404 Grafos

Torre Demanda Área Capacidade


1 3 × 104 pessoas/hora Verde 104 pessoas/hora
2 3 × 104 pessoas/hora Tijolo 2 × 104 pessoas/hora
3 2 × 104 pessoas/hora Rosa 2 × 104 pessoas/hora
4 4 × 104 pessoas/hora Abacate 3 × 104 pessoas/hora
5 4 × 104 pessoas/hora
6 3 × 104 pessoas/hora
7 2 × 104 pessoas/hora

6.12: Uma concessionária deve atravessar um bairro residencial com três diferentes redes que transportarão flui-
dos perigosos. São redes de líquidos inflamáveis. A pior notícia é que quando qualquer dois desses líquidos
se misturam, por qualquer motivo, a explosão é inevitável. Para conseguir a autorização da prefeitura os
construtores devem lançar os diferentes tipos de dutos de forma que nunca sejam localizados em um mes-
mo quarteirão. O quarteirão que receber determinado tipo de tubo não pode mais receber nenhum tubo
de outro tipo. As tubulações devem ser construídas nas calçadas dos quarteirões e podem se cruzar (duas
a duas) em uma esquina, uma vez que, nesse caso, pode ser construído um poço de visita para controlar o
comportamento dos tubos nesse ponto. Excepcionalmente, será permitido reunir as três redes nos pontos
de início e término da travessia – assinalados no mapa pelos círculos amarelo e vermelho, respectivamente.
Examinando o mapa do bairro em que os pontos de início e término da travessia estão assinalados (são
esquinas), modelar a solução do problema através de um modelo de fluxo em rede e responder sobre a via-
bilidade dessa rede ser construída.

Figura do exercício 6.12: Mapa da travessia do bairro


CAPÍTULO 6  Fluxo em redes 405

Aplicações

6.13: Na rede da figura do exercício, onde os rótulos representam o fluxo máximo e mínimo em cada arco, deter-
mine três fluxos viáveis e o valor do fluxo máximo. Prove que esse valor é ótimo exibindo o corte associado
(de mesmo valor).

Figura 1 do exercício 6.13

Figura 2 do exercício 6.13

6.14: Dada uma rede R com um vértice fonte s e um vértice terminal t. Desenvolva um algoritmo polinomial que,
através de fluxo em rede, determine o maior número possível de caminhos disjuntos entre s e t.
6.15: Um novo asteroide está sendo minerado pelo robô espacial. Nesse caso, o asteroide é maior e possui uma
estrutura diferente do exercício resolvido número 4. Todavia, o mais importante é que o controle da missão
descobriu que os movimentos do asteroide são de tal ordem que a mineração pode dividi-lo em até dois
blocos desconexos sem perigo para o robô. Formule esse novo problema para ser solucionado por fluxos em
rede. Apresente a solução do caso proposto na figura do exercício. Observar que o bloco 56, desenhado ao
lado do último nível, representa o bloco inferior do asteroide. Na parte inferior da Figura 6.15 observa-se a
projeção dos níveis dos blocos do asteroide, sendo que o nível do bloco 56 é desenhado isolado e ao lado da
projeção anterior para não saturar a figura.
406 Grafos

(1) O asteroide (2) Planta da localização geológica dos blocos estruturais no asteroide
Figuras do exercício 6.15: Asteroide e blocos estruturais

6.16: Uma rede com arcos (em negrito) e arestas (em itálico) é definida pelos elementos da tabela que se segue:

Vértice Oferta Demanda Aresta Custo Limites do Fluxo


1 2 10 2-1 3 10
2 2 3 3-1 2 6
3 0 0 1-4 1 4
4 0 5 4-1 2 4
5 0 0 3-4 2 3
6 0 0 3-2 3 3
7 11 0 2-5 3 4
5-6 4 8
3-6 6 6
7-5 2 10
7-6 8 5
4-6 2 10

1. Construir esquematicamente a rede definida na tabela, indicando uma solução viável para um fluxo e seu
custo.
2. Determinar a matriz de incidência (vértice x aresta) associada à rede.
3. Criar um ponto de demanda fictício, com os respectivos arcos associados, de tal forma que a oferta total
seja igual à demanda total, construindo o esquema gráfico da rede assim formada.
4. Reformular o problema de fluxo para que somente exista um único ponto de oferta e um único ponto de
demanda.
6.17: Aplicar o algoritmo de Ford e Fulkerson e o MPM para determinar o fluxo máximo s-t para a rede do grafo
do exercício. Os rótulos do grafo representam respectivamente o limite mínimo e máximo do fluxo que pode
circular nos arcos.
CAPÍTULO 6  Fluxo em redes 407

Grafo do exercício 6.17


6.18: Para a rede do exemplo, determine uma rede de substituição em que todos os vértices possuam fluxo con-
servativo. Nessa rede aplique o algoritmo de rotulação para determinar um fluxo viável. Determine o fluxo
máximo capaz de circular pela rede.

Rede do exercício 6.18


6.19: Um encontro de cúpula acontece em um hotel – vértice H da figura do exercício 5.13, que representa a ma-
lha rodoviária da região. Os vértices do grafo representam os pontos de interseção das estradas da região.
As vias possuem mão dupla. No hotel se reúnem 11 embaixadores representando seus respectivos países.
Após a reunião os embaixadores devem ser transportados até o aeroporto – vértice A. Cada embaixador é
transportado em um veículo blindado protegido por dois outros carros de segurança. As estradas da região
408 Grafos

do encontro possuem pequena capacidade de tráfego, de modo que o número máximo de veículos associa-
dos ao transporte dos embaixadores (a soma dos carros da escolta e dos carros de embaixadores) circulando
em um arco não deve ultrapassar o número marcado sobre as diversas vias. Esse número refere-se ao total
de carros especiais que percorrerão o trecho, ou seja, ao fluxo acumulado em ambos os sentidos permitidos
em cada arco. Os embaixadores poderão circular juntos em um mesmo trecho de estrada, formando um
comboio. Carros de escolta também podem circular de forma isolada pelos trechos da rede. Os carros de
escolta podem trocar de comboio ao passar pelos vértices de interseção. Admite-se que um embaixador seja
escoltado somente por um carro blindado em apenas um trecho do percurso, contudo exige-se que nesse
trecho seja também acompanhado por outro embaixador, de modo que o comboio possua, no mínimo, três
carros de escolta. Comboios com mais de dois embaixadores deverão manter as escoltas individuais de dois
carros blindados por embaixador, não se admitindo, portanto, redução da escolta para comboios com três
ou mais embaixadores.

Figura do exercício 6.19

Formule a organização do esquema de transporte dos embaixadores de modo que possa ser solucionado
como um problema de fluxo em rede. Exiba a solução do problema proposto ou prove que a rede não supor-
ta transportar os 11 embaixadores segundo o esquema de segurança imaginado.

Desafios

6.20: O aluno Genial, muito distraído, copiou um exercício passado pelo professor no quadro com as capacidades
sobre os vértices, como mostra a figura do exercício, onde os rótulos representam o fluxo máximo e mínimo
em cada vértice. O problema acabou transformado em um problema de fluxo sobre uma rede em que os
arcos possuem capacidade ilimitada, todavia os vértices são limitados ao fluxo. Sabendo que deve entregar o
exercício resolvido na manhã seguinte, e sem ter como fazer contato com ninguém de sua turma para obter
o exercício correto, resolve resolver esse novo problema na esperança de que seu compreensivo professor
aceite seu esforço. Genial poderá adaptar algum algoritmo de fluxo máximo para essa situação ou está real-
mente encrencado Proponha uma solução para o problema de Genial.
CAPÍTULO 6  Fluxo em redes 409

Figura do exercício 6.20

6.21: Genial resolveu calcular o emparelhamento mínimo de menor custo em um grafo ponderado e biparti-
do através de um algoritmo de fluxo máximo. Então, sugeriu o algoritmo de solução descrito no presente
exercício. Em linhas gerais, o algoritmo soluciona o problema através da determinação de até O(m) fluxos
na rede associada ao grafo G. O algoritmo encontra, em cada iteração, um matching qualquer na rede R as-
sociada ao grafo G através de um fluxo máximo, desconsiderando os custos desse matching. Esse cálculo é
executado pela função Matching(.). Após a determinação do matching qualquer, o algoritmo remove a aresta
de maior custo da rede pertencente ao matching determinado. Como a remoção de arestas da rede pode de-
terminar o surgimento de até dois vértices com grau igual a 1 na rede residual. Tais vértices são encontrados
e igualmente removidos da rede. A aresta que liga os dois vértices de grau 1 ou a que liga o único vértice de
grau 1 é incluída, a partir desse ponto, em todos os futuros matchings, sendo seu custo igualmente conside-
rado. Isso é realizado através das funções Matching(.) e Custo(.), que determinam um matching e seu custo
a partir de um dado fluxo na rede. O algoritmo termina quando o conjunto de vértices da rede residual é
tornado vazio. Pede-se: 1. Determine a complexidade do algoritmo proposto. 2. Prove que o algoritmo pro-
posto funciona para qualquer grafo bipartido ponderado ou ofereça um contraexemplo em que o algoritmo
falhe. 3. Execute o algoritmo no grafo de aplicação.

A Emparelhamento Máximo
Ler R = (V, E, F, U)
Custo (M*) ← s
Repita
M ← Matching(F)
Se Custo(M) ≤ Custo (M*) então M* ← M e Custo(M*) ← Custo(M)
E ← E \ {xij } | xij  M  cij = min{cks , xks e M}
Para todo vértice xj  V e d(xj) = 1 fazer
V ← V \ {xj}
Fim_para todo
Até_que V =  Grafo de aplicação
Escrever M*
Por Fluxo Máximo
410 Grafos

6.22: Uma informação recebida do monitoramento alterou o quadro do transporte de embaixadores proposto
no problema n... Um acidente tornou os trechos dos arcos 6-8 e 8-A intransitáveis. O acidente, além de
reduzir a segurança do transporte na rede, foi considerado “suspeito”. Consequentemente iniciou-se uma
operação para retirar os embaixadores em segurança pela rede remanescente, da forma mais rápida possível.
Considerando-se que, para fins práticos, as distâncias entre os pontos de interseção podem ser consideradas
constantes, e respeitando a capacidade das vias determinadas pelo antigo esquema, simplesmente transporte
os embaixadores e suas escoltas pela rede da forma mais rápida possível – minimizando a soma total dos
caminhos percorridos pelos carros dos embaixadores. Agora será permitido que os embaixadores formem
comboios de r embaixadores, com a única exigência de que a escolta seja composta por, no mínimo, 2r +1
veículos. Continuam possíveis as trocas de veículos entre os comboios, bem como o tráfego isolado de veí-
culos de escolta nas malhas da rede.
6.23: Nova informação tornou a situação do problema anterior mais grave. Para responder ao aumento do risco,
um novo esquema exigirá que nenhum veículo troque de comboio, bem como determinará que, se um tre-
cho for percorrido por um comboio ou por grupos de veículos de escolta, não mais seja considerado para o
tráfego de outros comboios ou grupos de veículos. Para o transporte, decidiu-se formar cinco comboios de
dois embaixadores com três carros de escolta, e mais um embaixador seguindo sozinho com dois carros de
escolta. Programar o deslocamento de forma a maximizar o número de embaixadores transportados.

6.8 Referências
Ahuja, R. K. & Orlin, J. B. (1989). A fast simple algorithm for the maximum flow problem. Operations Research
37:748-759.
Ahuja, R. K., Orlin, J. B. & Tarjan, R. E. (1989). Improved time bounds for the maximum flow problem. SIAM
Journal on Computation 18:939-954.
Ahuja, R. K. Magnanti, T. L. & Orlin, J. B. (1991). Some recent advances in network flows. SIAM Review 33:175-
219.
Akcali, E., Côté, M. J. & Lin, C. (2006). A network flow approach to optimizing hospital bed capacity decisions.
Health Care Manage Sci 9:391-404.
Alon, N. (1990). Generating Pseudo-Randon Permutations and Maximum Flow Algorithms. Information Process-
ing Letters 35:201-204.
Amankwah, H. (2011). Mathematical Optimization Models and Methods for Open-Pit Mining, Linköping Studies
in Science and Technology. Dissertations No. 1396, Department of Mathematics Linköping University.
Aragón, A. M., Wayer, J. K., Geubelle, P. H., Goldberg, D. E. & White, S. R. (2008). Design of microvascular flow
networks using multi-objective genetic algorithms, Comput. Methods Appl. Mech. Engrg. 197:4399-4410.
Benavent, E., Corberána, A., Piñana, E., Plana, I. & Sanchis, J. M., (2005). New heuristic algorithms for the windy
rural postman problem, Computers & Operations Research 32:3111-3128.
Bondy, J. A. & Chvátal, V. (1976). A Method in Graph Theory. Discrete Mathematics 15:111-136.
Boykov, Y. & Jolly, M-P. (2000). Interactive Organ Segmentation Using Graph Cuts. Proc. Medical Image Compu-
ting and Computer-Assisted Intervention, 276-286.
Boykov, Y. & Kolmogorov, V. (2000). An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy
Minimization in Vision. In: IEEE Transactions on PAMI 26(9):1124-1137.
Burkard, R. E. (1985). Time-slot assignment for TDMA-systems. Computing 35(2):99-112.
Caracas, A., Kind, A. Gantenbein, D., Fussenegge, S. & Dechouniotis, D. (2008). Mining Semantic Relations using
NetFlow. In: International Workshop on Business-driven IT Management – BDIM 2008 3rd IEEE/IFIP, 110-111.
Cepolina, E. M., (2009). Phased evacuation: An optimisation model which takes into account the capacity drop
phenomenon in pedestrian flows, Fire Safety Journal 44:532-544.
CAPÍTULO 6  Fluxo em redes 411

Cheriyan, J. & Hagerup, T. (1989). A Randomized Maximum-Flow Algorithm. In: Proceedings IEEE FOCS,118-
123.
Cheriyan, J., Hagerup, T. & Mehlhorn, K. (1990). Can a maximum flow be computed in O(nm) time In: Proceed-
ings 17th International Colloquium on Automata, Languages and Programming. Lecture Notes in Computers Science
443, Springer-Verlag, 235-248.
Cherkassky, B. V. (1977). Algorithm for Construction of Maximal Flows in Networks with Complexity O (V 2 E )
operations. Mathematical Methods of solution of Economical Problems 7:112-125 (In Russian), Traduzido em:
Z. Gail, Z. (1978). A new algorithm for the maximal flow problem. In: Proceedings of the 19th IEEE Symposium on
Foundations of Computer Science, 231-245.
Chiou, S-W. (2009). An efficient algorithm for optimal design of area traffic control with network flows. Applied
Mathematical Modelling 33:2710-2722.
Costa, A. M., Cordeau, J-F. & Laporte, G. (2008). Fast heuristics for the Steiner tree problem with revenues, budget
and hop constraints. European Journal of Operational Research 190:68-78.
Dantzig, G. (1951). Application of the simplex method to a transportation problem, In: T. C. Koopmans (ed.). Activ-
ity Analysis and Production and Allocation, Wiley, New York, Chapter XXIII, 359-373.
Detlefsen, N. K. & Jensen, A. L. (2007). Modelling optimal crop sequences using network flows. Agricultural Sys-
tems 94:566-572.
Dinitz, E. A. (1970). Algorithm for solution of a problem of maximum flow in a network with power estimation.
Soviet Math. Doklady 11:1277-1280.
Dinitz, E. A. (1973). Metod Porazryadnogo sokrashcheniya nevyazok I transportnye zadachi (excess scaling and
transportation problems). In: Issledovaniya po Diskretnoi Matheatike (Nauka, Moskva).
Dhaenens-Flipo, C. & Finke, G. (2001). An integrated model for an industrial production-distribution problem,
IIE Transactions 33:705-715.
Edmonds, J. & Karp, R. M. (1972). Theoretical improvements in algorithmic efficiency for network flow problems.
Journal of the ACM 19(2):248-264.
Eisenbrand, F., Karrenbauer, A., Skutella, M. & Xu, C. (2009). Multiline Addressing by Network Flow. Algorithmica
53:583-596.
Ekşioğlu, S. D. (2009). A primal-dual algorithm for the economic lot-sizing problem with multi-mode replenish-
ment. European Journal of Operational Research 197:93-101.
Emrah, A. & Tolga, C. (2011). In: International Conference on High Performance Computing and Simulation (HPCS
2011), 56-62.
Fat, B. D., Scharler, U. M., Ulanowicz, R. E. & Hannon, B. (2007). Ecological network analysis: network construc-
tion. Ecological modeling 208:49-55.
Feng, H., Liu, Z., Xiab, C. H. & Zhang, L. (2007). Load shedding and distributed resource control of stream pro-
cessing networks. Performance Evaluation 64:1102-1120.
Ford, L. R. & Fulkerson, D. R. (1962). Flows in Networks. Princeton University Press.
Ford, L. R. & Fulkerson, D. R. (1956). Maximal flow through a network. Canadian Journal of Mathematics 8:399-
404.
Gabow, H. N. (1985). Scaling algorithms for network problems. Journal of Computer and system Sciences 31:148-
168.
Galil, Z. & Naamad, A. (1980). An O(|E| |V|Iog2V) algorithm for the maximal flow problem. Journal of Computer
and System Sciences 21(2):203-217.
Di Gaspero, L., Gärtner, J., Kortsarz, G., Musliu, N., Schaerf, A. & Slany, W. (2007). The minimum shift design
problem. (Ann Oper Res 155:79-105.
Goldberg, A. V. & Tarjan, R. E. (1986). A new approach to the maximum flow problem. In: Annual ACM Sympo-
sium on Theory of Computing, Proceedings of the 18th annual ACM symposium on Theory of computing, 136-146.
412 Grafos

Goldberg, A. V. & Tarjan, R. E. (1987). Solving Minimum Cost Flow Problem by Sucessive Approximation. In:
Annual ACM Symposium on Theory of Computing. Proceedings of the 19th annual ACM Symposium on Theory of
computing, 7-18.
Goldberg, A. V. & Tarjan, R. E. (1988). A New Approach to the Maximum Flow Problem. Journal of the ACM
35(4):921-940.
Goldberg, A. V. & Rao, S. (1997). Beyond the Flow Decomposition Barrier. In: Proceedings 38th IEEE Annual Sym-
posium on Foundations of Computers Science, 2-11.
Goldfarb, D. & Chen, W. (1997). On strongly polynomial dual algorithms for the maximum flow problem. Special
issue of Math. Programming,Ser. B78(2):159-168.
Gouveia, L. (1996). Multicommodity flow models for spanning trees with hop constraints. European Journal of
Operational Research 95:178-190.
Harary, F. (1994). Graph Theory. Reading, MA: Addison-Wesley.
Hochbaum, D. S. (2008). The Pseudoflow Algorithm: A New Algorithm for the Maximum-Flow Problem, Opera-
tions Research 56(4):992-1009.
Hsu a, N-S., Cheng, W-C., Cheng, W-M., Wei, C-C. & Yeh, W. W-C. (2008). Optimization and capacity expansion
of a water distribution system. Advances in Water Resources 31:776-786.
Huang, C-H., Lai, Y-C. & Chen, K-C. (2008). Network capacity of cognitive radio relay network. Physical Com-
munication 1:112-120.
Jafari, M. A., Jiachen L. & Golmohammadi, D. (2009). Network flow formulation of optimal perimeter sensory
coverage problem. European Journal of Operational Research 197:77-83.
Jillson, K. R. & Ydstie, E. (2007). Process networks with decentralized inventory and flow control. Journal of Process
Control 17:399-413.
Kabirian, A. & Hemmati, M. R. (2007). A strategic planning model for natural gas transmission networks. Energy
Policy 35:5656-5670.
Kakoulis, K. G. & Tollis, I. G. (2006). Algorithms for the multiple label placement problem. Computational Geo-
metry 35:143-161.
Karzanov, V. A. (1974). Determining the maximal flow in a network by the method of preflows. Soviet Math
Doklady 15:434-437.
King, V., Rao. S. & Tarjan, R. (1992). A Fast Deterministic Maximun Flow Algorithm. In: Proceedings 3rd ACM-
SIAM Symposium on Discrete Algorithms, 157-164.
Knödel, W. (1975). New gossips and telephones. Discrete Math 13:95.
Lawler, E. L. (1976). Combinatorial Optimization: Networks and Matroids, Holt, Rinehart and Winston, New York.
Liu, Y. & Sprague, A. P. (2008). Outlier detection and evaluation by network flow International, Journal of Com-
puter Applications in Technology 33(2-3):237-246.
Liu, H. & Wong, D. F. (1998). Network flow-based circuit partitioning for time-multiplexed FPGAs, In: IEEE/ACM
international conference on computer-aided design, 1497-504.
Lu, H-Y., Yao, E-Y. & Zhang, B-W. (2009). A Note on a Generalized Network Flow Model for Manufacturing Pro-
cess. Acta Mathematicae Applicatae Sinica, English Series, 25(1):51-60.
Malhotra. V. M., Pramodh-Kumar, & Maheshwari, S. N. (1978). An O(V3) algorithm for finding maximum flows
in networks. Information Processing Letters 7:277-278.
Martinez-Bauset, J., Garcia-Roger, D., Domenech-Benlloch, M. J. & Pla, V. (2009). Maximizing the capacity of
mobile cellular networks with heterogeneous traffic. Computer Networks 53:973-988.
Matveichev, A. S. (1969). Network flow graphs for repair and maintenance work on large metallurgical units. Met-
allurgist 13(2):129-131.
McBride, R. D. & O’Leary, D. E. (1997). An intelligent modeling system for generalized network flow problems:
With application to planning for multinational firms. Annals of Operations Research 75:355-372.
CAPÍTULO 6  Fluxo em redes 413

Mtibaa, A., Ouni, B. & Abid, M. (2007). An efficient list scheduling algorithm for time placement problem. Com-
puters and Electrical Engineering 33:285–298.
Peters, B. & McGinnis, L. F. (2000). Modeling and analysis of the product assignment problem in single stage elec-
tronic assembly systems. IIE Transactions 32:21-31.
Phillips, S. & Westbrook, J. (1998). On-Line Load Balancing and Network Flow. Algorithmica 21:245-261.
Phillips, S. & Westbrook, J. (1993). Online Load Balancing and Network Flow. In: Proceedings 25th Annual ACM
Symposium on Theory of Computing, 402-411.
Pisinger, D. (2007). The quadratic knapsack problem: a survey. Discrete Applied Mathematics 155:623-648.
Robinson, A. R., Chan, Y. & Dietz, D. C. (2006). Detecting a security disturbance in multi commodity stochastic
networks, Telecommun Syst 31:11-27.
Roy, S. & Cox, I., (2003). A Maximum-Flow Formulation of the n-Camera Stereo Correspondence Problem, In:
Proceedings Int’l Conf. Computer Vision, 26-33.
Sedeño-Noda, A., Pablo, D. A. L. & González-Martín, C. (2009). A network flow-based method to solve perfor-
mance cost and makespan open-shop scheduling problems with time-windows, European Journal of Operational
Research 196:140-154.
Shiloach, Y. & Vishkin, U. (1982). An O(n2 log(n)) parallel max-flow algorithm. Journal algorithms 3:128-146.
Skiena, S. (1990). Implementing Discrete Mathematics: Combinatorics and Graph Theory with Mathematica. Read-
ing, MA: Addison-Wesley.
Sleator, D. D. & Tarjan, R. E. (1983). A data Structure for dynamic trees. Journal of Computers and System Sciences
16:362-391.
Sperotto. A., Schaffrath, G., Sadre, R., Morariu, C., Pras, A. & Stiller, B. (2010). An Overview of IP Flow-Based
Intrusion Detection. IEEE Communications Surveys Tutorials 12(3):343-356. 
Sodhi, M. S., Agnetis, A. & Askin, R. G. (1994). Tool addition strategies for flexible manufacturing systems. Inter-
national Journal of Flexible Manufacturing Systems 6(4):287-310.
Spälti, S. B. & Liebling, T. M. (1991). Modeling the satellite placement problem as a network flow problem with one
side constraint. OR Spectrum 13(1):1-14.
Terlakya, T., Vannellib, A. & Zhangc, H. (2008). On routing in VLSI design and communication networks. Discrete
Applied Mathematics 156:2178-2194.
Wayne, K. D. (2001). A New Property and a Faster Algorithm for Baseball Elimination. SIAM J. Discrete Math
14(2):223-229
Yan, S. & Chen, C-H. (2007). Coordinated scheduling models for allied airlines. Transportation Research Part C
15:246-264.
Yenisey, M. M. (2006). A flow-network approach for equilibrium of material requirements planning. Int. J. Produc-
tion Economics 102:317-332.
Zhang, T., Jain, S. & Loguinov, D. (2009). Towards experimental evaluation of explicit congestion control. Com-
puter Networks 53:1027-1039.
CAPÍTULO 7  Coloração e grafos perfeitos 415

capítulo
416 Grafos

7.1 Grafos Perfeitos


O primeiro autor a definir em uma linguagem moderna as propriedades de um grafo perfeito foi Gallai (1958). O
termo grafo perfeito foi cunhado por Berge (1963).

Grafos Perfeitos
Um grafo G é dito perfeito se todo subgrafo induzido de G tiver número cro-
mático igual ao tamanho de sua maior clique.

Grafo Buraco e Anti-Buraco (1) Grafo 1

U grafo
Um f é dito
dit b buraco quando
d é fformado
d por um ciclo
i l sem cordas
d e possuii
pelo menos quatro vértices.
Um grafo é dito antiburaco quando é complementar de um grafo buraco.

Segunda definição para Grafos Perfeitos


(2) Grafo 2
Um grafo de Berge é um grafo simples que não contém grafos buracos ou anti-
buracos ímpares. Um grafo é perfeito se é um grafo de Berge com pelo menos
cinco vértices (Cornuéjols, 2002).

A Figura 7.1 exemplifica três grafos perfeitos. A Figura 7.2 exemplifica dois (3) Grafo 3
grafos buracos.
Figura 7.1 Grafos perfeitos

.
(1) Grafo buraco par (2) Grafo buraco ímpar (3) Grafo antiburaco

Figura 7.2 Grafos buracos e antiburacos

Em consequência da definição de grafo perfeito tem-se:

Nos grafos perfeitos os pro-


Para todo subgrafo induzido G⬘ de G tem-se blemas de coloração, clique
máxima e máximo conjunto
χ(G⬘) = w(G⬘) e a(G⬘) = k(G⬘) independente podem ser solu-
cionados em tempo polinomial.
CAPÍTULO 7  Coloração e grafos perfeitos 417

Os grafos fracamente perfeitos


também são denominados trivial-
Grafos Fracamente Perfeitos mente perfeitos. As Figuras 7.3(1)-
Os grafos em que χ(G) = w(G) são chamados de fracamente perfeitos.
(3) exemplificam grafos perfeitos
e fracamente perfeitos. As Figuras
7.3(4)-(6) exibem grafos não per-
feitos.

(1) Grafo perfeito (2) Grafo fracamente perfeito (3) Grafo fracamente perfeito

(4) Fracamente perfeito (5) Grafo não perfeito (6) Grafo não perfeito

Figura 7.3 Grafos fracamente perfeitos e não perfeitos

Reconhecer se um grafo é Famílias de Grafos Perfeitos


perfeito é um problema
– Grafos bipartidos e grafos de linha de grafos bipartidos
– Grafos intervalares e grafos cordais
Polinomial – Grafos de comparabilidade
– Grafos de Meynies (definição no Capítulo 6)
Algumas famílias de grafos – Grafos split (definição no Capítulo 6)
perfeitos são apresentadas no
– Co-grafos
quadro ao lado.

Chudnovsky et al. (2005) apresentaram um algoritmo com tempo O(n9) para reconhecimento de um grafo
perfeito. Os teoremas 7.1, 7.2 e 7.3 firmam propriedades importantes dos grafos perfeitos.
418 Grafos

Teorema 7.1
O grafo complementar de um grafo perfeito é perfeito.
(Fulkerson, 1971; Lovász, 1972; Skiena, 1990)

Teorema 7.2

Um grafo é perfeito se:


– Não contém grafo buraco com número ímpar de vértices.
– Não contém grafo antiburaco com número ímpar de vértices.
Demonstração realizada por Maria Chudnovsky e Paul Seymour em 2002
(Chudnovsky et al., 2006).

Teorema 7.3
Um grafo G é perfeito se e somente se para cada subgrafo H induzido de
G existe um conjunto de estabilidade que intercepta cada uma das cliques
máximas de H.

Os grafos perfeitos encontram aplicação em várias áreas, como Computação, Geologia, Química e Biologia
(Golumbic, 1980).

7.2 Coloração
O problema da coloração em grafos é um dos mais conhecidos na Teoria dos Grafos. Colorir um grafo G é atribuir
cores aos seus vértices de forma que vértices adjacentes recebam cores distintas (denominada coloração própria).
Simplesmente colorir um grafo é tarefa trivial, uma vez que se pode imaginar distribuir uma cor diferente para
cada vértice. O problema da coloração realmente surge quando desejamos colorir o tal grafo, utilizando o menor
número possível de cores.

Em uma coloração própria


Número Cromático
(G) todos os vértices adjacentes
do grafo possuem
É o menor número de cores que pode ser utilizado para uma coloração própria cores diferentes.
de um grafo G. É notado como χ(G).

NP-Difícil

Distinguindo as cores através de números, a Figura 7.4(2) representa uma 4-coloração do grafo G da Figura
7.4(1), onde cada diferente número sublinhado codifica uma diferente cor.
CAPÍTULO 7  Coloração e grafos perfeitos 419

(1) Grafo G (2) 4-coloração de G

Figura 7.4 Coloração de G

A Figura 7.5(1) exibe uma coloração mínima do grafo da Figura 7.5(2).

(1) Grafo G (2) Coloração ótima de G

Figura 7.5 Coloração de G com o menor número de cores

Existem diversas classes de grafos para as quais se conhece o número cromático. Por exemplo, o número
cromático de um grafo bipartido é 2, de um ciclo ímpar é 3 e de um grafo completo de ordem n é n. Sabe-se que
χ(G) 4 quando o grafo é planar (Appel & Haken, 1977; Robertson et al., 1997). Entretanto, decidir se um grafo
planar é 3-colorível é um problema NP-completo. O problema da coloração de grafos planares foi originado do
Problema das Quatro Cores e tem uma longa tradição na Teoria dos Grafos, cujo histórico é apresentado por
Saaty & Kainen (1986) e brevemente introduzido na seção 7.3 deste livro. De uma forma geral, o problema de
encontrar o número cromático de um grafo G de ordem n ≥ 3 é NP-difícil (Karp, 1972). Garey & Johnson (1976)
mostraram que a menos que P = NP, não é possível construir um algoritmo polinomial para colorir um grafo
G qualquer que produza uma solução aproximada com menos de 2χ(G) cores. O número cromático está rela-
cionado com outros invariantes de um grafo G, porque cada cor atribuída aos vértices de G forma um conjunto
independente de vértices. Considerando-se α(G) = α e χ(G) = χ, tem-se o teorema 7.4:

Teorema 7.4 Número cromático

n–a≤χ≤n–a+1 χ(G)
420 Grafos

Alguns limites simples para o número cromático de um grafo são:

Teorema 7.5 (G) denota o máximo grau do


Para um grafo G, tem-se que χ(G) ≤ D(G) + 1. grafo G.

Teorema 7.6 (G) denota o tamanho da


Para um grafo G, tem-se que χ(G) ≥ ω(G). maior clique do grafo G.

❂ Coloração – Dicas de Trabalho

Al-Omari & Sabri (2006) relatam dois algoritmos para a coloração baseados em modificações de heurísticas de saturação
e de ordenação por graus. Salari & Eshghi (2008) relatam um algoritmo em colônia de formigas. Um algoritmo de busca
em vizinhança variável é apresentado por Avanthay et al. (2003). Galinier & Hao (1999) e Erben (2001) apresentam algo-
ritmos evolucionários para o problema.

Grau de Saturação
Grau de saturação de um vértice v é o número de cores distintas que estão
associadas aos vértices vizinhos a v.

A Figura 7.6 mostra uma árvore


cujos vértices estão coloridos com
4 cores distintas. O grau de satura-
ção do vértice v1 é 3, uma vez que
seus vizinhos estão coloridos com
3 cores distintas (1, 2 e 4). O vértice
v2 também tem grau de saturação 3
(vizinhos coloridos com cores 1, 2
e 3).

Figura 7.6 Grau de saturação

Homomorfismo G⬘ = Φ(G) é dita imagem homo-


mórfica de G.
Um homomorfismo elementar em um grafo é a contração de dois vértices não
adjacentes (Harary, 1972, pg 143).
Um homomorfismo é completo
Um homomorfismo em G é uma sequência de homomorfismos elementares. de ordem p se Φ(G) = Kp, onde Kp
é o grafo completo de ordem p.
CAPÍTULO 7  Coloração e grafos perfeitos 421

A Figura 7.7(2) exemplifica um homomorfismo elementar que produz um homomorfismo completo de ordem
4 através da contração dos vértices 2 e 5 do grafo da Figura 7.7(1). A Figura 7.7(4) exemplifica um homomorfismo
elementar no grafo da Figura 7.7(3).

(1) Grafo G (2) Contração dos vértices 2 e 5


Homomorfismo completo

(3) Grafo G (4) Contração dos vértices 2 e 4


Homomorfismo elementar

Figura 7.7 Homomorfismos

Encontrar um homomorfismo
Homomorfismo Máximo máximo em um grafo G é
Dados um grafo G = (NG ,MG) e um grafo alvo H = (NH ,MH), o problema consis-
te em determinar um mapeamento ϕ : NG → NH que maximize o número de
arestas de G que são mapeadas pelas arestas de H. NP-Difícil

Homomorfismo de Mínimo Custo


Determinar um homomorfis-
Dados grafos G = (NG , MG) e H = (NH ,MH), o mapeamento anteriormente de-
mo de mínimo custo em um grafo
finido dos vértices de G sobre os vértices de H e considerando que existe um
custo cij por mapear o vértice i  NG sobre o vértice j  NH, o homomorfismo de Gé
mínimo custo é aquele que acumula a menor soma dos custos associados ao
mapeamento de um homomorfismo máximo.
NP-Difícil
422 Grafos

❂ Homomorfismo – Dicas de Trabalho

Langberg et al. (2006) apresentam algoritmos aproximativos para o problema do máximo homomorfismo. Gutin et al.
(2006) tratam do problema do homomorfismo de mínimo custo.

Coloração Completa
Um homomorfismo completo de ordem p induz uma p-coloração em G.
Uma coloração completa é uma coloração p induzida e possui a propriedade que Determinar a maior coloração
para quaisquer duas cores da p-coloração existem dois vértices vizinhos colori- completa de um grafo é
dos com tais cores no grafo G.

Número Acromático NP-Difícil


(G)
A maior ordem de um homomorfismo completo é um invariante de um grafo,
dito número acromático Ψ(G).

Na Figura 7.8(1) G1 exibe uma


4-coloração completa. Por outro lado,
em G2 existe uma 4-coloração que não
é completa. Em G2 não existem vérti-
ces vizinhos coloridos com as cores 2 e
4. Observa-se que a coloração exibida
pelo grafo G1 da Figura 7.8(1) é indu-
zida por um homomorfismo completo,
onde os vértices coloridos com a cor 2
estariam contraídos. Conforme a Figu-
ra 7.8(2) mostra, a contração dos vér-
(1) Grafo G1 (2) Grafo G2 tices coloridos com a cor 3 não resulta
em um grafo completo de ordem 4.

Figura 7.8 Duas 4-colorações de um grafo

As Figuras 7.9(2) e (3) mostram as contrações necessárias para a determinação de uma coloração completa
com 4 cores para o grafo da Figura 7.9(1). O homomorfismo completo mostrado no grafo da Figura 7.9(3) define
o número acromático do grafo.

(1) Grafo G (2) Contração 5/6 (3) Contração (5/6)/4

Figura 7.9 Número acromático


CAPÍTULO 7  Coloração e grafos perfeitos 423

❂ Número Cromático e Acromático – Dicas de Trabalhos

Em grafos gerais a determinação do número:

1. Cromático é NP-Difícil – Karp (1972);


2. Acromático é NP-Difícil – Cairnie & Edwards (1997);
3. Cromático harmonioso é NP-Difícil – Hopcroft & Krishnamoorthy (1983);

Chaudhary & Vishwanathan (2001) e Krysta & Lory⬘s (2006) relatam algoritmos aproximativos para o cálculo do número
acromático.

Coloração Harmoniosa
Uma coloração é dita harmoniosa quando cada par de cores aparece no máximo
em um par de vértices adjacentes no grafo G. Encontrar uma coloração har-
moniosa em um grafo G é
Número Cromático Harmonioso
É o número mínimo de cores necessário à uma coloração harmoniosa em G. NP-Difícil

Coloração Exata Uma coloração exata é uma


coloração harmoniosa e completa.
Uma coloração exata é uma coloração própria em que cada par de cores apare-
ce exatamente uma vez em cada par de vértices adjacentes em G.

A Figura 7.10(1), que representa as cores através dos números sublinhados, exibe uma coloração harmoniosa.
Observe que nenhum par de cores se repete em vértices adjacentes. A Figura 7.10(2) exibe uma coloração comple-
ta. A Figura 7.10(3) mostra uma coloração harmoniosa, já que cada par de cores é adjacente, no máximo, uma vez
e completa porque todos os pares de cores são adjacentes. Na Figura 7.10(1), por exemplo, os pares 4-5, 4-6, e 5- 6
não são adjacentes. Na Figura 7.10(2), por exemplo, os pares 2-3 são adjacentes várias vezes.

(1) Coloração harmoniosa (2) Coloração completa (3) Coloração exata


424 Grafos

Figura 7.10 Coloração harmoniosa, coloração completa e coloração exata

❂ Coloração Harmoniosa – Dicas de Trabalhos

Hopcroft & Krishnamoorthy (1983), Mitchem (1989) e Kubale (2004) apresentam estudos abrangentes para a coloração
harmoniosa. Edwards (1997) apresenta uma revisão da literatura para o número cromático harmonioso.

G é dito vértice-crítico se (G)


Grafo Crítico > (G-v), qualquer que seja o vérti-
ce v G.
G é dito crítico quando a remoção de qualquer vértice ou aresta acarreta o
decréscimo de seu número cromático.
(Harary, 1972) G é dito aresta-crítico se (G)
> (G-e), qualquer que seja a aresta
e G.

As Figuras 7.11(2)–(5) ilustram possibilidades de remoção de vértices e arestas do grafo da Figura 7.11(1),
confirmando sua condição de grafo crítico. As remoções de vértices e arestas não representadas na figura são
desnecessárias face à simetria do grafo. Removem-se arestas e vértices (I) internos e (E) externos representativos.

(1) Coloração de G – χ(G) = 4 (2) Remoção de vértice E – χ(G) = 3

(3) Remoção de vértice I (4) Remoção de aresta E (5) Remoção de aresta I


χ(G) = 3 χ(G) = 3 χ(G) = 3

Figura 7.11 Grafo G crítico


CAPÍTULO 7  Coloração e grafos perfeitos 425

Teorema 7.7
Todo grafo completo é crítico.

O número cromático forte foi


Coloração Forte sugerido por Alon (1988) e
Fellows (1990).
Dado um conjunto de partições disjuntas (onde os conjuntos não possuem vér-
Alon (1992) demonstra várias
tices em comum) em vértices de G com cardinalidade k, uma coloração forte de
propriedades deste invariante.
G é uma coloração própria em que cada cor aparece exatamente uma vez em
cada possível partição.
Uma 2-coloração fraca deter-
Coloração Fraca mina uma partição nos vértices de
G em dois conjuntos dominantes.
É uma coloração não própria de G em que cada vértice é adjacente a pelo me- Todo grafo possui uma 2-colora-
nos um vértice de cor diferente. ção fraca.

Número Cromático Forte


S(G) Schmidt-Pruzan et al.
(1985) abordam
É o número mínimo de cores necessário à uma coloração forte em G.
aplicação da coloração fraca
aos hipergrafos.

No caso de o grafo G não ser divisível pelo número k, adiciona-se a G vértices isolados necessários a que |NG|
se torne divisível por k, criando-se o grafo G⬘. Nesse caso, uma coloração forte de G é obtida da coloração forte em
G⬘ através da retirada dos vértices isolados, anteriormente adicionados. Um grafo é dito k-fortemente colorível se,
para cada partição de vértices de tamanho k, uma nova coloração forte é admitida.

Teorema 7.8 Uma k-coloração fraca em um


hipergrafo é uma coloração de
Sχ(G) > D(G) e Sχ(G) ≤ 3 D(G) – 1 vértices tal que não existam arestas
monocromáticas
(Haxell, 2004)

As Figuras 7.12(2)-(11) exibem dez partições de vértices do grafo da Figura 7.12(1) e suas colorações associa-
das. O grafo é 4-fortemente colorível.

Questão
p
Quantas diferentes colorações fracas é possível fazer em G com k cores – PG(k)?
426 Grafos

(1) Grafo G: 4-fortemente colorível (2) 1a partição (3) 2a partição

(4) 3a partição (5) 4a partição (6) 5a partição

(7) 6a partição (8) 7a partição (9) 8a partição

(10) 9a partição (11) 10a partição

Figura 7.12 Exemplo de uma 4-coloração forte


CAPÍTULO 7  Coloração e grafos perfeitos 427

A Figura 7.13(1) exibe um grafo que não possui colorações fortes. As Figuras 7.13(2)-(4) exemplificam colora-
ções fracas.

(1) Grafo não fortemente colorível (2) 1a coloração fraca

(3) 2a coloração fraca (4) 3a coloração fraca

Figura 7.13 Exemplos de coloração

Coloração de Arestas
Uma k-coloração das asrestas de G é uma atribuição de k cores a estas arestas de NP-Difícil
forma que duas arestas incidentes ao mesmo vértice recebam cores distintas.

A Figura 7.14(1) exemplifica uma


Número Cromático Forte 1(G) coloração de arestas. Os números
sublinhados representam as cores
O número mínimo de cores capaz de colorir as arestas de um grafo v G atenden-
do as exigências anteriores é denominado índice cromático ou χ1(G). associadas às arestas.

Definindo-se (G) o maior grau do grafo G, verifica-se o teorema 7.6 de Vizing (Swamy & Thulasiraman, 1981,
p. 246). Em caso de grafos bipartidos χ1(G) = (G).

Coloração Total Encontrar uma coloração total


em um grafo G com o mínimo de
Pode-se colorir um grafo de modo que a vértices e arestas sejam atribuídos cores possível é
cores de forma que dois elementos incidentes ou adjacentes recebam cores di-
ferentes.
NP-Difícil
Número Cromático Total 2(G)
O número mínimo de cores necessário a realizar uma coloração total em G é
chamado de número cromático total ou χ2(G). A Figura 7.14(2) exemplifica
uma coloração total.
428 Grafos

(1) Coloração de arestas (2) Coloração total

Figura 7.14 Coloração de arestas e coloração total

Teorema 7.9
χ1(G) = Δ(G) ou χ1(G) = Δ(G) + 1
(Swamy & Thulasiraman, 1981, p. 246)

❂ Coloração Total – Dicas de Trabalhos

Yap (1996) realiza uma revisão do problema da coloração total. Molloy & Reed (1998) calculam um limite para o número
cromático total. Kowalik et al. (2009) apresentam um estudo para coloração total em grafos planares de grau máximo 9.

Encontrar uma coloração total


Coloração Total Distinta em Vértices Adjacentes distinta com o mínimo número de
cores em um grafo G é
É a coloração total própria em que para quaisquer pares de vértices adjacentes
os conjuntos de cores utilizados nos vértices e arestas incidentes são diferen-
NP-Difícil
A Figura 7.15 exemplifica uma coloração total distinta em vértices adjacentes.
Observe, na Figura 7.15, que os conjuntos de cores atribuídos às arestas adjacentes não se repetem – {3,1,5};
{5,2,4}; {4,3,2}; {2,5,1}; {4,5,3}; {5,3,2}; {3,4,1}; (1,5,2}; {2,4,3}; {3,3,1}; {2,1,4}.

Figura 7.15 Coloração total distinta


CAPÍTULO 7  Coloração e grafos perfeitos 429

❂ Coloração Total Distinta – Dicas de Trabalhos

Hulgan (2009) aborda o problema da coloração total distinta em vértices adjacentes. Chen (2008) apresenta um estudo da
coloração total distinta em vértices adjacentes para grafos com D = 3.

Grafo Total
To(G)
A Figura 7.16(3) mostra a
O grafo de total, To(G), é um grafo To que possui um vértice para cada vértice construção do grafo total do grafo
de G e um vértice para cada aresta de G (vértices do grafo L(G) – grafo linha de
K3 exibido na Figura 7.16(1).
G). Um par de vértices de To(G) é adjacente, se os vértices ou arestas corres-
pondentes em G forem elementos adjacentes ou incidentes em G.

A Figura 7.16(3) mostra a construção do grafo linha. As setas mostram as associações de vértices e arestas.
Os rótulos dos vértices do grafo de linha serão redefinidos em 4,5,6 na construção do grafo total. Observa-se que
χ2 (G) = χ (To(G)). As arestas tracejadas correspondem à união dos vértices do grafo de linha ao seu grafo gerador.

(1) Grafo G – K3 (2) Grafo linha de k3 (3) Construção de L(G)

(4) Arestas unindo os vértices do grafo L(G) a G (5) Grafo total

Figura 7.16 Grafo total

A coloração em um grafo é uma relação de adjacência que pode envolver restrições com arestas, vértices ou
ambas. Contudo, o critério da restrição de adjacência pode ser generalizado de modo a considerar não apenas um
determinado valor associado aos vértices ou arestas (cores), mas intervalos de valores inteiros. Os intervalos nu-
méricos necessários para garantir que a atribuição de valores entre vértices adjacentes seja considerada válida são
também denominados “distância”. Com tais critérios, formam-se distribuições de valores numéricos associados
aos vértices de um grafo, que são denominadas colorações generalizadas.
Uma primeira forma de considerar as “distâncias” pode ser associando-as a determinado conjunto de valores
considerados restritos. Um exemplo desse caso denomina-se T-coloração.
430 Grafos

Considere que exista, em determinada região, n transmissores, x1, x2, ... , xn aos quais se deseja alocar frequên-
cias f(x) sobre as quais eles possam operar. Para esse conjunto de transmissores é definido um grafo de interferên-
cia G = (N, M), onde N = {x1, x2, ..., xn} e as arestas (xi,xj)  M representam o fato de haver interferência entre os
transmissores xi e xj. Um conjunto T de inteiros positivos representa as distâncias proibidas entre os pares de trans-
missores. Assume-se que 0 pertence a T. A restrição de distâncias mínimas garante a eliminação das interferências
entre um par xi, xj de transmissores.

T-Coloração
Encontrar uma T-coloração de
A T-coloração de um grafo é definida como uma função f:N →  que satisfaz a ordem mínima em um grafo G é
expressão:
(x1, xj)  A  |f (x1) – f (x2)|  T
NP-Difícil
Número T-Cromático t(G) A Figura 7.17(3) mostra a
construção do grafo total do grafo
O número T-cromático é definido como sendo a menor ordem de uma T-colo-
ração, sendo notado por χt(G). K3 exibido na Figura 7.16(1).

A T-coloração foi apresentada pela primeira vez na literatura por Hale (1980), modelando o problema de alo-
cação de frequências de comunicação. A Figura 7.17(2) exibe a T-coloração {1,4,7}, de ordem três, com T = {0,1,2}
para o grafo de interferências mostrado na Figura 7.17(1). A ordem da T-coloração pode representar o número de
canais “abertos” ou o espaço de frequência não utilizada em um grafo de frequências de comunicação. A T-colo-
ração da Figura 7.17(2) pode ser interpretada como uma atribuição de canais UHF, canais 1, 4 e 7, que permitem
a comunicação na rede de forma que o espaçamento entre os canais de frequências atenda as restrições do caso.
A Figura 7.17(3) mostra que o número T-cromático do grafo da Figura 7.17(1) é dois, t(G) = 2, uma vez que a
T-coloração do grafo de interferências pode ser redefinida com apenas duas cores. A Figura 7.17(4) mostra uma
T-coloração para o grafo da Figura 7.17(1) com 4 cores.

(1) Grafo de interferências (2) Uma T-coloração

(3) χt(G) = 2 (4) T-coloração com 4 cores

Figura 7.17 T-colorações para T={0,1,2}


CAPÍTULO 7  Coloração e grafos perfeitos 431

❂ T-coloração – Dicas de Trabalhos

Dorne & Hao (1998) apresentam algoritmos Busca Tabu para coloração e T-coloração. Satratzemi & Tsouros (2004) de-
senvolvem algoritmos heurísticos para o problema. Chiarandini & Stützle (2007) apresentam algoritmos de busca local
estocásticos para o problema. Liu et al. (2008) propõem um algoritmo evolucionário com multiagentes. Mabrouk et al.
(2009) relatam um algoritmo genético hibridizado com Busca Tabu. Janczewski (2009) apresenta resultados teóricos para
o problema.

A Figura 7.17 mostra que, além do número de frequências utilizadas para atribuir rótulos ao grafo G, as fre-
quências podem estar mais ou menos afastadas em valor. O span ou espalhamento de uma T-coloração é dado
pela diferença entre a maior e a menor frequência atribuída aos vértices do grafo de interferências, isto é, máxi-
mo {|f (x)–f (y)|: x,y  N}.

T-Span spT(G) Determinar o T-span em um


grafo G é
Dados um grafo G e um conjunto T, o T-span de G, spT(G), é o mínimo span
dentre todas as T-colorações do grafo G. NP-Difícil

Considerando o grafo de interferências da Figura 7.18(1) e T  =  {0,1,4,5}, a Figura 7.18(2) apresenta uma
T-coloração ótima e o span associado sendo dado pela diferença |7–1| = 6. A Figura 7.18(3) mostra a solução de
mínimo span e uma T-coloração associada. O T-span do grafo da Figura 7.18(1) é 4, de acordo com a T-coloração
de mínimo span apresentada na Figura 7.18(3). Observe que os três canais da coloração ótima do grafo da Figura
7.18(2) comprometem uma banda de sete canais. Por outro lado, a solução com o melhor span compromete uma
faixa de apenas cinco canais, apesar de utilizar um número maior de canais.

(1) Grafo G – C5 (2) χt(G) = 3 e spT(G) = 6 (3) χt(G) = 5 e spT(G) = 4

Figura 7.18 T-coloração e T-span

❂ T-Span – Dicas de Trabalhos

Costa (1993) apresenta algoritmos simulated annealing / busca tabu. Velanzuela et al. (1999) desenvolvem algoritmos
genéticos. Zhao & He (2005) desenvolvem limites para o valor do T-span ótimo. Malaguti & Toth (2008) propõem algo-
ritmos evolucionários e busca tabu.
432 Grafos

Grafo k Comprimento de Banda


O grafo k comprimento de
Um grafo G = (N, M) é dito de k comprimento de banda se existe uma rotulação banda possui claramente pontos
do conjunto de vértices h: N → { 1,2...,|N| } tal que se a aresta (u, v)  M então
em comum com o T-span.
|h(u)–h(v)| ≤ k.

Considerando o rótulo do vértice i representando o valor da função h(i), as Figuras 7.19(1) e (2) exibem grafos
de 3 e 2 comprimento de banda, respectivamente.

(1) k = 3 (2) k = 2

Figura 7.19 Exemplos de grafos de k comprimento de banda

Problema
p
Numerar os vértices de um dado grafo G de tal forma que a máxima diferença
entre dois vértices adjacentes seja mínima é um problema NP-árduo.
(Papadimitriou, 1976).

❂ Grafos k Comprimento de Banda – Dicas de Trabalhos

Saxe (1980) desenvolveu um algoritmo O(nk+1) para determinar se o comprimento de banda de um grafo é pelo menos k.
Gurari & Sauborough (1984) reduzem esse algoritmo a O(nk).

Determinar uma (k, d)-colora-


(k, d)-Coloração
ção em um grafo G é
Considerando k e d inteiros positivos, k ≥ 2d, uma (k, d)-coloração de um grafo
G = (N, M) é um mapeamento c:N → {1,2,...,k–1}, de forma que (xi, xj)  M, NP-Difícil
||c(x1)–c(x2)||k ≥ d, onde ||x||k = Mínimo{x, k–x}.

Número Star-Cromático *(G) O número star-cromático


é também denominado
O número star-cromático é definido como sendo a menor ordem de uma (k,d)- número cromático circular.
-coloração, sendo notado por χ*(G).
CAPÍTULO 7  Coloração e grafos perfeitos 433

Uma segunda forma de modularização da “distância” de restrição pode ser realizada através do uso de intei-
ros módulo k. Tal generalização é proposta por Vince (1988). Assim, a coloração clássica pode ser considerada
um caso particular com a “distância” d igual a 1. A Figura 7.20 exemplifica uma (4,2)-coloração de um grafo,
(d = 2 e k = 4). Nesse caso o conjunto de inteiros módulo 4 é Z4 = {0,1,2,3}. O invariante nesse caso chama-se nú-
mero star-cromático χ*(G) (Vince, 1988) sendo o ínfimo de k/d para todas as (k, d)-colorações de G.

Figura 7.20 (2,4)-coloração

❂ Número Star-Cromático – Dicas de Trabalhos

Vince (1988), Abbott & Zhou 1993) e Steffen & Zhu (1998) desenvolvem as propriedades da (k,d)-coloração e do núme-
ro star-cromático. Chang et al. (1999) discutem os relacionamentos entre T-colorações com diversos invariantes de um
grafo, incluindo o número star-cromático. Fertin et al. (2001) examinam os valores exatos do número star-cromático em
grafos como árvores, ciclos etc.

Conjectura
p
Um grafo G sempre tem uma coloração própria que possui no máximo ((G) + D(G)) + 1
cores? 2
434 Grafos

Coloração Hamiltoniana
Uma coloração hamiltoniana de um grafo conexo G de ordem n é uma designa-
ção de cores sobre os vértices de G (cores representadas por inteiros positivos) de
forma que: Encontrar uma coloração ha-
|c(u) – c(v)| + D(u, v) ≥ n – 1 miltoniana em um grafo G é
para qualquer par de vértices u e v, onde D(u, v) é o comprimento do caminho
mais longo
g entre u e v em G. NP-Difícil
Número Cromático Hamiltoniano Hc(G)
O número cromático hamiltoniano é definido como sendo a menor designação
de cores distintas de uma coloração hamiltoniana, sendo notado por Hc(G)).

As Figuras 7.21(2) e (3) exemplificam duas colorações hamiltonianas, c1 e c2, respectivamente, do grafo da
Figura 7.21(1). Dados um grafo G e uma coloração hamiltoniana c para G, hc(c) denota a cor de maior valor de-
signada em G pela coloração c. O menor valor hc(c) dentre todas as colorações hamiltonianas existentes para o
grafo G é dito número cromático hamiltoniano e denotado por Hc(G). Quando Hc(G) = 1 diz-se que o grafo G é
H-colorível. A Figura 7.21(4) exemplifica um grafo H-colorível.

(1) Grafo G (2) hc(c1) = 7 (3) hc(c2) = 6 (4) Hc(G) = 1

Figura 7.21 Coloração hamiltoniana

Teorema 7.10
Se G é um grafo conexo com ordem n ≥ 5 e não é um grafo estrela, então Hc(G)
≤ (n–2)2–1
(Chartrand et al., 2005a)

❂ Coloração Hamiltoniana – Dicas de Trabalhos

Chartrand et al. 2005(a) e 2005(b) estabelecem limites superior e inferior para o problema da coloração hamiltoniana.
Shen et al. (2008) calculam Hc(G) em grafos taturana e estrelas.
CAPÍTULO 7  Coloração e grafos perfeitos 435

Determinar uma (k,d)-colora-


(k,d) Coloração de Arestas
ção de arestas em um grafo G é
Uma (k,d)-coloração de arestas (k,d  , k ≥ 2d) de um grafo G é uma designação
c de cores {0,1,...,k–1} às arestas de G tal que d ≤ |c(ei ) – c(ej )| ≤ k – d, onde ei e ej
são arestas adjacentes. NP-Difícil

Índice Cromático Circular c⬘(G) Holyer (1981)


demonstra a NP-Completude do
O índice cromático circular é definido como χ⬘(G): problema de coloração de arestas.
Inf {k/d: em todas as (k,d)-colorações de arestas}, ou seja, o menor número de Nakano et al. (1995) apresentam
cores necessárias a uma coloração própria em arestas. algoritmos para o problema.

O índice cromático circular é definido como: χ⬘c = Inf {k/d: em todas as (k,d)-colorações de arestas}. As (k,1)-
-colorações de arestas correspondem à coloração de arestas clássica ou a uma k-coloração de arestas. A Figura
7.22(2) exemplifica uma (11,3)-coloração de arestas do grafo da Figura 7.22(1).

(1) Grafo G (2) (11,3)-coloração de G

Figura 7.22 Exemplo (k,d)-coloração

Uma coloração própria exige que cada cor seja atribuída a um conjunto diferente independente em G. As Figu-
ras 7.23(2)-(4) exemplificam a associação de uma coloração própria e os conjuntos independentes do grafo G da
Figura 7.23(1). Cada cor de uma coloração própria induz um conjunto independente em G.
436 Grafos

(1) Grafo G (2) 1o c. independente (3) 2o c. independente (4) 3o c. independente

Figura 7.23 Coloração própria

❂ Índice Cromático Circular – Dicas de Trabalhos

Hackmann & Kemnitz (2004) formalizam o invariante, e Nadolki (2007) calcula os índices para algumas classes de 2-gra-
fos. Kaiser et al. 2007 calculam o índice em grafos de grande cintura.

(k,l)-Coloração Uma (k,l)-coloração é uma


coloração imprópria quando
Uma (k,l)-coloração de vértices de um grafo G é uma partição do conjunto dos l  > 0. Encontrar uma coloração
vértices de G em k conjuntos independentes e l cliques.
com o menor valor de r para o
qual o grafo G é (k,l) colorível para
Número Cocromático cC(G) algum par com soma r é

O número cocromático é definido como χC(G) sendo o menor valor de r para NP-Difícil
o qual G é (k,l)-colorível para algum par (k,l) com soma r.
Alguns autores denominam o número z(G).
A Figura 7.24(2) exibe uma co-
coloração com r = 4 (três conjun-
Número Bicromático cB(G) tos independentes e uma clique)
enquanto da Figura 7.24(3) uma
O número bicromático é definido como χB(G) sendo o menor valor de r para o cocoloração com r = 3. O número
qual G é (k,l)-colorível para todo par (k,l) com soma r.
cocromático de G é três.

(1) Grafo G (2) 1a cocoloração de G (3) 2a cocoloração de G

Figura 7.24 Cocoloração de G


CAPÍTULO 7  Coloração e grafos perfeitos 437

❂ Cocoloração – Dicas de Trabalhos

A cocoloração foi introduzida por Lesniak & Straight (1977). Straight (1979) estuda o número cocromático e o genus de
um grafo e limites gerais para o invariante. Jørgense (1995) caracteriza certos grafos 3-cocromáticos. Fomin et al. (2002)
descrevem um algoritmo aproximativo para o cálculo do número cocromático. Zverovich (2000) define uma classe de
grafos cocromáticos perfeitos.

Subcoloração de Vértices A subcoloração de vértices foi


introduzida por
Uma subcoloração de vértices é uma designação de cores aos vértices de G tal que
Albertson et al. (1989).
cada classe de cor induz uma união disjunta de cliques.

Encontrar uma subcoloração de


vértices em um grafo G com o me-
Número Subcromático cS(G) nor número de cores possível é
O número subcromático é definido como χS(G) sendo o menor número de NP-Difícil
cores necessário para uma subcoloração em G.
Toda coloração própria e cocolora-
ção são também uma subcoloração.
As Figuras 7.25(2) e (3) mostram uma partição em cliques do grafo da Figura 7.25(1). Nesse caso o número
subcromático de G é 2. O número cromático de G é 3.

(1) Grafo G (2) 1a clique (3) 2a clique

Figura 7.25 Uma subcoloração de vértices de G

❂ Subcoloração de Vértices – Dicas de Trabalhos

Basicamente indicam-se os trabalhos de Albertson et al. (1989) e o de Gimbel & Hartman (2003).
438 Grafos

Subcoloração de Arestas
A Subcoloração de Arestas
Uma subcoloração de arestas é uma designação de cores às arestas de G que in-
foi introduzida por
duz uma partição disjunta de arestas M1,..., Mr tal que nenhuma delas possui P4
Fiala & Le (2007)
como um subgrafo induzido.

Índice Subcromático cs⬘(G)


NP-Difícil
O índice subcromático é definido como χS⬘(G) sendo o menor número de co-
res necessário para uma subcoloração de arestas em G.
Toda coloração própria de
arestas é também uma subcolo-
Partição em Estrelas ração. Claramente a partição de
arestas M1, ... Mr é uma r-subco-
Uma partição disjunta de arestas M1, ..., Mr de um grafo G é uma partição em loração se cada um de seus com-
estrelas se cada componente da partição é um grafo estrela. ponentes forma um triângulo ou
uma estrela, onde uma estrela
é um grafo completo bipartido
Índice Estrela c☼(G) K1,s. Consequentemente S⬘(G)
 ☼(G) para todos os grafos e
O índice estrela é definido como ☼(G) sendo o menor número r em que exis-
S⬘(G) = ☼(G) nos grafos que
te uma partição disjunta de arestas M1,..., Mr formada por estrelas.
são livres de triângulos (Fiala &
Le, 2007).
A Figura 7.26 exibe de (2)-(4) uma subcoloração de arestas composta por subgrafos C3 e K1,s do grafo 7.26(1) e
as Figuras 7.26(5)-(7) exibem uma cobertura em estrela.

(2) 1o conjunto (3) 2o conjunto (4) 3o conjunto

(1) Grafo G

(5) 1o conjunto (6) 2o conjunto (7) 3o conjunto

Figura 7.26 Subcoloração de arestas e cobertura em estrela


CAPÍTULO 7  Coloração e grafos perfeitos 439

Coloração Acíclica
Uma coloração acíclica é uma coloração de vértices própria em que cada 2-sub- A coloração acíclica
grafos cromáticos são acíclicos. foi introduzida por
Grünbaum (1973).

Definição alternativa: é uma coloração em que cada união disjunta de duas classes
de cores induz uma coleção de árvores.
Determinar a coloração acícli-
ca de um grafo G com o menor
Número Cromático Acíclico
A(G) número possível de cores é
O número cromático acíclico é definido como A(G) sendo o menor número de
cores necessário para uma coloração acíclica em G. NP-Difícil

A coloração acíclica é frequentemente associada a grafos embutidos em superfícies não planas. A Figura 7.27(3)
apresenta uma coloração não acíclica do grafo da Figura 7.27(1). A Figura 7.27(2) é apresentada para permitir a
comparação com uma coloração própria do grafo da Figura 7.27(1).

Teorema 7.11
A(G) ≤ 2 se somente se G é acíclico
A(G) ≤ 5 se G é um grafo planar
(Borodin, 1979)

(1) Grafo G (2) Coloração própria (3) Coloração não acíclica

Figura 7.27 Coloração não acíclica

As Figuras 7.28(2) exibem uma coloração acíclica, e as Figuras 7.28(2)-(4) exibem a partição em árvores bico-
loridas do grafo da Figura 7.28(1).
440 Grafos

(2) Coloração própria acíclica (3) Amarelo e azul (1 e 2)

(1) Grafo G

(4) Vermelho e amarelo (3 e 1) (4) Vermelho e azul (3 e 2)

Figura 7.28 Coloração acíclica

❂ Coloração Acíclica – Dicas de Trabalhos

Borodin (1979) introduz o conceito. Alon et al. (1991) apresenta um trabalho abrangente no tema. Fertin & Raspaud
(2008) e Varagani et al. (2009) estudam o problema em grafos com máximo grau 5 e 6, respectivamente.

7.3 Teorema das Quatro Cores


O Teorema das Quatro Cores diz que um mapa desenhado em um plano pode ser colorido utilizando-se, no má-
ximo, quatro cores, de forma que regiões que possuam uma fronteira comum recebam sempre cores distintas. O
teorema inicialmente foi sugerido como uma conjectura por Francis Guthrie, em 1853. O problema foi levado a De
Morgan, que, por sua vez, o levou ao conhecimento da comunidade científica. Cayley (1879) escreveu o primeiro
trabalho sobre a conjectura de Guthrie. Kempe (1879) apresentou uma prova que permaneceu aceita pela comu-
nidade até que Heawood (1860) apresentou um contraexemplo usando um mapa com 18 faces. A prova do teore-
ma permaneceu em aberto até que Appel & Haken (1977) apresentaram uma prova exaustiva com o auxílio de um
computador. Alguns membros da comunidade científica, entretanto, não aceitam a prova exibida, uma vez que se
faz necessária a análise exaustiva de um grande número de configurações. Recentemente, Robertson et al. (1997)
apresentaram uma outra prova para o Teorema das Quatro Cores. Gardner (1975) apresentou o mapa da Figura
CAPÍTULO 7  Coloração e grafos perfeitos 441

7.29 como um contraexemplo para o teorema. Contudo, Wagon (1998) mostrou que o mapa de Gardner podia
ser colorido com apenas 4 cores. Finalmente, em 2008 Gonthier demonstrou o teorema das quatro cores (Gon-
thier, 2008).
A coloração de mapas geográficos é essencialmente um problema
topológico. A coloração depende exclusivamente da vizinhança entre
os países ou regiões, não de suas formas, tamanhos ou posições. Sem
perda de generalidade é possível representar o problema da coloração
de mapas através de um grafo em que cada área é representada por
um vértice, e a adjacência entre dois países vizinhos por uma aresta
ligando os dois vértices correspondentes. Como as áreas dos mapas
estão localizadas no plano, não é possível que duas arestas do grafo se
cruzem. Assim qualquer modelo em grafos para o problema da colo-
ração de mapas é sempre um grafo planar. A Figura 7.30 exemplifica
a transformação de um mapa em um grafo planar.
Figura 7.29 Mapa de Gardner

(1) Um mapa (2) O grafo associado ao mapa

Figura 7.30 Grafo mapa

7.4 Tira de Möbius


Uma superfície não orientada obtida do corte e colagem de uma tira,
de modo que as duas extremidades sejam coladas invertidas, é deno-
minada Tira de Möbius. A Figura 7.31(1) exibe uma tira de Möbius.
Uma variante dessa superfície é denominada engrenagem de Möbius.
A tira de Möbius pode ser representada por um modelo em grafo
e sua representação implica a solução de uma 6-coloração. O grafo
da Figura 7.32(2) ilustra um modelo planar que representa a Tira de
Möbius, a Tira de Tietze.
As arestas do grafo da Figura 7.32(2) representam a adjacência
das regiões da tira. Observe que apenas as regiões 5 e 6 não são adja-
centes. É possível visualizar facilmente essa correspondência quando Figura 7.31 Tira de Möbius
as regiões são representadas por cores e soluciona-se um problema
de 6-coloração no grafo de Tietze.
442 Grafos

(1) Tira de Tietze

(2) Grafo de Tietze

Figura 7.32 O grafo de Tietze

A Figura 7.33(1) mostra que o grafo de Tietze é 3-colorível e a Figura 7.33(2) exibe a coloração que ressalta a
correspondência entre os vértices do grafo de Tietze e as regiões da tira de Tietze.

(1) O grafo de Tietze é 3-colorível (2) Uma 6-coloração correspondendo a tira

Figura 7.33 A coloração do grafo de Tietze

7.5 Algoritmo Exato para Coloração Própria – Zykov


Trata-se de um algoritmo exato para o problema da coloração. Considerando-se:

 v,w (G) o grafo obtido de G quando se inclui uma aresta ligando um par de vértices de G, v e w não adjacentes.
 v,w (G) o grafo obtido de G quando se contrai em um só vértice um par de vértices de G, v e w não adjacentes.

O algoritmo de Zykov consiste em chamar o procedimento Cor( ) apresentado no quadro Zykov, passando
como parâmetros o grafo G,  = n e nG = n.
CAPÍTULO 7  Coloração e grafos perfeitos 443

A Zykov
Ler G = (N,M)
Cor(G, χ, nG)
Se G é completo então χ ← min {χ, nG}
Senão
Sejam v,w vértices não adjacentes
χ1 ← Cor (av,w (G), χ, nG)
χ2 ← Cor (bv,w (G), χ, nG–1 )
χ ← min {χ1,χ2}
Fim_Se
Retorne(χ)

Exato
Quadro: Algoritmo Zykov

A Figura 7.34 exemplifica a aplicação do algoritmo do quadro Zykov ao grafo P4 (caminho com quatro vérti-
ces). A enumeração realizada pelo algoritmo de Zykov pode ser representada em uma árvore binária denominada
árvore de Zykov. A enumera-
ção proposta pela árvore de
Zykov da Figura 7.34 acres-
centa uma aresta à configura-
ção dos filhos à esquerda de
cada nó da árvore, e realiza
uma contração para os filhos à
direita. A cardinalidade do
menor grafo completo obtido
neste processo é 2, por um ca-
minho com uma adição de
aresta e duas contrações con-
secutivas.
O último nível da árvore de
enumeração do algoritmo de
Zykov contém cliques. Cada
clique representando uma co-
loração própria. A menor das
cliques representa a solução do
problema. No caso do exemplo
da Figura 7.34 é K2 mostrando
Figura 7.34 Desenvolvimento do algoritmo de Kykov que o grafo é dois colorível.

7.6 Algoritmo DSATUR para Coloração Própria


O algoritmo DSATUR foi proposto por Brélaz(1979) e é apresentado no quadro DSATUR. Trata-se de um
algoritmo no qual os vértices são coloridos iterativamente. O nome do algoritmo vem de grau de saturação
(Degree SATURation). Ao contrário de outros algoritmos construtivos, que inicialmente ordenam os vérti-
ces do grafo de acordo com seus graus e os colorem iterativamente seguindo a ordenação inicial (Welsh &
Powell, 1967), no DSATUR a ordem na qual os vértices são coloridos é construída durante o processamento.
A ideia consiste em colorir, a cada iteração, o vértice de maior grau de saturação que é calculado no passo
444 Grafos

7 do algoritmo do quadro DSATUR. Inicialmente, colore-se o vértice de maior grau no grafo (passos 3, 4 e 5
do algoritmo do quadro 4.4). Todos os vértices adjacentes ao vértice colorido passam a ter grau de satura-
ção igual a 1. Dentre estes, aquele que tiver o maior grau no subgrafo ainda não colorido é escolhido para
receber a cor 2. Esta situação de empate entre os graus de saturação é resolvida nas linhas 9 e 10. Em cada
iteração o vértice selecionado é colorido com a menor cor disponível para ser atribuída ao vértice (linhas
12, 13 e 14).

A DSATUR
1 Ler G = (N,M)
2 C1 = ... = Cn = 
3 i ← {r | d(xr) ≥ d(xs), xs, xs  N }
4 V ← N \{ xi }
5 C1 ← { xi }
6 Enquanto (V ≠ ) faça
7 Para todo v  { Γ(xi )  V } Calcular d_sat(v)
8 i ← { r | d_sat(xr) ≥ d_sat(xs), xr, xs  V }
9 Se empate então considerar só os vértices r de maior saturação fazendo
10 i ← { r | dV(xr) ≥ dV(xs), xr, xs  V }
11 Fim_se
12 k ← min { j | Γ(xi)  Cj =  }
13 Ck = Ck  { xi }
14 V ← V \ { xi }
15 Fim_enquanto

Heurístico
Quadro: Algoritmo DSATUR

A Figura 7.36, em suas duas partes, exemplifica uma execução do algoritmo para o grafo da Figura 7.35. Os
graus de saturação são mostrados entre parênteses acima dos nós. As cores são mostradas com o número sublinha-
do. A execução do algoritmo colore o grafo da Figura 7.35 com 4 cores.
CAPÍTULO 7  Coloração e grafos perfeitos 445

Figura 7.35 Grafo exemplo para a aplicação do algoritmo DSATUR

(1) Linha 3 d(x5) = d(x9)x5 é escolhido arbitrariamente. (2) Linha 7. d_sat(x1) = d_sat(x3) = d_sat(x4) = d_sat(x6) = d_
Linha 4. V ← N \ {x5}. sat(x7) = d_sat(x8) = 1 x1 é escolhido por ter o maior grau no grafo
Linha 5. C1 ← {x5} não colorido.
Linha 13. V ← N \ {x1}
Linha 14. C2 ← {x1}

(3) Linha 7. d_sat(x3) = d_sat(x4) = 2, x4 é escolhido por ser o de (4) Linha 7 – d_sat(x2) = d_sat(x3) = d_sat(x7) = 2 x2 é escolhido
maior grau. por ser o de maior grau.
Linha 13. V ← N \ {x4} Linha 13. V ← N \ { x2}
Linha 14. C3 ← {x4} Linha 14. C1 ← {x2}
446 Grafos

Figura 7.36 Desenvolvimento do algoritmo DSATUR – 1a parte

(5) Linha 7 – d_sat(x3) = d_sat(x7) = d_sat(x9) =2 x9 é escolhido (6) Linha 7 – d_sat(x3) = d_sat(x7) = d_sat(x10) = 2 x7 é esco-
por ser o de maior grau. lhido.
Linha 13. V ← N \ {x9} Linha 13. V ← N \ {x7}
Linha 14. C3 ← {x9} Linha 14. C2 ← {x7}

(7) Linha 7 – d_sat(x10) = 3 x10 é escolhido. (8) Nas próximas iterações x3 recebe a cor 3, x6 a cor 2 e x8 a 4,
Linha 13. V ← N \ {x10} chegando à coloração final acima.
Linha 14. C4 ← {x10}

Figura 7.36 Desenvolvimento do algoritmo DSATUR – 2a Parte

Teorema 7.12
O DSATUR é exato para grafos bipartidos.

(Brélaz, 1979)
CAPÍTULO 7  Coloração e grafos perfeitos 447

Complexidade DSATUR
O cálculo do grau de todos os vértices do grafo é O(n+m) se uma lista de adjacência é utilizada e O(n2) se a estrutura
de dados utilizada para representar o grafo é uma matriz de adjacência. Durante o cálculo do grau dos vértices o vér-
tice de maior grau é encontrado.
Na implementação do algoritmo DSATUR pode-se associar a cada vértice v do grafo um vetor de bits com n posições
onde o elemento na i-ésima posição do vetor é 1 se a cor i é utilizada para colorir, pelo menos, um vértice adjacente a
v e 0 caso contrário. Para encontrar a primeira cor disponível para colorir o vértice v, o algoritmo de percorrer o vetor
procurando o primeiro elemento 0. Portanto, o algoritmo verifica O(n) cores para os n vértices o que resulta em O(n2).
Cada vez que um vértice é colorido, a informação é atualizada para todos os seus adjacentes com complexidade total
O(n). Em cada iteração do laço principal do DSATUR o vértice de maior grau de saturação é escolhido. A atualização
do grau de saturação é feita junto com a atualização dos vetores de cores dos vértices adjacentes ao vértice colorida na
iteração. Correspondendo, no total, a O(n). Portanto, o tempo total do algoritmo DSATUR é O(n2).

Heurístico O(n2)

❂ DSATUR – Trabalhos no Tema

Turner (1988) apresenta uma implementação para o DSATUR em O(mlogn). Janczewski et al. (2001) apresentam o me-
nor grafo árduo colorível para o DSATUR. Um grafo G é definido como árduo colorível para um algoritmo A se qualquer
aplicação de A a G produz uma coloração não ótima (Hansen & Kuplinksy, 1990).

7.7 Algoritmos Exatos para a Coloração de Vértices


Tabela 01: Algoritmos exatos para o problema da coloração de vértices
Trabalho Técnica utilizada
Christofides (1971) Enumeração implícita*
Brown (1972) Enumeração implícita
Lawler (1976) Programação dinâmica
Brèlaz (1979) Modificação do algoritmo de Brown (1972) com a inclusão da heurística DSATUR*
Peemöler (1975) Correção do algoritmo de Brèlaz (1979)
Kubale & Jackowski
Correção dos algoritmos de Christofides (1971) e de Brèlaz (1979)
(1985)
Sager & Lin (1991) Modificação do algoritmo de Brèlaz (1979)
Sewell (1996) Modificação do algoritmo de Brèlaz (1979)
Glover et al. (1996) Enumeração implícita
Mehotra & Trick (1996) Programação linear com geração de colunas
Enumeração implícita com identificação de subgrafos críticos (modificação do método exato de Pee-
Herrmann & Hertz (2002)
möler (1975))
Eppstein (2003) Programação dinâmica segundo melhoria do algoritmo de Lawler (1976)
Byskov (2004) Programação dinâmica segundo melhoria do algoritmo de Lawler (1976)
Desrosiers et al. (2004) Enumeração implícita com identificação de subgrafos críticos
Diaz & Zabala (2006) Branch and cut
Lucet et al. (2006) Enumeração implícita com decomposição linear
448 Grafos

Segundo (2011) Enumeração implícita segundo modificação do algoritmo de Sewell (1996)


*O algoritmo falha para alguns casos, conforme exemplo apresentado no trabalho de Kubale & Jackowski (1985).

7.8 Outros Problemas Associados à Coloração

O Problema da Absorção Cromática


p
O problema da absorção cromática consiste em determinar uma cobertura de
vértice de menor cardinalidade possível e que possui uma cor de cada classe
de cores de uma coloração ótima de G.

O Problema da Extensão de uma Pré-coloração


p
Dados um grafo G = (N, M) com M  k, um subconjunto de vértices W 
N, e uma k-coloração própria ϕ de G(W)  G, G(W), o subgrafo gerado pelo
subconjunto de vértices W.
O problema da extensão de uma pré-coloração é: conhecida a coloração ϕ (com
k cores), essa coloração pode ser estendida como uma coloração própria do
grafo G? – mantidas as cores já atribuídas aos vértices de W e o número k de
cores usadas na pré-coloração.

Número de Pré-coloração
O Número de Pré-coloração é o número de cores de uma coloração própria do
subconjunto W de vértices de G.

Figura 7.37 Grafo G

A Figura 7.38(1) – (4) exemplificam pré-colorações do grafo G da Figura 7.37, onde os vértices azuis represen-
tam o conjunto W. Observe que as colorações das Figuras 7.38(1) e (2) não podem ser estendidas para o grafo G
exigindo a introdução de novas cores, ainda que a coloração 7.38(2) faça parte de uma coloração própria mínima,
e que o número de pré-coloração da coloração da Figura 7.38(1) seja igual ao número cromático do grafo. O pro-
blema da extensão de uma pré-cloração será abreviado como PreExt.
CAPÍTULO 7  Coloração e grafos perfeitos 449

(1) 1a pré-coloração de G(W) (2) 2a pré-coloração de G(W) (3) pré-coloração extensível

Figura 7.38 Exemplos de pré-colorações


O Problema da d-Pré-coloração p
Dado um número não negativo d inteiro, o subproblema d-PrExt é definido
como o problema em que as instâncias de PrExt são restritas aos grafos
parcialmente k-coloridos, onde o tamanho de cada classe da pré-coloração
é no máximo d.
Note que 0-PrExt é equivalente ao clássico número cromático, que objetiva
responder se χ(G) ≤ k. O caso em que o número de précoloração é 1 denomina-
se problema de monocoloração.

Determinar o número de absor-


Número de Absorção Cromático ção cromático em um grafo G
sem características especiais é
O número de absorção cromático é a menor cardinalidade possível de uma co-
bertura de vértices que possui uma cor de cada classe de cor de uma coloração
ótima de G. NP-Difícil
Chaluvaraju et al. (2011)

A Figura 7.39(2) exemplifica uma cobertura cromática ótima do grafo da Figura 7.39(1).

(1) Coloração ótima (2) Cobertura cromática ótima {1-2-3}


450 Grafos

(3) Coloração ótima (4) Cobertura ótima {2,6} (5) Cobertura cromática ótima {2,3,4,6}

Figura 7.39 Exemplos de coberturas cromáticas ótimas

7.9 Exemplos de Aplicações

1. O Jogo Sudoku

Como observado no Capítulo 5, o Sudoku pertence à classe dos puzzles paper-and-pencil, sendo, hoje, talvez
o mais difundido dessa classe. O Sudoku é desenvolvido em um tabuleiro grelha quadrado 9 x 9, que também
possui subdivisões. No caso, são células de tamanho 3 x 3. A grelha deve ser completamente preenchida por
números de 1 a 9. No preenchimento nunca dois números iguais podem ser escritos em uma mesma linha,
coluna ou no interior de cada uma das células 3 x 3. O primeiro passatempo desse tipo surgiu na edição de
maio de 1979 da revista Dell Pencil Puzzles and Word Games e, segundo difundido na literatura do tema, te-
ria sido criado pelo arquiteto Howard Garns, ainda que seja uma palavra registrada pela Nikoli Co. Ltd, do
Japão. Eliminando-se as configurações do jogo que podem ser reduzidas a outras por troca de linhas, colunas
e permutação (ou rotações) de células, existem 5.472.730.538 distintas formas de preencher um tabuleiro 9 x
9. Normalmente, o jogo é apresentado parcialmente preenchido, desafiando-se a jogadora completar a grade
com os números corretos. É fácil demonstrar que uma mesma grade completamente preenchida pode ser
obtida a partir de diversas e diferentes propostas parcialmente preenchidas. Também é fácil demonstrar que
um mesmo preenchimento parcial pode dar origem a mais de uma solução válida. É um problema em aberto
a determinação do número mínimo de posições que devem ser inicialmente preenchidas em um quadro, para
que se garanta que a solução do desafio seja única. A conjectura atual é que esse número seja 17. Consequen-
temente, determinar o número distinto de configurações iniciais minimais – de preenchimento mínimo e que
levam a uma única solução – é um problema ainda em aberto. A Figura 7.40 exibe um tabuleiro inicial do
Sudoku e sua solução associada.
CAPÍTULO 7  Coloração e grafos perfeitos 451

(1) Quadro inicial com 31 posições preenchidas (2) Solução do caso proposto

Figura 7.40: O Sudoku e sua solução

Considerando as cores da coloração representadas pelos números de 1 a 9, o problema do Sudoku consiste em


determinar uma 9-coloração própria no grafo S = (N, M), que é formado segundo as regras que são apresentadas
na Figura 7.41(2). A Figura 7.41(1) destaca que cada linha, coluna e célula é uma K9.

1. S = (N, M) possui |N| = 81.


2. Os vértices de S ocupam as células
do tabuleiro do Sudoku.
3. Toda linha é uma clique no grafo
S.
4. Toda coluna é uma clique no gra-
fo S.
5. Toda célula é uma clique no grafo
S.
6. Os vértices de S recebem a colora-
ção parcial que consta no desafio
do problema.
7. O problema consiste em determi-
nar uma 9-coloração própria em
S a partir das cores já designadas
aos vértices em S.
452 Grafos

(1) As cliques do grafo S (2) Formação das cliques do grafo S

Figura 7.41 A 9-coloração própria do tabuleiro Sudoku

2. O problema de Alocação de Frequências

As redes de comunicação sem fio – redes de telefonia celular, por exemplo – são hoje fundamentais para o
funcionamento da sociedade. Essas redes podem ser compostas por milhões de telefones móveis e dezenas
de estações de retransmissão. As estações de retransmissão cobrem vastas áreas, de forma que os celulares
sempre possuam uma estação ao seu alcance de utilização. Então, por constituição, nas redes celulares a área
de operação de estações vizinhas possuirá sempre regiões de alcance comum. Nessas regiões, e mesmo em
suas proximidades, um telefone somente poderá operar em frequências que possam garantir que o sinal será
livre de interferência. Para evitar a interferência, estações vizinhas devem operar em diferentes frequências.
Todavia a banda de frequências é um recurso extremamente escasso, de forma que é indispensável otimizar
sua distribuição entre as estações de retransmissão. O problema pode ser modelado através de um grafo
G = (N, M), onde o conjunto de vértices N representa as estações de retransmissão, e o conjunto de arestas
M representa a existência de possibilidade de interferência entre um par de estações de retransmissão. Con-
siderando que uma cor representa uma faixa da banda de comunicação, capaz de atender a demanda para a
qual a estação de retransmissão está sendo projetada, uma coloração própria mínima no grafo G representa
o menor número possível de diferentes faixas da banda de comunicação, que serão necessárias alocar para
manter o sistema celular livre de interferência. A Figura 7.42(1) exemplifica uma instância do problema e a
Figura 7.42(2) representa a solução onde as cores são os números vermelhos sublinhados. Aardal et al. (2001)
e Chiarandini & Stützle (2007) abordam modelos e algoritmos para problemas assemelhados.

(1) Uma distribuição de estações de retransmissão (2) O grafo associado e a solução

Figura 7.42 O problema de alocação de frequência

3. O Problema de Programação de Tarefas


CAPÍTULO 7  Coloração e grafos perfeitos 453

Considerando a existência de k máquinas e r produtos a serem processados nas máquinas de uma pequena fábrica,
com todos os processos com a mesma duração em tempo. Considerando que existe uma distribuição específica dos
processos sobre as máquinas disponíveis, ou seja, cada máquina realiza um processo diferente das demais máqui-
nas e sua atuação é indispensável para certo subconjunto dos produtos. Supondo que o objetivo seja distribuir os
trabalhos que são realizados sobre os produtos pelas máquinas, de forma a minimizar o tempo final da conclusão
do último trabalho da fábrica, esse problema pode ser modelado como um problema de coloração de arestas da
seguinte forma: constitui-se o grafo G = (N, M) associando-se um conjunto de vértices N1 às máquinas disponíveis.
Associa-se um conjunto de vértices N2 aos produtos disponíveis e N = N1  N2. Associa-se uma aresta para cada
par máquina x produto da demanda de fabricação. No grafo assim formado, o índice cromático é o tempo míni-
mo necessário ao processamento dos produtos da fábrica. A Figura 7.43(2) ilustra a solução do grafo proposto na
Figura 7.43(1).

(1) Um grafo de representação (2) Uma coloração de arestas associada

Figura 7.43 O problema de programação de tarefas

4. Otimização de Rotas Aéreas

Modernamente alguns espaços aéreos estão congestionados. Centenas de voos cruzam diariamente certas regiões
da Terra. Em situações como essas, é indispensável a adoção de mecanismo de proteção e segurança que indepen-
dam da atuação dos controladores de voo. Um mecanismo de segurança bastante simples e eficiente consiste em
determinar voos que possam se cruzar por algum motivo. Considerada uma certa janela de tempo, os voos que
possuem direções capazes de se cruzar são então designados a diferentes alturas de cruzeiro. Como o número de
voos e cruzamentos pode ser muito grande e a possibilidade de espaçamento em altura é restrita a uma faixa rela-
tivamente pequena, faz-se necessário otimizar a alocação de diferentes alturas de voo. A Figura 7.44(1) exemplifica
o cruzamento de algumas direções de voo em planta. A Figura 7.44(2) representa o grafo de interseções da Figura
7.44(1). Assim, para cada vértice de interseção do grafo da Figura 7.44(1) existirá uma aresta ligando os dois voos
em consideração no grafo da Figura 7.44(2). Observar que, por exemplo, que as direções dos voos V1 e V2 não
cruzam a direção do voo V6 dentro de uma janela de tempo razoável, apesar de geometricamente isso ocorrer. De
forma semelhante, isso significa que o voo V1 passa pela trilha do voo V5 em segurança – depois desse voo já estar
afastado do ponto de cruzamento o suficiente para ser considerado seguro um cruzamento entre os voos segundo
a mesma altura. Portanto, o cruzamento dos voos V1 e V5 não é representado no grafo da Figura 7.44(1) como um
vértice. No modelo sugerido na Figura 7.44(2), cada cor será associada a uma diferente altura do voo. Consequen-
temente, uma coloração própria no grafo da Figura 7.44(2) é a distribuição de um conjunto de diferentes alturas
de voo que garante, para todos, os cruzamentos contabilizados na janela de tempo, um cruzamento dos aviões em
diferentes alturas. A aplicação anteriormente descrita foi apresentada na literatura por Barnier & Brisset (2004).
454 Grafos

(1) Cruzamentos de voos na janela de tempo (2) Grafo de interseções e coloração de alturas

Figura 7.44 O problema da altura de voo

5. Otimização de Sistemas de Identificação Postal

Diariamente, milhares de cartas e pacotes devem ser identificados nos sistemas de triagem postal. Grande parte
desse serviço é realizada automaticamente, por equipamentos de leitura óptica. Uma das principais causas de re-
jeição de correspondência está relacionada com falhas na localização do CEP ou endereço. Isso se dá, via de regra,
por falha no estágio da leitura que realiza a segmentação física do layout da face da carta ou pacote. Não havendo a
identificação automática do CEP, a correspondência é tratada manualmente, acarretando lentidão e custos adicio-
nais. As técnicas tradicionais de segmentação encontram várias dificuldades no caso da correspondência:

1. A correspondência possui enorme variedade de tamanho, cor e textura do papel.


2. A imagem da correspondência pode resultar degradada por manchas, dobraduras riscos etc.
3. Existem restrições de tempo real para o processamento de cada correspondência.
4. Os blocos e caracteres não são nem distribuídos, nem espaçados de maneira uniforme no texto.
5. Existem elementos parasitários como logos, marcas, selos, decorações etc.
6. Existem informações em camadas sobrepostas como caracteres de fundo e notas manuscritas.

Ainda que os correios usem, em muitos casos, a intermediação de agentes de recepção e a adição de selos com
códigos de barras nas encomendas ou pacotes de entrega rápida, a coleta espontânea ainda é a maior fonte de en-
trada das correspondências.
Os métodos de segmentação analisam a imagem do envelope a fim de extrair o bloco de texto que contém o
endereço. Isso se dá através da descoberta da estrutura hierárquica dos componentes físicos do texto. A regiona-
lização do texto, através de características comuns e divergentes, representa a principal ferramenta para a classifi-
cação da correspondência. Quanto mais concisa e precisa for essa regionalização, melhor. Uma das fundamentais
questões do processo de solução, neste caso, será determinar o número mínimo de diferentes classes necessárias
para dividir o conjunto de objetos identificados na imagem da correspondência, de forma a agrupá-los em regiões
similares.
Representando cada um dos n componentes da correspondência identificado na imagem por ci, i = 1, 2..., n
como um vértice xi N e representando por uma aresta (xi, xj) M o fato de os componentes representados pelos
vértices xi e xj serem considerados suficientemente diferentes em suas características, então é possível formar um
grafo G = (N, M), onde uma coloração própria é uma partição do texto em blocos com informações não similares.
Então, a coloração mínima do grafo G representa a menor partição possível da imagem da correspondência em
blocos não similares. A Figura 7.45 exibe a face de uma carta típica, localizando os blocos de informações que
devem ser tratados.
CAPÍTULO 7  Coloração e grafos perfeitos 455

Aplicação descrita em
Gaceb et al., 2008.

Figura 7.45 Blocos de informações de uma carta

6. Otimização de Uso de Registros em Compiladores

Os compiladores são programas que traduzem o código fonte, normalmente escrito em uma linguagem de alto
nível, própria ao uso dos programadores, para uma linguagem que o computador possa entender (linguagem de
máquina). O compilador lê as instruções uma por vez, verificando sua sintaxe e convertendo a instrução para a
linguagem de máquina. Uma instrução é a operação elementar que o processador pode efetuar. As instruções são
armazenadas na memória principal, para serem tratadas pelo processador. O processador é um circuito eletrô-
nico cadenciado por um relógio interno. O processador é capaz de manipular as informações digitais. Quando o
processador executa as instruções, os dados são armazenados, temporariamente, em pequenas memórias rápidas
de 8, 16, 32 ou 64 bits, denominadas registros. Conforme o tipo do processador, o número global de registros pode
variar entre uma dezena e várias centenas.
Para melhorar o tempo de execução do código resultante da tradução do compilador, uma das técnicas
usadas consiste em otimizar a alocação de registros aos processadores. Os registros mais velozes são alocados
aos processadores mais rápidos disponíveis. Para solucionar esse problema, o compilador constrói um grafo
denominado interferência, onde os vértices são registros simbólicos e uma aresta conecta dois vértices, se eles
forem utilizados simultaneamente. Se o grafo de interferência puder ser colorido com k cores, então as variáveis
do programa poderão ser armazenadas em k registros. Essa aplicação foi relatada pela primeira vez na literatura
por Chaitin (1982).

7. Redes de Interação entre Proteínas

Diversas interações biológicas podem ser compreendidas quando analisadas através de redes. Uma destas redes é
conhecida como rede de interação proteína-proteína, onde cada proteína é um vértice da rede e existe uma aresta
entre dois vértices, caso a iteração entre as proteínas correspondentes seja conhecida. Diversos estudos buscam
encontrar tais iterações entre proteínas (Fields & Song, 1989; Uetz et al., 2000; Schwikowski et al., 2000; Stelzl et
al., 2005). Estas redes possuem propriedades interessantes que têm sido estudadas sob o ponto de vista da Teoria
dos Grafos (Balasundaram et al., 2005). Khor (2009) investiga a identificação de complexos de proteína como um
problema de coloração em grafos. A investigação visa descobrir subgrafos densos da rede. Para isto é utilizado o
algoritmo DSATUR.
456 Grafos

8. Teste de Circuito

Garey et al. (1976) apresentam uma aplicação de coloração de grafos para identificar curto-circuitos em placas
de circuito impresso. Neste problema, considera-se um número finito de pontos dispostos ao longo de uma grade
retangular finita, cujas linhas e colunas são igualmente espaçadas. Os pontos são unidos por linhas horizontais e
verticais chamadas de segmentos de grade. Um subconjunto P de segmentos de grade é definido com a proprie-
dade de que cada par de pontos de P possui um único caminho entre eles em P. Denomina-se P um padrão de
rede e cada componente conexo de P uma rede. A Figura 7.46(1) mostra um padrão de rede P com duas redes.
Os segmentos de grade de P correspondem às ligações condutoras de eletricidade, e os nós em uma rede corres-
pondem aos pontos de uma camada que foram projetados para serem eletricamente comuns. Durante o processo
de manufatura pode ocorrer uma falha e uma ligação condutora estranha ser incluída entre pontos que não de-
veriam ser eletricamente comuns. Esta ligação condutora estranha é chamada de curto-circuito e está ilustrada
na Figura 7.46(2) com uma reta pontilhada, ressaltando que um curto não precisa necessariamente estar sobre
um segmento da grade.

(1) Padrão de rede (2) Curto-circuito

Figura 7.46 Exemplo de padrão e curto-circuito em camadas de placas de circuito impresso

É necessário que se assegure que não existem curto-circuitos em uma camada de placa de circuito impresso. Uma
maneira óbvia de verificar a existência dos curtos é testar todos os pares de redes da camada. Dado um par de redes,
aplica-se um sinal elétrico em uma rede e verifica-se se o sinal é propagado para a outra rede. O número destes testes
é muito grande, o que acaba consumindo muito tempo. Um esquema de teste alternativo pode ser realizado se for
constatado que alguns pares de rede não precisam ser testados. Por exemplo, a Figura 7.47(1) mostra uma situação
onde as redes 1 e 3 não precisam ser testadas, uma vez que, para haver curto entre 1 e 3, é necessário que haja um
curto entre 1 e 2 e outro entre 2 e 3. Portanto, é suficiente testar os pares (1,2) e (2,3). Na situação ilustrada na Figura
7.47(2), é teoricamente possível a existência de um curto entre as redes 1 e 3, que não seria detectado apenas testando
os pares (1,2) e (2,3). Entretanto, na prática, pode ser considerado que o teste do par (1,3) é desnecessário.
Os pares que precisam ser testados são chamados críticos e os outros não críticos. Considerando VP = {T1,...,Tn}
o conjunto de redes no padrão P, VP pode particionado em subconjuntos S1,...,Sk tais que duas redes quaisquer Ti
e Tj em um subconjunto Sr, são não críticas, ou seja, não é necessário testar qualquer par de redes no conjunto Sr.
Agora suponha que as redes em Sr são feitas eletricamente comuns por um caminho condutor externo. Existem,
portanto, k “super-redes” que precisam ser testadas. Neste caso, um curto-circuito em uma camada existe se e
somente se duas super-redes são eletricamente comuns. Assim, o problema se reduz à realização de k testes, o que
pode reduzir muito o número de pares testados se k << n. O critério para considerar um par de redes crítico ou não
depende das propriedades físicas das camadas das placas de circuito impresso.
CAPÍTULO 7  Coloração e grafos perfeitos 457

(1) Exemplo 1 (2) Exemplo 2

Figura 7.47 Exemplos de pares de redes que não precisam ser testados

O problema é modelado por um grafo GP = (NP, MP), onde cada rede de P corresponde a um nó em NP e existe
uma aresta entre dois nós se o par de redes correspondente aos nós for crítico. O problema de particionar as re-
des em um número mínimo de conjuntos, tais que nenhum par de redes do mesmo conjunto seja eletricamente
comum, corresponde a encontrar uma coloração de GP com o mínimo número de cores, onde k corresponde ao
número cromático de GP.

9. Problemas de Robótica

Demange et al. (2009) descrevem diversas aplicações de robótica modeladas por problemas de coloração em gra-
fos. O problema geral consiste em um robô coletar itens de tamanhos diferentes, localizados em linha. O robô deve
coletar os itens em ordem decrescente de tamanho. Os itens coletados pelo robô em um trajeto na linha devem
ser empilhados, o que implica que itens maiores não podem ser colocados sobre itens menores. O robô tem uma
estação entrada/saída onde os itens são descarregados. Cada vez que o robô entra nesta estação é requerido um
tempo para o descarregamento, o que faz com que ele fique inativo durante este período. Portanto, o problema visa
minimizar o número de entradas do robô na estação entrada/saída. Dependendo do número destas estações e das
possibilidades de movimentação do robô na linha, diferentes problemas são definidos.
Os itens são rotulados de 1 a n em ordem decrescente de tamanho. Assume-se que todos os itens têm tamanhos di-
ferentes. A sequência de rótulos dos itens dispostos no corredor determinam uma permutação π do conjunto {1,2,...,n}.
O robô pode coletar diversos itens em seu trajeto ao longo do corredor, fazendo uma pilha com eles. Por restrições de
estabilidade um item j não pode ser colocado sobre um item i se j < i, isto é o item j é maior que i. Portanto, o robô coleta
itens em ordem crescente de seus rótulos. O problema consiste em coletar todos os itens do corredor, minimizando o
número de entradas na estação entrada/saída, satisfazendo a restrição quanto ao empilhamento dos itens.

Problema Unidirecional com uma Estação Entrada/Saída

Neste problema, existe uma única estação entrada/saída E, por onde o robô sai pela esquerda e entra pela direita.
Somente é permitido ao robô movimentar-se da esquerda para a direita dentro do corredor. O esquema é ilustrado
na Figura 7.48(1), onde os itens no corredor são mostrados em vermelho. A permutação dos rótulos induzida pela
disposição dos itens no corredor é π = {2,4,3,1}. O grafo de permutação relativo aos itens no corredor é mostrado
na Figura 7.48(2).
458 Grafos

(1) Esquema do corredor e estação E (2) Grafo de permutação relativo ao esquema 7.48(1)

Figura 7.48 Problema unidirecional

Em um trajeto no corredor o robô poderá coletar alguns itens em ordem crescente dos seus rótulos. Tais itens
formam um conjunto independente no grafo de permutação relativo à disposição dos itens no corredor. Portanto,
minimizar o número de viagens do robô de forma que todos os itens sejam coletados corresponde a encontrar uma
coloração mínima no grafo de permutação. No exemplo da Figura 7.48(1), como o número cromático do grafo é
3, o robô terá que fazer, no mínimo, 3 viagens para coletar todos os itens.

Problema Bidirecional com uma Estação Entrada/Saída

Neste problema é permitido ao robô fazer trajetos da esquerda para a direita e depois para E e trajetos da direita
para a esquerda e depois para E. Isso significa que, estando em E, o robô pode ir para a direita ou para a esquerda.
Não é permitida uma inversão da direção do movimento dentro corredor (sem passar por E). O esquema é ilus-
trado na Figura 7.49(1).

(1) Esquema do corredor e estação E (2) Partição do grafo em 1 clique e 1 conjunto independente

Figura 7.49 Problema bidirecional


Cada trajeto no corredor representa uma subsequência dos rótulos dos itens em ordem crescente (esquerda
para a direita) ou em ordem decrescente (direita para a esquerda). Minimizar o número de viagens do robô, neste
contexto, corresponde a encontrar o número cocromático do grafo de permutação, ou seja, uma partição do con-
junto de vértices do grafo em um número mínimo de conjuntos independentes e cliques. A Figura 7.49(2) mostra
uma partição do conjunto de vértices em 2 subconjuntos: {2} e {1,3,4}, os quais induzem um conjunto independen-
te e uma clique de tamanho 3, respectivamente. Portanto, o número mínimo de viagens do robô é 2.

Problema Bidirecional com uma Estação Entrada/Saída em cada Extremidade do Corredor

Neste problema existe uma estação entrada/saída em cada extremidade do corredor. O robô deve começar sua traje-
tória em uma extremidade, coletar os itens e descarregar na outra extremidade, possivelmente iniciando uma nova
jornada a partir da última extremidade em direção à primeira onde ele entrou no corredor, conforme Figura 7.50.
CAPÍTULO 7  Coloração e grafos perfeitos 459

Figura 7.50 Problema bidirecional com estação nas duas extremidades

Os itens coletados em um trajeto da esquerda para a direita (ordem crescente) correspondem aos elementos
de um conjunto estável no grafo. Os itens coletados em um trajeto da direita para a esquerda (ordem decrescente)
correspondem aos vértices de uma clique no grafo. Este problema é diferente do anterior, uma vez que os percursos
são feitos em direções alternadas, obrigatoriamente. Um percurso ida-e-volta é definido por um trajeto do robô
iniciado em uma estação entrada/saída, percorrendo o corredor até a outra estação e retornando à primeira. Os
itens coletados em um percurso ida-e-volta formam um grafo split. Pode-se assumir que depois da última viagem
o robô tenha, possivelmente, que retornar à estação onde ele iniciou. Portanto, o problema de minimizar o núme-
ro de percursos ida-e-volta do robô corresponde ao problema de coloração split, o qual consiste em particionar o
conjunto de vértices de um grafo no menor número de grafos split.
Considerando o grafo G da Figura 7.48(2), o número cromático split de G é 1, o que mostra que para o exemplo
em 1 percurso ida-e-volta o robô pode coletar todos os itens, retornando à base de onde ele partiu.

Coloração Split
Dado um grafo G, o problema da coloração split consiste em minimizar o má-
ximo valor dentre k e l tal que G possua uma (k,l)-coloração. O valor ótimo é
chamado de número cromático split. O problema é chamado de coloração split
porque visa particionar o conjunto V de vértices do grafo G no menor número

Problema Bidirecional com Estação Entrada/Saída na Extremidade Esquerda do Corredor

Neste problema existe uma estação entrada/saída à esquerda do corredor. Uma viagem do robô corresponde a
começar a trajetória na estação, ir até a outra extremidade do corredor e voltar para a estação para descarregar os
itens coletados. O esquema é ilustrado na Figura 7.51. Em cada viagem do robô a partir de E, serão coletados itens
que correspondem a um conjunto independente (subsequência crescente de rótulos na ida) e itens que correspon-
dem a uma clique (subsequência decrescente de rótulos na volta). Os itens coletados em uma viagem definem um
grafo threshold. Portanto, se todos os elementos podem ser coletados em z viagens, então existem z grafos threshold
que cobrem todos os vértices de G.
No exemplo investigado aqui, são necessárias duas viagens do robô para coletar todos os itens. Os grafos thre-
shold que cobrem os vértices do grafo G mostrado na Figura 7.49(2) são exibidos na Figura 7.51(2).
460 Grafos

(1) Esquema do corredor e estação E (2) Grafos threshold

Figura 7.51 Problema com estação entrada/saída à esquerda

Observação:
Demange et al. (2009) mostram que o problema unidirecional com uma estação entrada/saída pode modelar uma
versão simplificada do problema de carregamento de pallets descrito por Moonen & Spieksma (2006) e também
que os demais problemas podem modelar situações de manobras de trens.

Grafo Threshold
As propriedades abaixo são equivalentes para definir um grafo threshold G = (N,
M).

1. Existem pesos reais wi e um valor limite t tal que existe uma aresta de i para
j em G se e somente se wi + wj > t.
2. G pode ser construído sequencialmente a partir do grafo vazio pela adição
de um vértice v de cada vez, de forma que v é um vértice isolado ou v é um
vértice dominante (conectado a todos os que foram incluídos em G antes
dele).
3. G é unicamente determinado (como um grafo rotulado) pela sua sequência
de graus.
4. Qualquer subgrafo induzido por vértices de G possui ou um vértice isolado Figura 7.52 Grafo threshold
ou um vértice dominante.

A Figura 7.52 mostra um grafo threshold construído conforme a propriedade 2 da definição, na sequência de
inclusão indicada pelos rótulos dos vértices, onde os vértices vermelhos são os incluídos como dominantes.
A Figura 7.53 ilustra a partição de um grafo em grafos threshold. A Figura 7.53(1) mostra o grafo G, não
threshold. Os subgrafos induzidos de G pelos conjuntos de vértices {1,3,4,6,7} e {2,6} são grafos threshold. A cons-
trução destes grafos, segundo a propriedade 2 da definição, segue a ordem indicada nos números entre parênteses
com vértices dominantes mostrados em vermelho.
CAPÍTULO 7  Coloração e grafos perfeitos 461

(1) Grafo G (2) Partição de G em dois grafos threshold

Figura 7.53 Grafo threshold

7.10 Grafos Especiais nos Temas do Capítulo

Grafo Cordal
1. Um grafo é dito cordal se não possuir um ou mais ciclos livres com quatro
vértices ou mais
2. Um grafo é cordal se para cada ciclo de comprimento quatro ou mais, existe
pelo menos uma aresta ligando dois vértices não adjacentes no ciclo.

Grafo Triangularizado
Um grafo G não direcionado é dito triangularizado se, para cada ciclo de com-
primento maior que três, existe uma corda.

As Figuras 7.54(1) e (3) exibem grafos cordais e as Figuras 7.54(2) e (4) mostram grafos não cordais, destacando
o ciclo livre de comprimento quatro.
São exemplos de grafos cordais as árvores e os grafos completos.
Os grafos cordais são uma classe dos grafos perfeitos
Grafo cordais e triangularizados são sinônimos. A Figura 7.54 exemplifica o fato.

Teorema 7.13
Todo subgrafo induzido por vértices de um grafo cordal é também cordal.
462 Grafos

(1) Grafo cordal (2) Grafo não cordal

(3) Grafo cordal – triangularizado (4) Grafo não cordal

Figura 7.54 Grafos cordais e a triangularização

O grafo de Kneser foi apresentado


por Lovász (1978).
Grafo Ímpar
O(n) O grafo de Kneser é uma generali-
zação do grafo ímpar On, que cor-
Um grafo ímpar é um grafo que possui vértices dados pelos n–1 subconjuntos responde ao KG2n–1,n–1.
de {1...,2n–1} tal que existe uma aresta entre dois vértices se e somente se os
subconjuntos associados são disjuntos – Biggs (1993).

Grafo Kneser
KGn,k
Dados dois inteiros positivos n e k, o grafo de Kneser é denotado por KGn,k,
cujos vértices representam subconjuntos de cardinalidade k do conjunto de
{1,2,...,n}. Dois vértices são ligados se e somente se os respectivos subconjun-
tos associados aos vértices são disjuntos – Lovász (1978).

Grafo ímpar – O(2)

O grafo de Kneser possui O grafo ímpar possui


CAPÍTULO 7  Coloração e grafos perfeitos 463

A Figura 7.55(2) apresenta o grafo KG5,2. Nesse caso o


conjunto a ser considerado é {1,2,3,4,5} e os subconjuntos
são formados pela combinação dos n = 5 componentes, con-
forme exibido na tabela da Figura 7.55(1).

v1 = {1,2} v2 = {{1,3} v3 = {{1,4} v4 = {1,5} v5 = {2,3}

v6 = {2,4} v7 = {2,5} v8 = {3,4} v9 = {3,5} v10 = {4,5}

(1) Subconjunto de formação do grafo de Kneser (2) Grafo de Kneser

Figura 7.55 Grafo Kneser

Grafo Gracioso
São grafos numericamente rotulados em vértices e arestas de modo que os
vértices são rotulados com inteiros não negativos e a rotulação das arestas A Figura 7.56 exibe três grafos de
representa a diferença entre os rótulos de seus vértices. Os rótulos numéricos Harary com seus respectivos índi-
de cada vértice e de cada aresta é único no conjunto dos vértices e das arestas, ces associados.
respectivamente. Se a rotulação das arestas estiver entre 1 e m (número de
arestas do grafo), então o grafo é gracioso.

(1) Grafo gracioso 1 (2) Grafo gracioso 2 (3) Grafo gracioso 3

Figura 7.56 Grafos graciosos


464 Grafos

Genus
O genus de uma superfície é o maior número de curvas fechadas não intercep- A Figura 7.57(1)-(3) mostra os ge-
tantes que podem ser traçadas na superfície sem separá-la. nus 1, 2 e 3.

Um grafo imerso em R2 possui ge-


Genus de um Grafo nus igual a zero. A Figura 7.57(4)
O genus de um grafo G é o menor genus da superfície em que G pode ser imer- exemplifica um grafo de genus
so sem que suas arestas tenham que se cruzar. igual a zero.

(1) Genus 0 (2) Genus 1 (3) Genus 2 (4) Grafo com genus igual a zero

Figura 7.57 Genus de superfície e grafo

Teorema 7.14
Um grafo Kn possui genus:

Um grafo Km,n possui genus:

Harary, 1994, p. 118/119.

Grafo Meyniel
Grafo de Meyniel é todo ciclo ímpar com comprimento mínimo de 5 e pelo
menos duas cordas.

Grafo Slim
É o grafo obtido quando do grafo Meyniel são removidas todas as arestas indu-
zidas por um conjunto arbitrário de vértices.

1o grafo de Meyniel
CAPÍTULO 7  Coloração e grafos perfeitos 465

(1) 2o Grafo Meyniel (2) 3o Grafo Meyniel (3) Grafo Slim de (1)

Figura 7.58 Grafos Meyniel e Slim

Grafo Snark
Um grafo snark é um grafo cúbico com índice cromático igual a 4 e livre de
pontes.

A Figura 7.59 exemplifica três grafos snark – o flower snark possui 20 vértices. O Double Star possui 30 vértices
e o grafo de Tietze possui 12. O grafo de Petersen é um grafo Snark.

(1) Flower snark (2) Double star (3) Grafo de Tietze

Figura 7.59 Grafos snark

Segundo o índice cromático os grafos snark são grafos classe 2 – grafos cujo índice cromático é Δ+1. Os Snarks
são não planares e não hamiltonianos. O nome foi sugerido por Martin Gardner (1976).
466 Grafos

Grafo Outerplanar
Trata-se de um grafo que pode ser traçado sem que nenhuma aresta se cruze e todos
os seus vértices façam fronteira com a face infinita.

Grafo Série-Paralelo
Um grafo série-paralelo é obtido a partir de uma coleção de cópias de grafos constituí-
dos por dois vértices, denominados fonte s e sumidouro t, e de uma aresta ligando s a t
e através de três operações que podem ser repetidas recursivamente:

1. Ligar dois grafos da coleção de grafos agregando o vértice s de um dos grafos com o
vértice t de outro grafo da coleção, realizando a união disjunta do restante dos grafos.
2. Ligar dois grafos da coleção agregando seus vértices s e t e realizando a união disjunta
do restante dos grafos.
3. Incluir o grafo formado na coleção.

Todo grafo outerplanar é planar.

Todo grafo série-paralelo é planar.

Todo grafo outerplanar é subgrafo de um


grafo série-paralelo.

Os grafos série-paralelos podem ser reconhecidos


em tempo linear.
(Valdes, et al., 1982).

A Figura 7.60(1) exemplifica um grafo outerplanar, enquanto a Figura 7.60(2) exemplifica um grafo outerplanar
com o máximo número possível de arestas. A Figura 7.61 exemplifica a formação de um grafo série-paralelo.

(1) Grafo outerplanar (2) Grafo outerplanar maximal

Figura 7.60 Grafos outerplanares


CAPÍTULO 7  Coloração e grafos perfeitos 467

(1) União sequencial (2) União em paralelo

(3) União em paralelo

(4) União sequencial

Figura 7.61 Operações de formação dos grafos série-paralelo


468 Grafos

Grafo Interseção Um grafo intervalar pode ainda


ser entendido como um grafo in-
Um grafo de interseção é um grafo não direcionado formado de uma família terseção definido sobre uma famí-
de conjuntos Si , i = 0, 1, 2, ... pela criação de um vértice vi para cada conjunto lia de intervalos de R1 – a reta.
Si e pela ligação de dois vértices vi e vj através de uma aresta sempre que os dois A Figura 7.62(3) exemplifica o
conjuntos associados possuírem interseção diferente de vazia.
grafo intervalar associado aos in-
tervalos da Figura 7.62(1). A Figu-
E(G) = { {vi , vj} | Si  Sj ≠ } ra 7.62(2) mostra a relação entra as
arestas do grafo da Figura 7.62(4) e
Grafo Intervalar os intervalos da Figura 7.62(1). As
arestas associadas aparecem entre
Um grafo é dito intervalar se captura uma relação de interseção para algum parênteses.
conjunto de intervalos em uma linha ou G = (N, M) é um grafo intervalar se
A Figura 7.62(3) detalha as
existe uma associação para cada v  N a um dado intervalo Iv tal que Iv  Iu é não
vazio exatamente quando a aresta (u, v)  M. arestas (1,3) e (3,6), ressaltando sua
correspondência com as interse-
ções dos intervalos.

(1) Intervalos (2) Interseção entre intervalos

(3) Detalhamento das interseções 1-3-6 (4) Grafo intervalar

Figura 7.62 Exemplo da obtenção de um grafo intervalar

O teorema 7.12 correlaciona os grafos intervalares com grafos cordais, os quais são grafos que não contêm
grafos buraco.
CAPÍTULO 7  Coloração e grafos perfeitos 469

Teorema 7.15
Todo grafo intervalar é cordal.

Tripla Asteroidal
Um conjunto de vértices x, y, z de um grafo G é chamado de tripla asteroidal
se para qualquer par de vértices do conjunto existe um caminho ligando esses
vértices sem passar pelo terceiro componente do conjunto ou por qualquer
dos vértices a ele vizinhos.

Grafo Livre de Triplas Asteoidais


Um grafo G é dito livre de triplas asteroidais – G-ATF se não possuir qualquer
tripla asteroidal.
Figura 7.63 Grafo livre de triplas aste-
roidais

Uma condição necessária para um grafo ser intervalar é não possuir triplas aste- A Figura 7.64 exemplifica dois
roidais. grafos com triplas asteroidais.

(1) Tripla asteroidal 1 (2) Tripla asteroidal 2

Figura 7.64 Exemplo de triplas asteroidais

Teorema 7.16
Um grafo G é intervalar se e somente se é cordal e G-ATF.

Uma interessante interpretação possível para grafos cordais e grafos intervalares é:


470 Grafos

1. Um grafo intervalar é um grafo de interseção entre subcaminhos de um caminho.


2. Um grafo cordal é um grafo de interseção entre subárvores de uma árvore.

Considerando o caminho P e a árvore T das Figuras 7.65(1) e (2), respectivamente, observa-se que o grafo
intervalar da Figura 7.65(3) é obtido da interseção dos subcaminhos P1, P2, P3 e P4 de P, e da mesma forma o
grafo cordal da Figura 7.65(4) é obtido pela interseção de subárvores de T.

(1) Intervalos – caminhos (2) Árvore T e suas subárvores

(3) Grafo intervalar de (a) (4) Grafo cordal de (b)

Figura 7.65 Grafos interseção

7.11 Exercícios Resolvidos do Capítulo 7


CAPÍTULO 7  Coloração e grafos perfeitos 471

Exercício no 1:
Desenvolva um algoritmo heurístico para a solução do problema de coloração.
Exercício no 2:
Exiba um grafo com três colorações mínimas diferentes.
Exercício no 3:
Noé logo percebeu que sua política de alojar os animais em grandes espaços dificilmente funcionaria a con-
tento (vários animais da primeira onda não puderam ser alojados imediatamente – ver o exercício resolvido
número 2 do Capítulo 5). Entendeu que deveria construir na Arca vários espaços de pequeno tamanho para
isolar as diversas classes de animais incompatíveis. Então Noé foi colocado diante do problema de saber quan-
tas divisões seria necessário criar dentro da Arca para separar os animais à medida que chegavam. Conside-
rando que os espaços da Arca estão lotados, qual foi o número mínimo de divisões (baias) que Noé construiu
na Arca para alojar os animais da tabela de incompatibilidades que se segue?

Rato Cão Leão Boi Cobra Gato Porco Sabiá Corvo Zebra Asno Urso Pato
Tatu X X X X
Rato X X X
Cão X X X X X
Leão X X X X X
Boi X X X
Cobra X X X X X X X X
Gato X X X X
Porco X
Sabiá X X
Corvo
Zebra X
Asno X
Urso X
Pato
Exercício no 4:
Apresente uma coloração harmoniosa exata para o grafo da figura do exercício:

Grafo do exercício 4

Exercício no 5:
Apresente uma coloração completa para os grafos das figuras do exercício.
472 Grafos

Figura do exercício 5: grafo 1 Figura do exercício 5: grafo 2

Exercício no 6:
Determine o número T-cromático do grafo de interferência do exercício, considerando que o conjunto
T = {0,1,2,4}.

Figura do exercício 6: grafo de interferência

Exercício no 7:
Determine uma coloração acíclica para o grafo da figura do exercício.
CAPÍTULO 7  Coloração e grafos perfeitos 473

Grafo do exercício 7

Exercício no 8:
Prove que em qualquer grafo planar há pelo menos um vértice com grau menor ou igual a 5.
Exercício no 9:
Uma liga de escolas de samba com 10 escolas afiliadas possui uma grande área de oficinas e distribui uma
instalação para cada escola afiliada, de forma que seja possível as escolas montarem seus carros alegóricos e
estocarem fantasias dos destaques. Na área de desfile, cada uma das escolas recebe também da liga uma área
para ativar um posto de serviços e para apoio ao desfile. Visando organizar e caracterizar cada instalação das
escolas (oficinas e postos de serviços), a liga resolve que nenhuma oficina ou posto de serviço vizinho poderá
ter uma cor parecida. Obviamente, as oficinas e postos de apoio de cada escola devem ter a mesma cor – a
cor da escola. Os grafos do exercício exibem os esquemas de vizinhança das oficinas (grafo 1) e dos postos de
apoio (grafo 2).
1. Considerando que três escolas afiliadas possuem as mesmas cores básicas como representativa das agre-
miações (e não querem abrir mão de suas cores tradicionais), será possível distribuir as cores das insta-
lações de forma que não exista possibilidade de confusão nas cores das instalações vizinhas como a liga
deseja?
2. Se, além das três escolas anteriormente referidas, mais duas escolas exigirem manter a mesma variação de
cor para suas instalações (sendo essa segunda variante de cor diferente de qualquer outra cor de outras es-
colas do grupo da liga), seria possível atender a tradição das cinco escolas e, mesmo assim, manter a regra
da liga?
474 Grafos

Grafo 1 – Vizinhança nas oficinas Grafo 2 – Vizinhança na área de desfile

Exercício no 10:
Sabe-se que João, Antônio e Pedro torcem cada um para um diferente time de futebol, que pode ser Palmeiras,
Internacional e Grêmio. Sabe-se que João é médico. Pedro não visita nem recebe visita de torcedor do Grêmio.
João atende Pedro e Antônio quando eles ficam doentes. Antônio usa qualquer roupa, desde que não seja ver-
melha. Pedro não gosta de verde.
Exercício no 11:
Dada uma heurística H para um problema de minimização P, define-se a razão de desempenho r no pior caso
de H para P, como:

r = inf {valorH(I)/valorO(I), I, I é um exemplar de P}

onde valorH(I) denota o resultado obtido por H quando aplicado a I e valorO(I) denota o valor ótimo para I.
Uma heurística H é dita arbitrariamente ruim para um problema P de minimização, se existir um caso I de
P para o qual a razão de desempenho valorH(I)/valorO(I) tenda a infinito. Mostre que o algoritmo de Welsh e
Powell (exercício resolvido 1) é arbitrariamente ruim para o problema da coloração.
Exercício no 12:
Exiba uma 5-coloração completa para o grafo de Grötzsch (grafo na figura do exercício proposto 7.6).
Exercício no 13:
Mostre um grafo vértice-crítico que não é aresta-crítico.
Exercício no 14:
O exercício proposto é conhecido na literatura como o mistério de Berge. Seis professores entraram em uma
biblioteca exatamente no dia em que um tratado raro foi roubado. Todos entraram e saíram somente uma vez
na biblioteca. Se dois professores estavam na biblioteca simultaneamente, então pelo menos um deles viu o
outro. Os detetives interrogaram os professores e obtiveram as seguintes informações:
CAPÍTULO 7  Coloração e grafos perfeitos 475

Alberto disse que viu Beto e Eduardo.


Beto disse que viu Alberto e Ida.
Cristina disse que viu Dênis e Ida.
Dênis disse que viu Alberto e Ida.
Eduardo disse que viu Beto e Cristina.
Ida disse que viu Cristina e Eduardo.
Exercício no 15:
Determine os grafos interseção associados aos intervalos das figuras que se seguem:

1o conjunto de intervalos 2o conjunto de intervalos


476 Grafos

7.12 Exercícios Propostos do Capítulo 7

Teoria

7.1: Para o grafo formado pela remoção de uma resta de um grafo Kn, demonstre que o grafo restante possui
número cromático n–1.
7.2: Dois tipos especiais de coloração são definidos no presente exercício. A figura do exercício exemplifica cada
uma dessas diferentes colorações.

Forneça um exemplo de co-


Coloração Equilibrada loração equilibrada e coloração
2-múltipla para o grafo a seguir.
Uma coloração própria é dita equilibrada quando a cardinalidade do número
de vértices coloridos por qualquer cor difere no máximo de uma unidade.

Coloração t-múltipla
Uma coloração t-múltipla própria possui t distintas cores atribuídas a cada
vértice de forma que o conjunto das t-cores atribuídas à vértices adjacentes
sejam sempre disjuntos.

(1) Exemplo de uma coloração equilibrada (2) Exemplo de uma coloração 2-múltipla

7.3: Definindo um grafo unicamente colorível como:

Grafo Unicamente Colorível


Forneça dois exemplos de gra-
Um grafo é dito unicamente colorível quando admite somente uma coloração fos com mais de cinco vértices
própria. unicamente coloríveis.
CAPÍTULO 7  Coloração e grafos perfeitos 477

7.4: Mostre que duas cores são suficientes para colorir as regiões geradas pela interseção de linhas retas no plano,
de forma que se duas regiões possuem uma fronteira comum, então estas regiões são coloridas com cores
distintas.

7.5: Dado um grafo G com n vértices, mostre que


7.6: Dados os grafos do exercício, determine seus números e índices cromáticos.

Grafo de Grötzsch Grafo de Chvátal

7.7: É possível construir uma 6-coloração completa para este grafo?


7.8: Dado G um grafo conexo hamiltoniano, prove que o número cromático hamiltoniano de G é 1.
7.9: Dado G um grafo conexo de ordem n ≥ 3 e H um subgrafo de G de ordem i tal que H é Hamiltoniano, onde
mostre que hc(G) ≤ (n – 2)2 + 1 – 2(i–1)(i–2). (Referência: Nebeský, 2006).

Algoritmos

7.10: Construa um algoritmo que produza uma coloração mínima das arestas de qualquer árvore.
7.11: Para o grafo formado pela remoção de uma resta de um grafo Kn, desenvolva um algoritmo polinomial de
coloração.
7.12: O algoritmo abaixo para a determinação da condição de grafo cordal está correto? Justifique sua resposta.

A
Cordal_? (G)
Enquanto existir um vértice simplicial em G
faça
Determine o vértice simplicial de G
Remova o vértice simplicial
End
Se o grafo resultante é vazio então G é cordal

7.13: Mostre que sempre existe uma árvore de Zykov para um grafo G tal que (G) é obtido em um caminho onde
somente contrações de vértices ocorram.
478 Grafos

7.14: Prove ou dê um contraexemplo: A ordem k de um grafo completo obtido em um caminho constituído ape-
nas por operações de contração de vértices em uma árvore de Zykov é tal que (G) ≤ k ≤ (G).
7.15: Mostre que o algoritmo de Welsh e Powell (exercício resolvido 1) aplicado a um grafo G produz uma colo-
ração completa de G.
7.16: Prove que o algoritmo DSATUR é ótimo para grafos bipartidos, ou seja, o DSATUR sempre encontra uma
2-coloração para um grafo bipartido.
7.17: Prove ou dê um contraexemplo: o algoritmo de Welsh e Powell sempre produz uma coloração ótima para o
grafo de Grötzsch.

Modelos

7.18: Dez estudantes 1, 2, 3, 4, 5, 6, 7, 8, 9, e 10 realizam diversas e diferentes disciplinas em um certo curso. Pre-
sentemente existem ainda sete disciplinas que devem ser cursadas para dar direito ao certificado de conclu-
são. Nas disciplinas, os seguintes alunos de uma turma deverão ser matriculados:
Curso 1: 1, 2, 3,
Curso 2: 3, 4, 5,
Curso 3: 7, 8, 9, 10,
Curso 4: 1, 3, 5,
Curso 5: 2, 4, 6,
Curso 6: 8, 3, 10,
Curso 7: 1, 5, 6, 10.

Considere que os alunos pertencem a uma turma que deseja marcar sua formatura (supor que todos serão
aprovados em todas as disciplinas). Levando em conta que um aluno não pode cursar mais de uma discipli-
na simultaneamente e que cada disciplina toma um semestre de aulas, qual o tempo mínimo (em períodos
letivos) para a formatura da turma?
7.19: Em um departamento de ensino seis professores ministram os cursos A, B, C, D, E, F, G e H. Alguns profes-
sores dividem disciplinas, de forma que mais de um professor pode ministrar uma mesma disciplina. Nunca
um professor pode ministrar mais de uma disciplina (seção de disciplina).

A B C D E F G H Carga
Prof. 1 1 2 1 2 1 7
Prof. 2 2 1 2 1 1 7
Prof. 3 1 1 1 1 1 1 1 7
Prof. 4 1 5 1 7
Prof. 5 2 3 1 1 7
Prof. 6 3 1 4 1 1 7
Duração 1 período 1 período 1 período 1 período 1 período 1 período 1 período 1 período 1 período

Qual a duração mínima do curso (o tempo para a oferta de todas as disciplinas)?


7.20: Apresente uma coloração própria para as figuras que se seguem.
CAPÍTULO 7  Coloração e grafos perfeitos 479

Grade 1 Grade 2 Regiões do Paraná

Aplicações

7.21: Determine o número cromático dos grafos:


(1) K8.
(2) K4,6.
(3) O grafo de Petersen.
(4) O grafo cubo Q3.
(5) O grafo prisma P4.
(6) O grafo livro B5.
(7) O grafo gaiola (3,6).
(8) O grafo de Pappus.
(9) O grafo double-star.
Para os grafos do exercício anterior determine:
(1) o número acromático.
(2) uma coloração fraca.
(3) uma coloração de arestas.
(4) uma coloração completa.
(5) uma coloração hamiltoniana, considerando cada aresta com comprimento unitário.
7.22: O jogo Coloring Combat é jogado com dois jogadores no grafo que se segue. As regras do jogo são: cada
jogador deve colocar tantos discos quanto possa sobre os vértices do grafo do tabuleiro, de forma a atender
as regras de assentamento e obter a vitória. Os jogadores colocam os discos coloridos de forma alternada. O
primeiro jogador escolhe livremente a cor do disco e o vértice de assentamento. O segundo jogador escolhe
um vértice livre no grafo tabuleiro e uma cor compatível com uma construção de uma coloração própria
desse grafo. Se algum jogador não puder assentar algum disco na sua jogada, o outro jogador vence.
1. Em caso de nunca ocorrer a primeira situação, o vencedor é aquele que somar o maior número possível
de discos verdes assentados.
2. Caso haja empate no número de discos verdes, o vencedor é aquele que soma o maior número possível
de discos verdes e amarelos somados.
3. Caso persista o empate, o vencedor é aquele que soma o maior número possível de discos verdes, amare-
los e azuis.
480 Grafos

4. Persistindo o empate até todos os discos serem assentados, o vencedor é aquele que fizer a última jogada.

(1) Tabuleiro do Coloring Combat (2) Peças do jogo

1. Existe uma estratégia que leve sempre o primeiro jogador a vencer? Justifique sua resposta.
2. Existe uma estratégia que leve sempre o segundo jogador a vencer? Justifique sua resposta.

Desafios

7.23: Um grafo G é dito árduo-colorível para um algoritmo A se qualquer que seja a aplicação de A a G, A não
colore G com (G) cores. Encontre os menores grafos árduo-coloríveis para os algoritmos de Welsh e Powell
(exercício resolvido 1) e DSATUR.
7.24: O elemento químico natalônio possui três configurações moleculares básicas que estão representadas nas
Figuras (1)-(3) do exercício. Os vértices coloridos representam diferentes elementos químicos. Cristais de
natalônio são formados pela ligação de três configurações moleculares básicas, inclusive repetidas. As liga-
ções são realizadas entre diferentes elementos químicos. É necessário pelo menos duas ligações entre cada
configuração básica para que se crie um cristal planar, como exibe o exemplo de um cristal válido na Figura
(4). Determine quantos diferentes cristais podem ser criados, considerando que os cristais isomorfos repre-
sentam o mesmo tipo de cristal.

(1) Configuração 1 (2) Configuração 2 (3) Configuração 3


CAPÍTULO 7  Coloração e grafos perfeitos 481

(4) Um cristal válido formado

7.25: A Figura (1) do exercício exibe uma tomada de multiconexões. Os diferentes números distinguem diferentes
tipos de conexões. Conexões diferentes não podem ocupar posições vizinhas na tomada. A Figura (2) exibe
um plug universal construído de forma a ser adaptável a diferentes tipos de tomadas de multiconexão. Por
norma, cada diferente tipo de conexões da tomada possui o mesmo número de sua conexão associada no
plug. Como conexões de mesmo número não conseguem ser fisicamente acopladas, se houver uma conexão
do plug alinhada com uma conexão de mesmo número na tomada, o plug não poderá ser ligado a tomada.
Para ligar o plug na tomada o usuário deve empurrar para o interior do plug o terminal cujo número não
coincida com as cores da tomada, assim desconectando o terminal e permitindo o acoplamento. Por outro
lado, pelo menos uma ligação de cada cor existente no plug deve ser conectada com uma entrada na tomada
para que o plug possa ligar seu aparelho associado. O plug, por segurança, não funciona com mais de duas
ligações ativas em uma mesma coluna ou linha. Assim, quando duas ligações são ativas em uma dada colu-
na, nas demais somente uma ligação será permitida. O mesmo ocorre nas linhas. A Figura (3) exemplifica
uma ativação válida do plug. Para a tomada e plug das Figuras (1) e (2) do exercício, de quantas diferentes
maneiras será possível preparar o plug para que se conecte a tomada universal?

(3) Configuração válida de ativação do


(1) Tomada (2) Plug
plug

7.13 Referências
Aardal, K. I., Stan, Hoesel, S. P. M., Koster, A. M. C. A., Mannino, C., & Sassano, A. (2001). Models and Solution
Techniques for Frequency Assignment Problems, ZIB-Report 01-40. Konrad-Zuse Zentrum fur Informationstechnik.
Berlin.
Albertson, M. O., Jamison, R. E., Hedetniemi, S. T. & Locke, S. C. (1989). The subchromatic number of a graph.
Discrete Mathematics 74(1–2):33-49.
Abbott, H. L. & Zhou, B. (1993). The Star Chromatic Number of a Graph. Journal of Graph Theory 17:349-360.
Al-Omari, H. & Sabri, K. E. (2006). New Graph Coloring Algorithms. American Journal of Mathematics and Sta-
tistics 2(4):739-741.
482 Grafos

Alon, N. (1992). The Strong Chromatic Number of a Graph. Random Structures and Algorithms 3:1-7.
Alon, N., McDiarmid, C. & Reed. B. (1991). Acyclic Coloring of Graphs, Random Structures and Algorithms
2(3):277-288.
Alon, N. (1988). The Linear Arboricity of a Graph. Israel Journal of Mathematics 62:311–325.
Appel, K. & Haken, W. (1977). Every Planar Map is Four-colorable. Part I: Discharging. Illinois Journal of Mathe-
matics 21:429-490.
Avanthay, C., Hertz, A. & Zufferey, N. (2003). A Variable Neighborhood Search for Graph Coloring. European
Journal of Operational Research 151:379-388.
Balasundaram, B., Butenko, S. & Trukhanov, S. (2005) Novel approaches for analyzing biological networks. Journal
of Combinatorial Optimization 10(1):23-29.
Barnier, N. & Brisset, P. (2004). Graph Coloring for Air Traffic Flow Management. Annals of Operation Research
130:163-178.
Berge, C. (1963). Perfect graphs. Six Papers on Graph Theory. Calcutta: Indian Statistical Institute, 1-21.
Biggs, N. L. (1993). Algebraic Graph Theory, 2nd ed. Cambridge, England: Cambridge University Press, p. 161.
Borodin, O. V. (1979). On acyclic colorings of planar graphs. Discrete Mathematics 25:211-236.
Brèlaz, D. (1979). New methods to color the vertices of a graph. Communications of the ACM 22(4): 251-256.
Brown, J. R. (1972). Chromatic scheduling and the chromatic number problem. Management Science 19(4):456-
463.
Byskov, J. M. (2004). Enumerating maximal independent sets with applications to graph colouring. Operations
Research Letters 32(6):547-556.
Cairnie, N. & Edwards, K. (1997). Some Results on the Achromatic Number. Journal of Graph Theory 26:129-136.
Cayley, A. (1879). On the colourings of maps. Proc. Royal Geographical Society 1:259-261.
Chaitin, G. J. (1982). Register allocation and spilling via graph coloring. ACM SIGPLAN Notices 17(6):98-105.
Chaluvaraju, B., Kumar, C. N. & Rusagara, I. (2011). The vertex cover chromatic number of a graph. Canadian
Journal on Computing in Mathematics, Natural Sciences, Engineering and Medicine. 2(1):1-10.
Chang, G. J., Liu, D. D. F. & Zu, X. (1999). Distance Graphs and T-colorings. Journal of Combinatorial Theory. Series
B 75:259-269.
Chartrand, G., Nebeskyb, L. & Zhanga, P. (2005a). On Hamiltonian Colorings of Graphs. Discrete Mathematics
290(2/3):133-143.
Chartrand, G., Nebeský, L. & Zhang, P. (2005b). Hamiltonian Colorings of Graphs. Discrete Applied Mathematics
146(3):257-272.
Chaudhary, A. & Vishwanathan, S. (2001). Approximation Algorithms for the Achromatic Number. Journal of
Algorithms 41:404-416.
Chen, X. (2008). On the Adjacent Vertex Distinguishing Total Coloring Numbers of Graphs with =3. Discrete
Mathematics 308:4003-4007.
Chiarandini, M. & Stützle, T. (2007). Stochastic Local Search Algorithms for Graph Set T-colouring and Frequency
Assignment. Constraints 12(3):371-403.
Christofides, N. (1971). An algorithm for the chromatic number of a graph, The Computer Journal 14(1): 38-39.
Chudnovsky, M., Cornuéjols, G., Liu, X., Seymour, P. & Vušković, K. (2005). Recognizing Berge graphs. Combina-
torica 25(2):143-186.
Chudnovsky, M., Robertson, N., Seymour, P. D. & Thomas, R. (2006). The Strong Perfect Graph Theorem. Annals
of Mathematics 164:51-229.
Chvátal, V. (1973). Tough graphs and hamiltonian circuits. Discrete Math. 5:215-228.
Costa, D. (1993). On the use of some known methods for Tcolourings of graphs. Annals of Operations Research
41:343-358.
CAPÍTULO 8  Árvores de Steiner 483

capítulo
484 Grafos

8.1 A Árvore de Steiner em Grafos


O problema de Steiner é um problema de interconexão e foi proposto, na verdade, por Fermat, no século 17. O
problema, em sua versão simplificada, consistia em dados três pontos no plano euclidiano, encontrar um quarto
ponto tal que a soma das distâncias desse quarto ponto aos três originais fosse mínima. Atribui-se a Torricelli, por
volta de 1640, a solução do problema em sua primeira versão. A Figura 8.1(2) exemplifica a solução da instância da
Figura 8.2(1). As arestas da árvore solução devem formar ângulos de 120º.

(1) Instância com pontos no plano (2) Árvore de Steiner

Figura 8.1 Árvore de Steiner no plano

O problema de Steiner em grafos é derivado do problema euclidiano de Steiner e está formalizado no quadro
que se segue:

O Problema de Steiner em Grafos


p
O problema de Steiner em grafos não direcionados consiste em conectar, a
custo mínimo, um conjunto de vértices obrigatórios ou vértices terminais de G.

Árvore de Steiner
Encontrar uma árvore de
A estrutura em grafos que soluciona o problema de Steiner em um grafo G é
Steiner de custo mínimo em um
uma árvore de mesmo nome. Essa árvore possui o conjunto de vértices obriga-
tórios ou vértices terminais, denominado Χ, e talvez outros vértices que podem
grafo sem propriedades particu-
ajudar na ligação dos vértices de Χ, ditos vértices de Steiner, notados por Λ. lares é

NP-Difícil
Surpreendentemente, uma árvore de Steiner pode não possuir vértices de Stei-

O grafo G é ponderado em arestas e o custo da árvore é dado pelo somatório dos custos de suas arestas. A ár-
vore que soluciona o problema de Steiner deverá conter obrigatoriamente todos os vértices terminais e utilizar, se
necessário, como vértices de passagem, os demais vértices – denominados de vértices de Steiner. Apesar de não
ter sido Jacob Steiner o formulador do problema – ou mesmo seu solucionador – acabou sendo responsável por
sua divulgação no meio científico, o que lhe valeu o nome no problema. O caso geral consiste em determinar a
minimização do peso de ligação entre n pontos do plano, nessa versão envolvendo mais de um ponto de ligação.
CAPÍTULO 8  Árvores de Steiner 485

(1) Vértices terminais – em amarelo

(2) Vértices de Steiner – em azul

(3) Uma árvore de Steiner – com dois vértices de Steiner

Figura 8.2 Árvore de Steiner em grafos

A Figura 8.3(2) exibe uma árvore de Steiner do grafo da Figura 8.3(1). No exemplo Λ = {1,2,3} e Χ = {4,5}. Ob-
serve que a árvore de Steiner da Figura 8.3(2) não é mínima, uma vez que possui custo 6, enquanto a árvore forma-
da pelo caminho 4-1-2-5, com custo 3, é a árvore de Steiner mínima do grafo, conforme ilustrado na Figura 8.3(3).

(1) Grafo (2) Uma árvore de Steiner (3) Árvore de Steiner ótima

Figura 8.3 Árvore de Steiner em grafos


486 Grafos

Dado um grafo G = (N, M), se  = N, a árvore de Steiner de G será uma subárvore geradora mínima sobre o
conjunto N, podendo, então, ser determinada em tempo polinomial. As Figuras 8.4(2)-(5) exibem quatro árvores
de Steiner do grafo da Figura 8.4(1).

(1) Grafo G com Λ = {b,c,e,f,h,i} e Χ = {a,d,g}

(2) Árvore de Steiner de custo 6 (3) Árvore de Steiner de custo 8

(4) Árvore de Steiner de custo 11 (5) Árvore de Steiner de custo 13

Figura 8.4 Árvore de Steiner


CAPÍTULO 8  Árvores de Steiner 487

❂ Árvore de Steiner – Dicas de Trabalhos

No caso de |Χ| = 2 o problema se reduz ao caminho mais curto entre os dois vértices de Χ. Se Λ = {} a solução é uma ár-
vore geradora mínima, uma vez que, nesse caso, Χ = N. Quando Λ≠ e Χ > 2 o problema é NP-Difícil, como mostra Karp
(1972). Arora et al. (1992) demonstram que é APX-Difícil. Um trabalho abrangente no tema é encontrado em Goemans
& Myung (1993) e um algoritmo exato é apresentado por Koch & Martin (1998). Robins & Zelikovsky (2005) apresentam
um estudo de limites de aproximação de algoritmos heurísticos desenvolvidos para o problema.

As tabelas que se seguem resumem alguns dos principais algoritmos aproximativos para a solução da árvore de
Steiner clássica.

Tabela 8.2 Algoritmos aproximativos para a árvore geradora de Steiner em Grafos – 1a Parte

Trabalho Técnica utilizada


Takahashi & Matsuyama (1980) Heurísticas baseadas no caminho mais curto O(r.n2)
Takahashi & Matsuyama (1980) Heurísticas baseadas na árvore geradora mínima O(n2)
Aneja (1980) Heurísticas baseadas no problema de recobrimento O(n3)
Kou et al. (1981) Heurísticas baseadas no grafo de distâncias induzido O(r.n2)
Heurísticas baseadas no grafo de distâncias induzido O((n-r)q.r2 +n3) onde
Plesnik (1981)
0  q  r-2
Plesnik (1981) Heurísticas baseadas em contração de vértices O(n3)
Smith (1981) Heurísticas para o problema em norma euclidiana O(nlogn)
Rayward-Smith (1983) Heurísticas baseadas em distâncias médias O(n3)
Wong (1984) Heurísticas baseadas na relaxação do método dual crescente
Hesser et al. (1989) Algoritmos genéticos
Diané e Plesník (1991) Heurísticas híbridas O(n3)
Dowsland (1991) Hill-climbing e Simulated Annealing
Zelikovsky (1993) Baseadas em árvores k-restritas: razão de aproximação de 1,834
Berman & Ramaiyer (1994) Baseadas em árvores k-restritas: razão de aproximação de 1,734
Zelikovsky (1996) Baseadas em árvores k-restritas: razão de aproximação de 1,694
Promel & Steger (1997) Baseadas em árvores k-restritas: razão de aproximação de 1,667
Karpinsky & Zelikovsky (1997) Baseadas em árvores k-restritas: razão de aproximação de 1,644
Hougardy & Promel (1999) Baseadas em árvores k-restritas: razão de aproximação de 1,598
Robins e Zelikovsky (2000) Baseadas em árvores k-restritas: razão de aproximação de 1,550
Williamson et al. (1993) Método primal-dual
Esbensen (1995) Algoritmos genéticos
Agrawal et al. (1995) Heurística baseada na união de subárvores
488 Grafos

Tabela 8.2 Algoritmos aproximativos para a árvore geradora de steiner em grafos – 2a Parte

Trabalho Técnica utilizada


Verhoeven et al. (1996) Busca local
Wade & Rayward-Smith (1997) Busca local
Charikar et al. (1998) Algoritmos para o problema de Steiner em grafos direcionados
Gendreau et al. (1999) Busca tabu
Duin e Voss (1999) Método guloso com estratégia de memória – Branch-and-Greedy
Gröpl et al. (2000) Resenha de algoritmos heurísticos
Martins et al. (2000) GRASP
Ribeiro & Souza (2000) Busca tabu
Polzin & Daneshmand (2001) Algoritmo heurístico
Satoh et al. (2002) Algoritmo heurístico
Ribeiro et al. (2002) GRASP com perturbações
Di Fatta et al. (2003) Algoritmo genético paralelo
Grewal et al. (2004) Técnica Shrubbery
Chakraverty et al. (2006) Directed Convergence Heuristic
Luyet et al. (2007) Algoritmo em colônia de formigas
Hu et al. (2010) Busca local
Bouchachia, & Prossegger (2012) Algoritmos híbrido em colônia de formigas

Árvore de Steiner com Conexão Estocástica Encontrar uma árvore de


Steiner com conexão estocás-
É a árvore que maximiza a probabilidade de manter conectado o conjunto Χ de tica máxima em um grafo sem
vértices. propriedades particulares é

Em consequência da definição dessa árvore, suas arestas possuem custos estocás- NP-Difícil

Os problemas em redes de comunicações possuem várias situações em que a manutenção da efetividade de


uma ligação é uma variável aleatória. As arestas que realizam as ligações do sistema possuem uma probabilidade de
não completar ou sustentar corretamente a conexão. Uma árvore de Steiner com conexões estocásticas representa
adequadamente diversas dessas situações reais.

❂ AS com Conexão Est. – Dicas de Trabalhos

Valiant (1979) demonstra que esse problema de otimização é NP-Difícil. Richey et al.(1985) apresentam solução eficiente
para um caso particular em comunicações.
CAPÍTULO 8  Árvores de Steiner 489

Árvore de Steiner com Norma Linear Encontrar uma árvore de


Steiner com norma linear míni-
Trata-se de um caso particular do problema de Steiner no plano. No caso as ma em um grafo sem proprieda-
coordenadas dos pontos a serem ligados, além de pertencerem a um plano e des particulares é
atender a norma euclidiana geral, atendem a norma euclidiana Lr chamada li-
near, ou seja:
NP-Difícil

Simplificadamente, o presente problema corresponde à solução do problema de Steiner em 2 e sobre um grafo


grade. A Figura 8.5 exemplifica a arquitetura do problema, ressaltando os vértices terminais em amarelo. As Figu-
ras 8.5(2) e (3) exibem duas soluções para o problema proposto no grafo da Figura 8.5(1).

(1) Grafo grade e terminais (2) Uma solução do problema

(3) Uma segunda solução do problema (4) Uma solução com obstáculo

Figura 8.5 Árvore de Steiner com norma linear

Aplicações da AS Norma Linear


2
Variantes desse problema possuem muitas aplicações no projeto de circuitos VLSI e consistem em considerar obstáculos
no grafo grade para o desenvolvimento das ligações (Alpert et al., 2001), exemplificado na Figura 8.5(4), ou áreas que
devem ser evitadas em virtude de congestionamento (Bozorgzadeh et al., 2001). Ganley & Cohoon (1996) examinam o
problema quando definido em uma grade de valor inteiro.
490 Grafos

❂ AS com Norma Linear – Dicas de Trabalhos

O problema foi formulado pela primeira vez por Hanna (1966). Garey & Johnson (1977) demonstram que o problema
de decisão é NP-Difícil. Várias aplicações práticas foram sugeridas por Smith & Liebman (1979), bem como uma heu-
rística O(|Χ|4) para sua solução. Smith et al. (1980) apresentam uma heurística O(|Χ| log Χ|) baseada nos diagramas de
Voronoi e em grafos duais. Richard (1989) propõe uma heurística baseado no trabalho de Hanna (1966), originalmente
O(n2), utilizando a geometria da norma linear para encontrar uma implementação O(nlogn) para essa mesma heurís-
tica. Komlos & Shing (1985) desenvolvem duas heurísticas em abordagem probabilística, dividindo os pontos de pas-
sagem obrigatórios em pequenos conjuntos para aplicar, nessas instâncias reduzidas, o procedimento exato de Dreyfus
& Wagner (1971). Posteriormente os subgrafos obtidos são combinados e ampliados para chegar a uma solução glo-
bal. Beasley (1992) sugere uma heurística para o problema em R2. Chen (2002) sugere um modelo probabilístico para
a solução do problema bastante promissor.

Encontrar o subgrafo k-conexo


O Problema de Steiner Generalizado mínimo que contém um conjunto
p
de  de vértices em um grafo sem
Consiste em determinar um subgrafo k-conexo em G tal que tenha mínimo propriedades particulares é
custo e contenha um conjunto Χ de vértices.
NP-Difícil
Esse caso é de ampla aplicação em redes de suprimento de eletricidade, água ou comunicações. Nesses proble-
mas deseja-se, via de regra, o atendimento a dois objetivos conflitantes:
 Minimizar os custos totais de operação e instalação.
 Maximizar a confiabilidade da operação.
A confiabilidade é frequentemente expressa através de graus de conectividade. É visível que a solução de conexão
baseada em uma estrutura de árvore tem grande vulnerabilidade em relação à desconexão estocástica. Cada falha
ocorrida nas ligações ou nos vértices de uma árvore de conexão implicará a interrupção do serviço em pelo menos
uma parte da rede. Nesse caso, uma solução de equilíbrio seria buscar um k-grau de conexidade mínimo a ser garan-
tido na estrutura de ligação. A solução do problema de Steiner generalizado não é obrigatoriamente uma árvore.

(1) Grafo G Χ = {1,3,5}

(2) Subgrafo com k = 2 (3) Subgrafo com k = 3


CAPÍTULO 8  Árvores de Steiner 491

Figura 8.6 Steiner generalizado

❂ Steiner Generalizado – Dicas de Trabalhos

Winter (1987) formaliza o problema de Steiner Generalizado baseado em um trabalho não publicado de Krarup. West-
brook & Yan (1993) desenvolvem algoritmos gulosos para o problema. Agrawal et al. (1995) apresentam um algoritmo
O(mlogm) com fator de aproximação de 2(1-1/n) para o problema off-line. Goemans & Williamson (1995) igualmente
apresentam algoritmos polinomiais aproximativos clássicos para o problema. Mais recentemente Jain (2001) relata um
algoritmo aproximativo fator 2, Melkonian (2007) um novo algoritmo primal-dual e Berman et al. (2008) um algoritmo
aproximativo fator 3/2. Awerbuch et al. (1996) tratam da versão on-line (ou dinâmica) do problema.

Encontrar a árvore de Steiner em


estrela de menor custo em um grafo
sem propriedades particulares é
O Problema de Steiner em Estrela
p
Consiste em determinar uma árvore de Steiner considerando-se que os vértices
NP-Difícil
de Steiner possuem custos associados e os vértices terminais não podem se
ligar entre si na árvore.
O problema é definido por
Khuller & Zhu (2002).

Árvore Steiner com Coleta de Bônus Encontrar a árvore de Steiner


p
com bônus em um grafo sem pro-
O problema do coletor de prêmios em árvore de Steiner ou Prize Collecting priedades particulares é
Steiner Tree Problem consiste em determinar uma subárvore em G que mini-
mize a soma dos pesos das arestas da subárvore e o total de bônus acumulados
nos vértices de G não pertencentes à subárvore.
NP-Difícil

A Figura 8.7 exemplifica um grafo com bônus nos vértices representado por um traço inferior no número e
uma árvore que minimiza a função que subtrai os bônus da árvore da soma dos custos das arestas. A Figura 8.7(2)
exemplifica o fato de que a árvore de Steiner com coleta de prêmios pode não ser geradora. Adicionalmente, existe
a variante dos problemas onde um vértice raiz v0 deve pertencer à subárvore e a variante onde não existe a defini-
ção de um vértice raiz.

(1) Grafo G (2) Árvore de valor (6+1+1) + (2) = 10


492 Grafos

Figura 8.7 Árvore Steiner com prêmios ou bônus


A árvore de Steiner com coleta de prêmios ou bônus engloba uma série de modelos em que existem custos as-
sociados às arestas e prêmios associados aos vértices do grafo. Essa classe de problemas é também descrita na lite-
ratura inglesa pela sigla Steiner Tree Problems with Profits (STPP). Dados um grafo G = (N,M), custos ce associados
as arestas e M e prêmios v associados aos nós v N, e T = (N⬘, M⬘) uma subárvore de G, os quatro diferentes
problemas relacionados a seguir podem ser definidos (Goemans & Williamson 1995, 1997).

Modelos de Steiner com Coleta de Bônus

1. Problema de Minimização de Goemans e Williamson


Referido na literatura como problema da árvore de Steiner com coleta de prêmios. Desenvolve uma árvore de Steiner
T com o objetivo de:

NP-Difícil

2. Net Worth Maximization Problem


Conhecido em português como problema de maximização do prêmio.
Desenvolve uma árvore de Steiner T com o objetivo de:

NP-Difícil

3. Problema do Valor Mínimo para a Coleta de Bônus


O bônus também é conhecido por cota. Dado um valor Q > 0, busca encontrar uma árvore de Steiner T que minimi-
ze sujeito a:

NP-Difícil

4. Problema da Coleta com Orçamento


Dado um valor B > 0, busca encontrar uma árvore de Steiner T que maximize sujeito a:

NP-Difícil
CAPÍTULO 8  Árvores de Steiner 493

Na Figura 8.8(2) é apresentada a árvore geradora mínima para o grafo apresentado na Figura 8.8(1). Na
Figura 8.8(3) verifica-se que uma árvore não geradora obtém uma solução para a árvore de Steiner com coleta
de prêmios com custo inferior à obtida pela AGM. Como a AGM conecta todos os vértices, a parcela da soma
do bônus na função objetivo do problema pode acabar neutralizada pelos custos de algumas ligações muito
caras. Todavia, o valor associado à solução obtida pela AGM constitui um limite superior para a solução desse
problema de minimização.

Observe que a árvore de


Steiner com bônus não possui
um conjunto de vértices de
Steiner. Nela todos os vértices
podem ser considerados
terminais e não necessitam ser
obrigatoriamente visitados.

(1) Grafo exemplo

(2) AGM – custo 16 (3) Árvore de Steiner com custo 13

Figura 8.8 Árvores de Steiner com coleta de prêmios

As Figuras 8.9(2), (3) e (4) exibem três diferentes árvores de coleta de prêmios. Os custos das árvores são ob-
tidos pela soma dos pesos das arestas mais o peso dos vértices fora da árvore. Por exemplo, o custo da árvore da
Figura 8.9(2) é obtido pela soma dos pesos das arestas 2+2+1+1+1 e mais as penalidades dos vértices 6 e 8 (que
penalizam a solução por deixarem de ser atendidos), que são, respectivamente, 1 e 3.
494 Grafos

(1) Grafo exemplo (2) Árvore de custo 11

(3) Árvore de custo 12 (4) Árvore de custo 18

Figura 8.9 Árvores de Steiner com bônus

Os problemas de árvores de Steiner com prêmios anteriormente descritos são problemas de otimização e clas-
sificados como NP-difíceis. As redes de distribuição de gás são exemplos de aplicações reais para as árvores de
Steiner com bônus. Na construção de redes de gás é muitas vezes necessário, além de atender os pontos de de-
manda através de uma estrutura de distribuição, escolher quais pontos são mais atrativos para o investimento da
construção da rede. Aos pontos de demanda são associados valores de atração que vão penalizar a função objetivo
de minimização em caso de não atendimento. Na aplicação descrita o custo de implantação da rede é considerado
no valor das arestas.
Nas Figuras 8.10(1) e (2) as arestas ressaltadas em vermelho apresentam exemplos de árvores de Steiner com
restrição de orçamento, cujo objetivo é maximizar o recolhimento de bônus nos vértices, restrito ao orçamento
previsto para a construção da rede.

(1) Orçamento = 6 – retorno 23 (2) Orçamento = 8 – retorno 29

Figura 8.10 Árvores de Steiner com orçamento


CAPÍTULO 8  Árvores de Steiner 495

❂ Steiner Coleta de Bônus – Dicas de Trabalhos

O problema da árvore de Steiner com coleta de prêmios é descrito no trabalho de Johnson et al. (2000). Algoritmos exatos
são apresentados por Ljubic´ et al. (2006) e Cunha et al. (2008). Algoritmos baseados em técnicas meta-heurísticas são
apresentados por Canuto et al. (2001), Klau et al. (2004) e Goldbarg et al. (2008).

Árvore de Steiner Terminal


É a árvore de menor custo em G que liga todos os vértices do conjunto Χ,contudo
exige-se que os vértices de Χ sejam sempre folhas da árvore.

Encontrar as árvores de Stei-


Árvore de Steiner Terminal Parcial ner descritas ao lado, segundo o
Considerando um conjunto R  Χ, é a árvore de menor custo em G que liga menor custo em um grafo sem
todos os vértices do conjunto Χ, exigindo-se adicionalmente que os vértices em propriedades particulares é
R sejam sempre folhas da árvore.

NP-Difícil
k-Árvore de Steiner
Considerando um grafo G = (N, M), a k-árvore de Steiner é a árvore de menor
custo em G que possui pelo menos k vértices terminais. O problema da árvore de Stei-
(Fischettietal.,1994) ner com seleção interna se reduz
ao problema da árvore de Steiner
quando R´ = .
Árvore de Steiner com Seleção Interna
Considerando um conjunto R´  R  M com |R-R´| ≥ 2, a árvore de Steiner com
seleção interna é a árvore T de menor custo em G, interconectando os vértices
de R tal que nenhuma folha em T pertença ao conjunto R´.
(Li et al., 2010)

O problema da árvore de Steiner terminal é também denominado na literatura Full Steiner Tree Problem ou
Terminal Steiner Tree Problem, e representa um caso particular do problema de Steiner. A Figura 8.11(2) exem-
plifica uma árvore de Steiner terminal sobre o grafo da Figura 8.11(1).
O problema da árvore Steiner terminal parcial foi sugerido por Hsieh & Gao (2007) para a solução de um caso
de aplicação no projeto de circuitos VLSI. No roteamento de circuitos VLSI alguns pontos de conexão do circuito,
que correspondem a pinos ou a gates, devem ser ligados exclusivamente a um vértice de Steiner (vértice de passa-
gem do circuito) visando aumentar sua confiabilidade de funcionamento. Outros vértices de demanda do circuito
podem ser utilizados também como vértices de passagem e permitir uma eventual redução dos custos de ligação.
Hsieh & PI (2008) apresentam um algoritmo aproximativo para esse problema.
As Figuras 8.12(3) e (4) exemplificam o caso em relação ao grafo da Figura 8.12(1), onde o conjunto R = {8,6}
representa os vértices que são de demanda (devem ser visitados), todavia não podem ser utilizados como vértices
de passagem no circuito (são vértices terminais da árvore solução).
496 Grafos

(1) Grafo G Χ = {1,6,8} (2) Árvore Steiner terminal

(3) 1a Árvore Steiner terminal parcial (4) 2a Árvore Steiner terminal parcial – R = {8,6}

Figura 8.11 Árvores de Steiner terminal e terminal parcial

Árvore de Steiner de k-Tamanho


Quando uma árvore de Steiner não possui todos os vértices de demanda localiza- Encontrar a árvore de Steiner
dos nas folhas ela pode ser dividida em subárvores disjuntas em arestas em que de k-tamanho de menor custo,
esses vértices aparecem como folhas. As subárvores resultantes dessa decomposi- quando k 4, em um grafo sem
ção são denominadas componentes completas da árvore. Uma árvore de Steiner de propriedades particulares, é
k-tamanho é aquela em que todas as componentes completas da árvore pos-
suem pelo menos o tamanho k. k representa o número de vértices terminais em
cada componente. NP-Difícil
(Chen et al., 2004; Du, 1995)

A Figura 8.12 exemplifica a decomposição de uma árvore de Steiner em uma árvore de 2-tamanho.
CAPÍTULO 8  Árvores de Steiner 497

(1) Árvore Steiner clássica (2) Decomposição em 2-tamanho

Figura 8.12 Árvores de Steiner 2-tamanho

❂ Classes Steiner Terminal – Dicas de Trabalhos

Steiner Terminal
Os trabalhos de Lin & Xue (2002) e Lu et al. (2003) abordam o problema. Drake & Hougardy (2004) sugerem algoritmos
aproximativos de excelente desempenho. Martinez et al. (2007) e Chen (2011) sugerem algoritmos aproximativos com
fatores de aproximação conhecidos.

Steiner Terminal Parcial


Hsieh & Gao (2007) e Hsieh & PI (2008) abordam o problema e propõem algoritmos de solução.

k-Árvore de Steiner
Fischetti et al. (1994) estudam a complexidade desse problema. Arora & Karakostas (2000) reportam um algoritmo de
solução. Li & Wang (2002) estudam o problema no plano euclideano.

Árvore de Steiner com Seleção Interna


Hsieh & Yang (2007) apresentam algoritmos aproximativos. Li et al. (2010) reportam algoritmo com a melhor r-aproximação
conhecida.

Árvore de Steiner de k-Tamanho


Du (1995) e Borchers & Du (1997) apresentam estudos sobre limites para o problema. Karpinski & Zelikovsky (1997)
algoritmos de solução.

Encontrar a árvore de Steiner


em grupamentos de menor cus-
Árvore de Steiner em Grupamentos to em um grafo sem proprieda-
Dado um grafo conexo que contém grupos disjuntos de vértices, uma árvore de des particulares é
Steiner em grupamentos é aquela que contém pelo menos um vértice de cada

NP-Difícil
498 Grafos

A Figura 8.13 exemplifica o formato de uma árvore de Steiner em grupamentos. Os vértices 3, 5 e 12 foram
escolhidos para a visita em seus respectivos grupamentos.

(1) Grafo G com três grupamentos

(2) Árvore conectando um vértice em cada grupamento

Figura 8.13 Árvores de Steiner em grupamentos


CAPÍTULO 8  Árvores de Steiner 499

❂ Steiner em Grupamentos – Dicas de Trabalhos

Os vértices escolhidos nos grupos são denominados nós terminais. O problema foi abordado por Reich & Widmayer (1989) e
pode ser considerado uma generalização do problema de cobertura mínima (minimum set covering problem). Bateman et al.
(1997) abordam uma aplicação do problema na operação de terminais portuários e sugerem um algoritmo aproximativo bastante
eficiente. Even & Kortsarz (2002) desenvolvem um algoritmo com razão polilogarítmica de aproximação igual aO(log S · log m/log
log S), onde m representa o número de grupos e S o número de terminais. Drake & Hougardy (2004) sugerem algoritmos
de alta performance. Chekuri et al. (2006) apresentam um algoritmo que alcança, em tempo polinomial, o limite de onde
ε > 0 é uma constante e gi representa o número de vértices de cada grupo i.

Encontrar a árvore de Steiner


AS Enraizada com Penalidades enraizada com penalidades tal
que possua o mínimo custo em
A árvore de Steiner enraizada é uma árvore de Steiner que possui obrigatoria-
um grafo sem propriedades parti-
mente um dado vértice v. A árvore liga o vértice raiz ao conjunto de vértices de
demanda Χ. Além do custo das arestas, essa árvore possui um custo associado
culares é
aos vértices Λ, de forma que é penalizada a cada inclusão de um vértice de Stei-
ner.
NP-Difícil

A função objetivo do problema da AS enraizada com penalidades visa minimizar o somatório das arestas da
árvore e das penalidades. A Figura 8.15 exibe uma árvore do grafo da Figura 8.16.

Figura 8.15 Grafo exemplo, X = {1,3,9,12}


500 Grafos

Observa-se na Figura 8.15 que os vértices de demanda coloridos de amarelo não possuem penalidades associa-
das. O enraizamento se dá no vértice 1. O custo da árvore da Figura 8.16 é 9 unidades.

Figura 8.16 Árvores de Steiner enraizada com penalidades

AS com Mínimo Número de Vért. de Steiner


Encontrar as árvores de Stei-
É a árvore de Steiner que, dados os conjuntos Χ e Λ de vértices, possui o menor ner de menor custo com míni-
número de vértices pertencentes a Λ. mo número de vértices ou de
mínimo número de vértices li-
mitada em custos em um grafo
AS Mínimo Vértice Limitada em Custo qualquer
É a árvore de Steiner que, dados os conjuntos Χ e Λ de vértices, possui o menor
número de vértices pertencentes a Λ, dado que seu custo não ultrapasse deter-
minado valor fixo d. NP-Difícil

A variante de mínimo custo com número mínimo de vértices foi proposta por Makki & Pissinou (1992), que
também sugerem um algoritmo aproximativo de solução. A variante de mínimo número de vértices de Steiner e
limitada em custo é abordada, dentre outros, por Chen et al., (2000) e Lin & Xue (1999). Essas variantes são apli-
cadas na otimização de circuitos VLSI.
A Figura 8.17(1) apresenta um exemplo para o problema da árvore de Steiner de mínimo custo e mínimo nú-
mero de vértices de Steiner. Na Figura 8.17(1), uma árvore de Steiner de valor 12 é desenvolvida com três vértices
de Steiner. Na Figura 8.17(2), uma segunda árvore, também de custo 12, utiliza somente um vértice de Steiner.
As Figuras 8.17(3), (4) e (5) exibem três árvores de Steiner com diferentes custos e número de vértices de Steiner.
Caso o limite d seja igual a 13, por exemplo, seria possível desenvolver uma árvore de Steiner com somente dois vérti-
ces, como mostra a Figura 8.17(4). Se o limite for 14, já será possível reduzir esse número de vértices para somente 1.
CAPÍTULO 8  Árvores de Steiner 501

(1) Árvore de Steiner com 3 vértices de Steiner (2) Árvore Steiner com número mínimo de vértices de Steiner

(3) 3 vértices de Steiner e custo 12 (4) 2 vértices de Steiner e custo 13 (5) 1 vértice de Steiner e custo 14

Figura 8.17 Árvores de Steiner com número mínimo de vértices de Steiner

Árvore de Steiner com Mínimo Diâmetro


Encontrar a árvore de Stei-
É a árvore de Steiner que possui o menor diâmetro possível.
ner com diâmetros limitados é
(Vik et al., 2008)

Árvore de Steiner com Diâmetro Limitado NP-Difícil


É a árvore de Steiner mínima com um diâmetro limitado em um valor máximo
L.
(Kortsarz & Peleg, 1999; Aggarwal et al., 2004) A árvore de Steiner com mí-
nimo diâmetro pode permitir
AS Terminal com Diâmetro Limitado solução

É a árvore de Steiner terminal mínima com um diâmetro limitado em um va-


lor máximo L. Polinomial
(Ding et al., 2010)
502 Grafos

Árvore de Steiner com Mínimo Grau


É a árvore de Steiner que possui o menor grau possível.
(Fürer & Raghavachari, 1994)

Encontrar a árvore de Steiner


Árvore de Steiner Limitada em Grau com mínimo grau, ou limitada
É a árvore de Steiner mínima com um grau máximo limitado em um valor L.
em grau, ou de mínimo diâmetro
(Bauer & Varma, 1996) limitada em grau é

Árvore de Steiner Mínimo Diâmetro Lim Grau NP-Difícil


É a árvore de Steiner de mínimo diâmetro com um grau máximo limitado em
um valor L.
(Vik et al., 2008)

Árvore de Steiner em Grafo Direcionado Encontrar uma árvore de


Steiner de custo mínimo em
Considerando um grafo direcionado G = (V, E) com custo c(e) atribuído a cada um grafo direcionado é
aresta e  E, um vértice raiz r  V e um conjunto de terminais T  V\{r }, o pro-
blema da árvore de Steiner em grafo direcionado pode ser interior ou exterior.
No problema interior, o objetivo consiste em encontrar um subgrafo H  G de NP-Difícil
custo mínimo tal que H tenha um caminho direcionado de todo vértice ter-
minal t  T para o vértice raiz r. No problema exterior, deseja-se encontrar um
subgrafo H  G de custo mínimo tal que H tenha um caminho direcionado de O critério de custo mínimo
implica que H seja acíclico.

A Figura 8.18 ilustra o conceito de árvore de Steiner interior e exterior em grafos direcionados. Considerando
o vértice r o vértice raiz e T = {x2, x3}, a Figura 8.18(2) mostra a árvore de Steiner interior do grafo direcionado
mostrado na Figura 8.18(1). De modo análogo, a Figura 8.18(4) mostra a árvore de Steiner exterior do grafo da
Figura 8.18(3).

(1) Grafo direcionado G1 (2) Árvore Steiner interior do grafo G1

Figura 8.18 Árvores de Steiner em grafos direcionados – 1a Parte


CAPÍTULO 8  Árvores de Steiner 503

(3) Grafo direcionado G2 (4) Árvore Steiner exterior do grafo G2

Figura 8.18 Árvores de Steiner em grafos direcionados – 2a Parte

O problema da floresta de Steiner em grafo direcionado é uma generalização do problema da árvore de Steiner
em grafo direcionado.

Floresta de Steiner em Grafo Direcionado Encontrar uma floresta de Steiner


de custo mínimo em um grafo di-
Neste problema é dado um grafo direcionado G = (V, E) com um custo c(e) atri- recionado é
buído a cada aresta e  E e um conjunto D de demandas D  V × V. O objetivo
é encontrar um conjunto de arestas E’  E de custo mínimo tal que G’ = (V, E’)
tenha um caminho direcionado s-t para todo par de demanda (s, t)  D. NP-Difícil

No caso geral, G’ pode conter ciclos direcionados. Entretanto, na definição para grafos não direcionados, o sub-
grafo solução do problema é acíclico, ou seja, G’ é uma floresta. Por causa disto, o problema é chamado de floresta
de Steiner em grafo direcionado.
A Figura 8.19 ilustra o conceito de floresta de Steiner em grafos direcionados. Considerando D = {(x2,x4), (x4,x6),
(x6,x2), (x1,x5)}, a Figura 8.19(2) mostra a floresta de Steiner do grafo direcionado mostrado na Figura 8.19(1).

(1) Grafo direcionado G3 (2) Floresta de Steiner do grafo G3

Figura 8.19 Floresta de Steiner em grafos direcionados


504 Grafos

Os problemas da árvore de Steiner e da floresta de Steiner em grafos direcionados são NP-difíceis (Garey &
Johnson, 1979).

O Problema dos Caminhos Disjuntos em Arestas


p
Dados um grafo direcionado G = (V, E0  E), onde E0  E = , e dois conjuntos de vértices S, T,
denomina-se o grafo direcionado G1 = (V, E0) grafo inicial e as arestas de E arestas aumentantes.
Pode-se assumir que as arestas de E0 possuem custo 0 e que as arestas de E têm custos positivos.
O conjunto S  T pode não conter todos os vértices de V. Os vértices em V \(S  T) são chamados
de vértices opcionais. Diz-se que um grafo direcionado é (S,T)-conexo se existe um caminho
direcionado st conectando todos os vértices s  S e t  T. O objetivo do problema é encontrar um
subconjunto de arestas E’  E de custo mínimo tal que o grafo direcionado G = (V, E0  E’) seja

Quando existe a restrição de que todas as arestas em E sejam direcionadas de um vértice s S para um vérti-
ce t T, o problema é chamado de problema de (S, T)-conectividade padrão. Se todas as arestas aumentantes
estão direcionadas para um vértice t T, sem restrições quanto às origens, então tem-se um problema de (S, T)-
-conectividade relaxado. Na versão mais geral, quando não existem restrições quanto às arestas aumentantes, o
problema é denominado problema de (S, T)-conectividade irrestrito.
Os problemas de encontrar os subgrafos geradores k-vértice e k-aresta conexos em grafos direcionados estão
intimamente relacionados aos problemas de (S, T)-conectividade. Quando k = 1, tanto o problema de conectivida-
de em vértices como o de conectividade em arestas correspondem ao problema da determinação do subgrafo for-
temente conexo de mínimo custo, o qual é NP-difícil, conforme demonstrado no trabalho de Gabow et al. (2009).
O problema da (S, T)-conectividade padrão é pelo menos tão difícil quanto o problema do subgrafo fortemente
conexo de mínimo custo (Laekhanukit, 2010).
Problemas de árvores e florestas de Steiner em grafos direcionados estão relacionados aos problemas de
(S, T)-conectividade. Os problemas (S, T)-conectividade relaxado e irrestrito são, respectivamente, pelo menos
tão difíceis quanto os problemas da árvore de Steiner e da floresta de Steiner em grafos direcionados, os quais são
NP-difíceis (Garey & Johnson, 1979).

8.2 Algoritmos Heurísticos para Árvore de Steiner


Diversos algoritmos heurísticos são apresentados para o problema da árvore de Steiner. O presente item descreverá
quatro algoritmos.

Algoritmo da Árvore Geradora Mínima com Poda

Talvez o algoritmo da árvore geradora mínima com poda seja o mais simples e intuitivo algoritmo para aproximar
a solução da árvore de Steiner. Baseia-se na construção de uma árvore geradora mínima e na subsequente poda das
folhas que não pertencem ao conjunto dos vértices de demanda. O quadro AGM poda resume o algoritmo.

A AGM Poda
Ler G = (N, M) e Χ //o conjunto dos vértices de demanda //
Determine a árvore geradora mínima de G
Enquanto existir nó follha v  Χ, remova v

Heurístico
CAPÍTULO 8  Árvores de Steiner 505

As Figuras 8.21(1) e (2) exemplificam a aplicação do algoritmo no grafo da Figura 8.20. A Figura 8.21(1) mostra
o primeiro passo do algoritmo correspondente à construção da árvore geradora mínima do grafo da Figura 8.20. A
Figura 8.21(2) resume dois passos de poda de folhas, onde são removidos os vértices 13, 12 e 11, exibindo a árvore
resultante da sequência de passos do algoritmo. Takahashi & Matsuyama (1980) mostram que a árvore resultante
é, no pior caso, |N|–| |+1 vezes pior que a solução ótima do problema.

Figura 8.20 Grafo com Χ = { 1,4,9,14 }

(2) Poda das folhas correspondentes aos vértices 12 e 13 e


(1) Árvore geradora mínima
posteriormente ao vértice 11

Figura 8.21 Aplicação do algoritmo da AGM com poda


506 Grafos

Complexidade AGM Poda


A poda dos vértices extremos de uma árvore é um procedimento que pode ser feito em O(k). Como a poda pode ser
repetida na ordem dos vértices, resulta em, no máximo, O(n) operações. Portanto, a complexidade do algoritmo é
limita pela construção daAGM – O(mlogm).

Heurístico O(mlogm)

Algoritmo Kou, Markowsky e Berman (1981)

O algoritmo KMB foi proposto por Kou et al. (1981). Trata-se de um algoritmo guloso desenvolvido sobre o grafo
completo dos caminhos mais curtos entre todos os pares de vértices de G. O algoritmo é formalizado no quadro KMB.

A KMB
Ler G = (N, M) e Χ o conjunto dos nós de demanda
Determine os caminhos mais curtos entre todos os pares de vértices de Χ
Determine G(S) – um grafo completo ligando os vértices terminais, onde as arestas representam os caminhos mais
curtos entre os vértices
Determine a AGM de G(S)
Substitua as arestas da AGM pelos caminhos
Exiba a árvore resultante

Heurístico
As Figuras 8.22(1)-(3) exemplificam o funcionamento do algoritmo KMB para o grafo da Figura 8.18, onde
Χ = {1, 4, 9, 14}. A Figura 8.22(1) mostra o caminho mais curto entre os vértices 1 e 9. O grafo dos caminhos mais
curtos entre os vértices de demanda é apresentado na Figura 8.22(2) – Caminhos. Imediatamente a seguir é repre-
sentada a AGM realizada no grafo dos caminhos. A árvore resultante da aplicação do algoritmo é apresentada na
Figura 8.22(3), em vermelho.

Caminhos

Árvore
(1) Caminho mais curto (1-9) = 17 (2) AGM (3) Caminho resultante da AGM em G

Figura 8.22 Aplicação do algoritmo KMB


CAPÍTULO 8  Árvores de Steiner 507

Complexidade KMB
A complexidade é determinada pelo cálculo do caminho mais curto entre os vértices de Χ, o que pode ser realizado em
O(|Χ| n2) passos.

Heurístico O(n2)

No pior caso, a solução do algoritmo KMB se afasta em 2(1– 1/|Χ|) da solução ótima (Candia-Véjar & Bravo-
-Azlán, 2006).

Algoritmo das Arborescências

O princípio que guia o algoritmo das arborescências é buscar uma árvore mínima de conexão através da união de
árvores mínimas enraizadas em cada vértice de demanda. As folhas e arborescências que se tornam desnecessárias
após a conexão são eliminadas. O algoritmo está descrito no quadro Arborescências.

A Arborescências
Ler G = (N, M), onde D = [dij ] é a matriz distância e Χ o conjunto de demanda
Para todo vértice xi Χ Determine o vértice vi mais próximo
Faça Fi ← xi  vi i = 1,..,| Χ |
Enquanto existir mais de uma arborescência Fi
Reuna as arborescências com vértices em comum de modo a formar
uma floresta de cardinalidade J
Determine o vértice vi mais próximo de cada arborescência
Faça Fi ← Fi  vi i = 1,.., J
Fim_Enquanto
Elimine as arestas desnecessárias em F1

Heurístico

Complexidade Arborescências
A complexidade do algoritmo é limitada pelo procedimento que realizará a conexão das arborescências (comando
Reuna). Caso o comando seja executado, por exemplo, pelo algoritmo de conexão de arborescência proposto por
Aneja (1980), cuja complexidade é O(n3), o comando Reuna exigirá O(n3) operações.

Heurístico O(n3)

As Figuras 8.23(2)-(15) exemplificam para o grafo da Figura 8.23(1) o funcionamento do algoritmo.


508 Grafos

(1) Grafo G e Χ = {1, 5, 15, 17, 19} (2) Arborescências nos vértices Χ

(3) Vértice mais próximo das arborescências (4) Arborescências com vértice comum

(5) Vértice mais próximo das arborescências (6) Arborescências com vértice comum

Figura 8.23 Aplicação do algoritmo das arborescências – 1a Parte


CAPÍTULO 8  Árvores de Steiner 509

(7) Vértice mais próximo das arborescências (8) Arborescências com vértice comum

(9) Vértice mais próximo das arborescências (10) Arborescências com vértice comum

(11) Vértice mais próximo das arborescências (12) Floresta reduzida a uma árvore

Figura 8.23 Aplicação do algoritmo das arborescências – 2a Parte


510 Grafos

(13) Árvore resultante (14) Eliminação de vértices desnecessários

(15) Árvore de Steiner final

Figura 8.23 Aplicação do algoritmo das arborescências – 3a Parte

Algoritmo do Vértice mais Próximo – Takahashi & Matsuyama (1980)

O algoritmo do vértice mais próximo foi proposto por Takahashi & Matsuyama (1980). Trata-se de um algoritmo
construtivo guloso. Considere D =[dij] a matriz contendo a distância dos caminhos mais curtos entre todos os vér-
tices do grafo e T = (NT,MT) a árvore resultante. O algoritmo é descrito no quadro Vértice Próximo.

A Vértice Próximo
Ler G = (N, M), D = [dij ] e Χ o conjunto dos vértices de demanda
NT ← 
Escolha um vértice x  Χ
Enquanto Χ  NT
Determine os vértices v* e y* tal que
dv*y* = min {dvy : v  X \ NT, y  NT}
Una o vértice v* à árvore pelo caminho até y*
Fim_Enquanto

Heurístico
CAPÍTULO 8  Árvores de Steiner 511

A Figura 8.24(2) a (6) exemplifica o funcionamento do algoritmo para o grafo da Figura 8.24(1).

(1) Grafo G, Χ = {1,5,7,10} (2) Iniciar arbitrariamente por um vérti- (3) Ligar ao mais próximo vértice de
ce de demanda demanda fora da árvore em construção
– vértice 5

(4) Ligar a árvore em construção ao (5) Ligar a árvore em construção ao (6) Árvore final com custo 10
mais próximo vértice de demanda fora mais próximo vértice de demanda fora
da árvore – vértice 7 da árvore – vértice 10

Figura 8.24 Algoritmo do vértice mais próximo

Complexidade Vértice Próximo


A complexidade do algoritmo é limitada pelo procedimento de construção dos caminhos mais curtos entre todos os
vértices do grafo. Portanto, é O(n3).

Heurístico O(n3)
512 Grafos

Algoritmo Baseado em Cobertura de Arestas – Takahashi & Matsuyama (1980)

Este algoritmo baseia-se no algoritmo de Aneja (1980) e desenvolve a árvore de Steiner a partir de um conjunto
de cobertura de arestas e da ligação dos vértices do conjunto cobertura, de modo a compor uma árvore. O quadro
Cobertura que se segue apresenta o algoritmo.

A Cobertura
Ler g = (n, m) e x o conjunto dos de demanda
Determine uma cobertura de arestas mínima para G
Identifique os subgrafos conexos da cobertura que contém os vértices de x
Ligue-os entre si utilizando a menor distância possível
Remova as arestas desnecessárias à árvore de Steiner

Heurístico

As Figuras 8.25 de (1) a (6) ilustram o desenvolvimento do algoritmo. Observa-se que o algoritmo é composto
de várias etapas que, em si, exigem algoritmos específicos de solução.

(1) Cobertura ={ (1-2); (4-8); (7-9); (10-15); (2) Subgrafos da cobertura que contêm vértices de Χ
(13-14); (11-12); (3-6) } = 27

Figura 8.25 Algoritmo com base na cobertura de vértices – 1a Parte


CAPÍTULO 8  Árvores de Steiner 513

(3) Identificar as menores ligações entre os subgrafos (4) Ligar os subgrafos

(5) Eliminar vértices e arestas desnecessários (6) Árvore final

Figura 8.25 Algoritmo com base na cobertura de vértices – 2a Parte


514 Grafos

Complexidade Vértice Próximo


O procedimento de determinar a cobertura mínima de arestas pode ser solucionado em O(|n|½|m|) – Micali & Vazi-
rani (1980). O procedimento de identificar os subgrafos que contêm os vértices de Steiner é O(m). O passo de ligação
com os vértices mais próximos é O(n2).

Heurístico O(|n|½|m|)

8.3 Exemplos de Aplicações


O Problema da Otimização de Ligações em Circuitos Integrados

Um dos vários problemas que devem ser solucionados no projeto de placas de circuitos integrados consiste na oti-
mização das ligações entre os vários elementos da placa. Quando o problema é constituído, a etapa da solução do
layout já foi superada, ou seja, a localização dos elementos sobre a placa é conhecida. Posicionados os componentes
na placa, cabe ligá-los da forma mais econômica e confiável possível. Como os circuitos são projetados em camadas,
a configuração de uma camada causa impactos específicos nas demais. Os impactos principais são a interferência e
a concentração de calor. O problema do projeto de circuitos é muito complexo. Por simplificação, é solucionado em
etapas. A Figura 8.26 exemplifica as etapas da modelagem e solução do problema via árvores de Steiner.

(1) Elementos e possibilidades de circuitos (2) Bornes de ligação dos elementos

(3) Árvore formada no problema. (4) Uma solução de ligação – árvore de Steiner
pontos coloridos são os pontos de demanda

Figura 8.26 Solução para a distribuição de sinal na placa


CAPÍTULO 8  Árvores de Steiner 515

Desconsiderando os efeitos da interferência eletromagnética e outros efeitos entre as camadas, a melhor cone-
xão em uma dada camada pode ser considerada a que minimiza o comprimento dos circuitos – por minimizar
a dissipação de energia, reduzir a resistência no circuito, o retardo e o custo do material de conexão. Assim for-
mulado, o problema da minimização dos circuitos em uma placa é um problema de Steiner em grupamentos. Os
grupamentos são formados pelas várias posições que podem atuar como bornes de ligação entre a placa e um dado
componente.
A Figura 8.26(1) apresenta a distribuição dos elementos da placa, identificados por retângulos e enumerados
pelas letras de A a G. As linhas em negrito representam as trilhas de ligação. Os pontos representam as posições
da trilha que poderão ser utilizadas para efetuar a conexão. A Figura 8.26(2) exibe, nos retângulos pontilhados
e identificados pelas mesmas letras dos elementos associados, as células que poderão ter seu ponto de conexão
utilizado como borne para o elemento da letra representada. A Figura 8.26(3) mostra como transformar as tri-
lhas de ligação e suas respectivas células em um grafo. A Figura 8.26(4) exibe no grafo da Figura 8.26(3) uma
solução para o problema – uma árvore terminal de Steiner em que os vértices terminais são escolhidos dentre
os disponíveis para a ligação de cada elemento – o grupamento dos vértices que podem ser escolhidos como
bornes do elemento.

O Problema da Otimização da Assimetria (Skew) de Ligações em Circuitos de Sincronização

Em diversas aplicações, os componentes eletrônicos de um circuito devem ser sincronizados. A sincronização


é realizada através de um sinal enviado pelo relógio do circuito. O tempo decorrido entre a emissão do sinal e
sua chegada ao componente depende do caminho percorrido pelo sinal entre o relógio e o componente. Esse
fenômeno é denominado Clock Skew. O termo skew representa o grau de assimetria da chegada do sinal aos
componentes. Cada terminal (elemento do circuito) executa certas operações. Todos os terminais executam
parte de um programa geral e suas operações devem ser coordenadas. O requisito da chegada simultânea aos
terminais pode ser satisfeito através de uma árvore de conexões, em que o caminho entre o vértice fonte e os
vértices terminais conduz a um idêntico tempo de trânsito do sinal. Adicionalmente, dentre todas as árvo-
res de ligação admissíveis, a árvore de menor comprimento – mínimo custo – deve ser selecionada, visando
minimizar a ocupação do espaço do circuito. Observe que a estrutura de ligação entre os terminais de um
circuito integrado obedece a uma grade retangular, conforme mostra a Figura 8.27 – trata-se de um problema
constituído sobre um grafo grade. A condição de grade planar reduz o número possível de alternativas de
ligações de um terminal a quatro.
Em termos matemáticos, a determinação da estrutura de sincronização consiste em determinar uma árvore de
Steiner retilinear mínima em que a distância entre o vértice raiz e cada terminal é igual ao raio do grafo grade (Er-
zin & Cho, 2003). Atualmente, aceita-se uma assimetria de 5% na diferença entre o tempo de chegada do sinal aos
terminais. Eventualmente, para uma dada distribuição de terminais é impossível a determinação de uma árvore
retilinear mínima que atenda as condições de assimetria mínima. Assim, associado ao problema da determinação
de uma árvore de ligação para os terminais, existe o problema de alterar a posição dos terminais. A solução do pro-
blema de minimizar a assimetria de ligações em circuitos sincronizados é NP-Difícil mesmo sem a consideração
da possibilidade de alteração da posição dos terminais (Kong et al., 1993). A Figura 8.27 exemplifica a solução do
problema.
516 Grafos

(1) Distribuição dos terminais (2) Primeira árvore viável

(3) Segunda árvore viável (4) Uma solução

Vértice raiz Vértice terminal Vértice de passagem

Figura 8.27 Solução para a otimização da assimetria de ligações em circuitos sincronizados

Redes Urbanas de Distribuição de Gás Natural

O gás natural é, na atualidade, uma fonte de energia versátil, limpa e competitiva. Em termos econômicos, a me-
lhor opção para o transporte de gás natural no estado gasoso é o uso de gasodutos. Todavia, os custos de suas redes
de distribuição são fatores de difusão limitantes. Os custos de implantação das redes envolvem principalmente
obras civis, aquisição de equipamentos de controle de pressão, medidores de vazão e tubos. Riscos operacionais,
impactos ambientais e o incômodo da obra se somam aos empecilhos. Assim, é importante que no projeto de
uma rede de distribuição tanto seu traçado físico como os materiais empregados sejam otimizados. Em relação ao
traçado da rede dois aspectos são importantes: a minimização do comprimento da rede, que implica a redução de
material, perdas de carga e dos pontos de deposição, e a decisão sobre o atendimento da clientela. A Figura 8.28
exemplifica algumas possíveis soluções para o problema através da árvore de Steiner.
CAPÍTULO 8  Árvores de Steiner 517

(1) Distribuição do bônus (2) Distribuição dos custos

(3) Solução 1 (4) Solução 2

Central de distribuição Vértice de passagem e compressão Pontos de demanda

Figura 8.28 Soluções para distribuição de gás em uma rede

Uma rede de gás é um investimento que deve ser planejado de modo a ser amortizado pela sua própria opera-
ção. Por conseguinte, a implantação desse tipo de rede se faz em etapas e segundo um plano que contemple tanto
a expansão do serviço como sua viabilidade econômica. Considerando-se um grafo G = (N, M), N = N1 N2 em
que os clientes são associados aos vértices de demanda N1 de G e o custo de construção dos tramos da rede sejam
associados aos custos das arestas de G. Considerando-se ainda que o atendimento de um cliente seja bonificado em
um valor bi para todo vértice xi N1 e que os vértices de passagem N2 possuam valor de bônus igual a zero. Então
o problema do traçado de uma rede urbana de gás pode ser modelado como o problema do coletor de prêmios em
árvore de Steiner.
A Figura 8.28(1) mostra um grafo que ilustra um caso do problema. Os vértices identificados com as letras de A
a K representam pontos de demanda aos quais estão associados os custos de não atendimento da demanda. Na Fi-
gura 8.28(2) são representados os custos da infraestrutura da rede. Duas soluções são exibidas nas Figuras 8.28(3)
e (4). Observe que as soluções 1 e 2 possuem o mesmo custo total igual a 20 e nenhuma delas atende ao vértice A.
Assim, em termos econômicos, é indiferente atender ou não a demanda do vértice D assinalado na Figura 8.28(4)
pela seta horizontal. O bônus do vértice compensa estritamente o gasto na extensão da rede. O vértice A assinalado
pela seta horizontal, em qualquer caso, é de atendimento não econômico.
518 Grafos

8.4 Aplicações Reais Selecionadas


 Comunicação em redes sem fio (Wu et al., 2010).
 Comunicação entre agentes móveis em redes de sensores (Zhou & Gao, 2010).
 Localização de estradas rurais (Nie, 2010).
 Arquitetura de chips (Yan & Lin, 2008).
 Comunicação em rede de satélites (Yang & Liao, 2008).
 Determinação de configurações estáveis de filmes de sabão (Dutta et al., 2008).
 Projeto de circuitos integrados (Alpert et al., 2004).
 Análise de estrutura molecular (Stanton & Smith, 2004).
 Roteamento em redes multicast (Skorin-Kapov & Kos, 2003).
 Na solução do problema quadrático de alocação dinâmico (Smith, 2001).
 Desenvolvimento de árvores filogenéticas (Fernández-Baca, 2000).
 Modelos para confecção de circuitos VLSI (Grötschel et al., 1997).
 Projeto de circuitos eletrônicos (Martin et al., 1993; Smith et al., 1980).
 Várias aplicações (Hwang & Richards, 1992).
 Redes de telefonia (Luna et al., 1987).
 Projetos de instalações elétricas e mecânicas em edificações (Smith & Liebman, 1979).
 Redes de comunicação e de tráfego (Frank & Frisch, 1976).
 Distribuição de água para irrigação e redes de drenagem (Lee, 1976).
 Redes de comunicação (Hanan, 1975).
 Tubulação de gás e óleo (Rothfarb et al., 1970).

8.5 Exercícios Resolvidos do Capítulo 8


Exercício no 1:
Nas fraturas em superfícies delgadas as regiões heterogêneas do material desempenham um papel fun-
damental. Essas regiões concentram tensões e tornam-se, sempre que existam condições favoráveis para
o fenômeno, parte das linhas de fratura. Assim, uma fratura ocorre na superfície basicamente através de
uma estrutura conexa de mínimo custo que interliga algumas de suas regiões heterogêneas. A fratura pode
ocasionar, inclusive, o colapso da peça, caso interligue duas bordas do material.
Modele o problema de maneira a aproximar a solução de determinação de linhas de fratura em superfícies
delgadas através de um modelo em grafos. Exemplifique como o modelo funciona.
Exercício no 2:
Para o grafo da figura aplique o algoritmo de poda para a determinação da árvore de Steiner de mínimo custo.
CAPÍTULO 8  Árvores de Steiner 519

Figura do exercício no 2

8.6 Exercícios Propostos do Capítulo 8

Teoria

8.1: Considere G um grafo conexo ponderado no qual todas as arestas possuem pesos distintos. Existe a possi-
bilidade de, para um dado conjunto de vértices terminais, existirem duas ou mais árvores de Steiner míni-
mas distintas?

Algoritmos

8.2: Aplique os algoritmos de: Aneja 1980; Kou, Markowsky e Berman (1981) – das arborescências (algoritmo
greedy or nearest participant first) ao grafo que se segue, comparando seus resultados. Os pontos terminais
estão ressaltados em amarelo – {c,d,p}.
520 Grafos

Grafo do exercício 8.2

8.3: Elabore um algoritmo eficiente (heurístico) para a determinação da árvore geradora de Steiner com coleta
de prêmios. Aplique o algoritmo ao grafo da figura que se segue, onde os números sublinhados representam
os prêmios dos vértices.

Grafo do exercício 8.3


CAPÍTULO 8  Árvores de Steiner 521

8.4: Elabore um algoritmo eficiente para a solução da árvore de Steiner de coleta de bônus com grau máximo 3
e aplique ao problema do grafo do exercício 8.3.
8.5: Elabore um algoritmo eficiente para a solução:

1. A árvore de Steiner de mínimo diâmetro.


2. Árvore de Steiner de mínimo grau.
E aplique na solução do grafo do exercício.

Grafo do exercício 8.5

Modelos

8.6: Uma cidade está projetando um sistema de distribuição de gás encanado. O impacto ambiental das esca-
vações é considerado elevado na região do projeto, de forma que se deseja minimizar o comprimento da
rede. No mapa que se segue, a localização da estação de distribuição está identificada pelo pequeno círculo.
Estabeleça uma rede em árvore sobre o mapa da Figura A através das ruas, cobrindo todos os pontos de
demanda em amarelo e pelos menos cinco pontos azuis.

Mapa do bairro a ser atendido


522 Grafos

8.7: O Banco do Japão está implantando no centro da cidade de Osaka uma rede de caixas automáticos. O centro
da rede é a sede do banco (o ponto circular amarelo de maior tamanho). Em alguns locais, o banco decidiu
implementar caixas eletrônicos, como abordou o problema 3.38, do Capítulo 3. Esses pontos são represen-
tados pelos pontos em amarelo no mapa. As caixas podem ser colocadas nas calçadas, ou dentro de estabe-
lecimentos ou prédios. As fibras de comunicação devem seguir o traçado das ruas ou ao lado dos rios e vias
férreas. Para tal, são consideradas vias de acesso as áreas em cinza no mapa. Todavia, o cenário do exercício
do problema 3.38 do Capítulo 3 foi alterado. O banco quer estudar outras possibilidades de implementar sua
rede:
Possibilidade 1: O banco atende os pontos de demanda em amarelo, todavia podendo utilizar opcionalmen-
te os pontos de demanda em azul. O objetivo é o de minimizar o comprimento de fibras ópticas instaladas,
dado que todos os pontos em amarelo sejam atendidos e pelo menos dois pontos em azul sejam também
incluídos na rede.
Possibilidade 2: O banco atende os pontos em amarelo e tantos pontos em azul quantos seja interessante.
Nesse caso, considera-se que as ligações entre os pontos em azul e amarelo são de custo zero – são decor-
rentes de redes já existentes e serão utilizadas gratuitamente pelo banco, pois os pontos em azul representam
pontos em que outros bancos possuem caixas e serão compartilhados os custos de operação do ponto.

Distribuição de caixas de banco no centro de Osaka – 1o caso


CAPÍTULO 8  Árvores de Steiner 523

8.8: Considerando um novo cenário para o problema descrito no exercício 8.7, as caixas de atendimento auto-
mático podem ser colocadas nas calçadas, ou dentro de estabelecimentos ou prédios. As fibras de comuni-
cação devem seguir o traçado das ruas ou ao lado dos rios e vias férreas. Para tal são consideradas vias de
acesso as áreas em cinza no mapa. Deseja-se minimizar o comprimento de fibras ópticas instaladas e ligar,
no mínimo, 20 caixas eletrônicas ao sistema. Todas as caixas em amarelo – que foram redimensionadas em
relação ao exercício 8.7 – devem ser conectadas já na primeira fase e contam entre as 15 da rede.

Distribuição de caixas de banco no centro de Osaka – 2o caso

8.9: A figura do presente exercício representa uma placa de circuitos onde os retângulos tracejados mostram os
pontos de entrada e saída dos circuitos. Cada retângulo deve se ligar a todos os demais da placa. A ligação
pode ser realizada pelos barramentos ou através das conexões dentro da própria placa. Os barramentos
são limitados em sua capacidade de ativar ligações da forma mostrada na figura. Uma ligação entre dois
circuitos quaisquer ocupa uma posição no barramento por onde passe. Podem ser feitas ligações fora do
barramento, todavia seu custo operacional é quatro vezes maior que uma ligação via barramento. Fora do
barramento, as ligações não estão sujeitas a limitação quantitativa, uma vez que serão desenhadas indivi-
dualmente ao longo do trajeto desejado.
1. Programe a ligação da placa de modo a minimizar as ligações fora do barramento.
2. Programe um esquema de ligação que minimize o comprimento da ligação total, contando uma unidade
de distância para cada quadrícula percorrida pelo circuito fora do barramento e apenas uma unidade de
distância para todo o trajeto feito dentro de um barramento.
524 Grafos

Planta de uma placa de circuitos integrados (*)


(*) Maiores detalhes desse modelo podem ser encontrados em Grötschel & Weismantel (1997).

Aplicações

8.10: No grafo da figura do exercício em que os vértices terminais são identificados pela cor amarela, determine:

1. A árvore de Steiner mínima.


2. A árvore de Steiner de mínimo grau.
3. Árvore de Steiner de mínimo diâmetro.
4. Árvore de Steiner mínima de mínimo
diâmetro.
5. Árvore de Steiner mínima de mínimo grau.
6. Um subgrafo 2-conexo que contenha os
vértices terminais.
7. A árvore de Steiner terminal mínima.
8. A árvore de Steiner com mínimos vértices de
Steiner.
9. A árvore de Steiner com mínimos vértices de
Steiner limita ao valor de 38 unidades.
10. A árvore de Steiner mínima com, no máximo,
3 vértices de Steiner.

Grafo do exercício 8.10


CAPÍTULO 8  Árvores de Steiner 525

8.11: Para o grafo do exercício, trace as seguintes árvores:


1. A árvore de Steiner com coleta de prêmios.
2. A árvore de Steiner terminal com coleta de prêmios. Os vértices em amarelo representam os vérti-
ces terminais deste pedido. Observe que a árvore tem a mesma função do problema de Steiner com
coleta de prêmios, contudo passando obrigatoriamente pelos vértices terminais, que, por força do
problema, deverão ser também folhas da árvore. Para esta árvore, o prêmio dos vértices terminais
não é considerado.

Custos Bônus
Grafo do exercício 8.11
8.12: Para o grafo do exercício, trace as seguintes árvores:

1. A árvore de Steiner de mínimo número de vértices de


Steiner de custo mínimo.
2. Árvore de Steiner terminal de mínimo diâmetro.
3. A árvore de Steiner com, no máximo, dois vértices ter-
minais e de custo mínimo.
4. A árvore de Steiner com diâmetro máximo de 10 e de
custo mínimo.

Grafo do exercício 8.12

8.13: Aplique os algoritmos de:


1. Arborescência.
2. Kou, Markowsky e Berman (1981).
3. Árvore geradora mínima com poda.
4. Algoritmo baseado em cobertura de arestas Takahashi & Matsuyama (1980).
5. Algoritmo do vértice mais próximo Takahashi & Matsuyama (1980).
526 Grafos

na solução da árvore de Steiner do grafo da figura do exercício.

Grafo do Exercício 8.13

Desafios

8.14: Genial deve traçar uma árvore de Steiner no grafo da figura do exercício, que possui as seguintes caracterís-
ticas:
1. É enraizada no vértice amarelo e de número 13.
2. Visa maximizar a diferença entre o total de bônus recolhido na árvore menos a soma das penalidades
pagas por passar nos vértices tijolo (não obrigatórios) com os custos das arestas utilizadas na árvore.
3. A árvore somente pode passar por um vértice azul.

Grafo do exercício 8:14


CAPÍTULO 8  Árvores de Steiner 527

8.15: O grafo do exercício representa a planta das opções de traçado para uma rede de distribuição de gás, que
será construída segundo as condições abaixo descritas. As arestas representam os possíveis tramos de acesso
dos pontos de demanda de gás. Cada vértice representa um potencial cliente de gás. A rede não necessita
atender todos os clientes levantados na planta inicial; pelo contrário, provavelmente não atenderá. Ajude
Genial a apresentar uma rede que solucione as restrições desse problema.

O objetivo é otimizar os recursos disponíveis aten-


dendo o máximo número de clientes possíveis, desde
que os clientes principais – os vértice em amarelo –
sejam atendidos.

Todas as arestas da rede possuem o mesmo custo


de implantação.

Clientes azuis valem duas vezes mais que os da cor


tijolo e quatro vezes mais do que os clientes branco.

A empresa pretende implementar uma rede com


um total máximo de 30 tramos.

Grafo do exercício 8.15

8.16: O grafo do exercício representa o corte vertical de um plano de exploração de uma mina. Os vértices ama-
relos representam quatro possíveis entradas da mina.

Os vértices azuis representam ocorrências do precioso mineral natalônio, enquanto os vermelhos são ocor-
rências de acrômio. Cada ocorrência de natalônio vale o equivalente a três ocorrências de acrômio. Cada
528 Grafos

faixa de diferentes cores horizontais representa uma etapa de exploração da mina. A mina deve ter um com-
primento total máximo de 20 unidades medidas no corte vertical da figura. As distâncias entre vértices não
cotadas são equivalentes a uma unidade. Em virtude da necessidade de garantir retorno econômico em cada
etapa de exploração da mina, dentro de cada faixa de cor será necessário explorar no mínimo 4 ocorrências
de pelo menos um dos minerais desejados. Ajude Genial a planejar a exploração da mina de forma a iniciar
a galeria em uma das entradas e desenvolvê-la de forma a maximizar o valor dos minerais explorados, ga-
rantindo a viabilidade econômica dentro de cada etapa do projeto.

8.7 Referências
Aggarwal, S., Limaye, M., Netravali, A., & Sabnani, K. (2004). Constrained diameter Steiner trees for multicast
conferences in overlay networks. In: Proceedings of the First International Conference on Quality of Service in Het-
erogeneous Wired/Wireles Networks (QSHINE’04), 262-271.
Agrawal, A., Klein, P., & Ravi, R. (1995). When trees collide: An approximation algorithm for the generalized
Steiner problem on networks. SIAM J. Comp. 24(3):440-456.
Alpert, C. J., Gandham, G., Hrkic, M., Hu, J. Quay, S. T. & Sze, C. N. (2004). Porosity Aware Buffered Steiner Tree
Construction. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems. 23(4):517-526.
Alpert, C. J., Gandham, G., Hu, J., Neves, J. I., Quay, S. T. & Sapatnekar, S. S. (2001). Steiner Tree Optimization for
Buffers, Blockages, and Bays, IEEE Trans. Computer-Aided Design of Integrated Circuits and Systems. 20(4):556-562.
Awerbuch, B., Azar, Y. & Barta, Y. (1996). On-line generalized Steiner problem, Symposium on Discrete Algo-
rithms. In: Proceedings of the seventh annual ACM-SIAM symposium on Discrete algorithms, Atlanta, Georgia,
United States, 68-74.
Aneja, Y. P. (1980). An Interger Linear Programming Approach to the Steiner Problem in Graphs. Networks 10:167-
178.
Arora S. & Karakostas, G. (2000). A 2 + approximation algorithm for the k-MST problem. In: Proceedings of the
11th Annual ACM-SIAM Symposium on Discrete Algorithms, 754-759.
Arora, S. Lund, C., Motwani, R., Sudan, M. & Szegedy, M. (1992). Proof verification and hardness of approximation
problems. In: Proceedings of thef 33rd FOCS, Pittsburgh, PA,14-23.
Bateman, C. D., Helvig, C. S., Robins, G. & Zelikovsky, A. (1997). Provably good routing tree construction with
multi-port terminals. In: Proceedings of ACM SIGDA International Symposium on Physical Design, 96-102.
Bauer, F. & Varma, A. (1996). ARIES: A rearrangeable inexpensive edge-based online Steiner algorithm. In: Procee-
dings of the Joint Conference of the IEEE Computer and Communications Societies (INFOCOM96), 82-89.
Beasley, J. E. (1992). A heuristic for Euclidean and rectilinear Steiner problems. European Journal of Operations
Research 58:284-292.
Berman, P., Karpinski, M. & Zelikovsky, A. (2008). A Factor 3/2 Approximation for Generalized Steiner Tree Prob-
lem with Distances One and Two CoRR abs/0812.2137.
Berman, P. & Ramaiyer, V. (1994). Improved Approximations for the Steiner Tree Problem. Journal of Algorithms
17:381-408.
Borchers, A. & Du, D. Z. (1997) The k-Steiner ratio in graphs. SIAM J. Comput. 26:857-869.
Bouchachia, A. & Prossegger, M. (2012). A hybrid ensemble approach for the Steiner tree problem in large graphs:
A geographical application, Applied Soft Computing – On-line, disponível em http://www.sciencedirect.com/scien-
ce/article/pii/S1568494611001013. Acesso em setembro de 2011.
Bozorgzadeh, E., Kastner, R. & Sarrafzadeh, M. (2001). Creating and Exploiting Flexibility in Steiner Trees. In:
Proceedings of 38th IEEE/ACM Design Automation Conference, 195-198.
Candia-Vejár, A. & Bravo-Azlán, H. (2006). Worst case performance of Wong’s Steiner tree heuristic. Discrete Ap-
plied Mathematics 154:730-737.
CAPÍTULO 8  Árvores de Steiner 529

Canuto, S. A., Resende M. G. C. & Ribeiro, C. C. (2001). Local search with perturbations for the prize-collecting
Steiner tree problem in graphs. Networks 38:50-58.
Chakraverty, S., Batra, A. & Rathi, A. (2006). Directed Convergence Heuristic: A fast & novel approach to Steiner
Tree Construction. In: International Conference on Very Large Scale Integration, 2006 IFIP, 255-260.
Charikar, M., Chekuri, C., Cheung, T., Dai, Z., Goel, A., Guha, S. & Li., M. (1998). Approximation Algorithms for
Directed Steiner Problems. In: ACM-SIAM Symposium on Discrete Algorithms, 192-200.
Chekuri, C., Even, G. & Kortsarz, G. (2006). A greedy approximation algorithm for the group Steiner problem,
Discrete Applied Mathematics 154:15-34.
Chen, Y. H. (2011). An Improved Approximation Algorithm for the Terminal Steiner Tree Problem. In: Computa-
tional Science and Its Applications – ICCSA 2011. Lecture Notes in Computer Science 6784:141-151.
Chen, C. (2002). Probabilistic Analysis of Rectilinear Steiner Trees. In: Proceedings of the 15th International Confer-
ence on VLSI Design (VLSID.02), 484-488.
Chen, X., Li, Y., Du, D-Z. & Ngo, H. Q. (2004). Steiner Tree in Industry. In: Handbook of Combinatorial Optimiza-
tion. Du, D-Z & Pardalos, P. (Eds). Kluwer Academic Publisher, Chapter 5, 193-216.
Chen, D., Du, D-Z., Hu, X-D, Lin, G-H., Wang, L. & Xue, G. (2000). Approximations for Steiner Trees with Mini-
mum Number of Steiner Points. Journal of Global Optimization 18:17-33.
Cunha, A. S., Lucena, A., Maculan, N. & Resende, M.G.C. (2008). A relax and cut algorithm for the prize collecting
Steiner problems in graphs. Discrete Applied Mathematics, aceito para publicação.
Chvátal, V. (1973). Tough graphs and Hamiltonian circuits. Discrete Mathematics 5(3):215-228.
Di Fatta, G., Lo Presti, G. & Lo Re, G. (2003). A Parallel Genetic Algorithm for the Steiner Problem in Networks.
In: Parallel and Distributed Computing and Systems (PDCS 2003), disponível em citeseerx.ist.psu.edu/viewdoc/
download?doi=10.1.1.177.1678. Acesso em setembro de 2011.
Diané, M. & Plesník, J. (1991). Three new heuristics for the Steiner Problem in Graphs. Acta Mathematica Univer-
sitatis Comenianae LX(1)105-121.
Ding, W., Lin, G. & Xue, G. (2010). Diameter-Constrained Steiner Tree. In: Proceedings of the 4th Annual Interna-
tional Conference on Combinatorial Optimization and Applications (COCOA 2010). Lecture Notes in Computer
Science 6509:243-253.
Dowsland, K. A. (1991). Hill-climbing, simulated annealing and the steiner problem in graphs. Engineering Opti-
mization 17:91-107.
Drake, D. E. & Hougardy, S. (2004). On approximation algorithms for the terminal Steiner tree problem. Informa-
tion Processing Letters 89(1):5-18.
Dreyfus, S. E. & Wagner, R. A. (1971). The Steiner problem in graphs. Networks 1:195-207.
Du, D-Z. (1995). On component-size bounded Steiner trees. Discrete Applied Mathematics 60:131-140.
Dutta, P., Pratik, Khastgir, S. P. & Roy, A. (2008). Steiner trees and spanning trees in six-pin soap films, 1-17, Cornell
University Library, disponível em http://arxiv.org/abs/0806.1340v1. Acesso em setembro de 2011.
Duin, C. & Vo, S. (1999). The Pilot method: A strategy for heuristic repetition with application to the Steiner
problem in graphs. Networks 34:181-191.
Erzin, A. I. & Cho, J. D. (2003). Skew Minimization Problem with Possible Sink Displacement. Automation and
Remote Control 64(3):493-504.
Esbensen, H. (1995). Computing near-optimal solutions to the Steiner problem in graph using genetic algorithms.
Networks 26(4):173-185.
Even, G. & Kortsarz, G. (2002). An approximation algorithm for the group Steiner problem. In: Proceedings of the
thirteenth annual ACM-SIAM symposium on Discrete algorithms, 49-58.
Fernández-Baca. D. (2000). The Perfect Phylogeny Problem. In: Steiner Tree in Industries, Zu, D-Z. & Cheng, X.
(Eds), Kluwer Academic Publishers.
530 Grafos

Fischetti, M., Hamacher, H., Jørnsten, K. & Maffioli, F. (1994). Weighted k-cardinality trees: Complexity and poly-
hedral structure. Networks 24:11-21.
Frank, H. & Frisch, I. T. (1976). Network Analysis. In: Large Scale Networks: Theory and Design, Boesch, F. T. (Ed.).
IEEE press, New York, 19-27.
Fürer, M. & Raghavachari, B. (1994). Approximating the Minimum Degree Steiner Tree to Within one of Optimal.
Journal of Algorithms 17:409-423.
Gabow, H. N., Goemans, M. X., Tardos, É. & Williamson, D. P. (2009). Approximating the smallest k-edge connec-
ted spanning subgraph by Ip-rounding. Networks 53(4):345-357.
Ganley, J. & Cohoon, J. P. (1996). Short Note: Rectilinear Steiner Trees on a Checkerboard. ACM Transactions on
Design Automation of Electronic Systems 1(4):512-522.
Garey, M. R. & Johnson, D. S. (1979). Computers and Intractability: A guide to the theory of NP-completeness. Free-
man, San Francisco.
Garey M. R. & Johnson, D. S. (1977). The Rectilinear Steiner Tree Problem is NP-Complete. SIAM J. Appl. Math.
32:826-834.
Gendreau, M., Larochelle, J.-F. & Sans’ o, B. (1999). A tabu search heuristic for the Steiner tree problem. Networks
34:163-172.
Grewal, G., Wilson, T., Xu, M. & Banerji, D. (2004). Shrubbery: a new algorithm for quickly growing high-quality
Steiner trees. In: Proceedings. 17th International Conference on VLSI Design, 2004, 855-862.
Goemans, M. X. & Myung, Y-S. (1993). A catalog of Steiner tree formulations. Networks 23:19-28.
Goemans, M. X. & Williamson, D. P. (1997). The primal-dual method for approximation algorithms and its appli-
cation to network design problems. In: Approximation Algorithms for NP-hard Problems, Hochbaum, D.S., (Ed.).
PWS Publishing Company, 144-191.
Goemans, M. X. & Williamson, D. P. (1995). A general approximation technique for constrained forest problems,
SIAM Journal on Computing 24:296-317.
Goldbarg, E. F. G., Goldbarg, M. C. & Schmidt, C. C. (2008). A hybrid transgenetic algorithm for the prize collect-
ing Steiner tree problem. Journal of Universal Computer Science 14(15):2491-2511.
Gröpl, C., Hougardy, S., Nierhoff, T. & Prömel, H. J. (2000). Approximation Algorithms for the Steiner Tree Prob-
lems. In: Graph in Steiner Tree in Industries, Kluwer, 235-279.
Grötschel, M., Martin, A. & Weismantel, R. (1997). The Steiner tree packing problem in VLSI-design. Mathemati-
cal Programming 78:265-282.
Hanan, M. (1975). Layout Interconnection and Placement. Networks 5:85-88.
Hanna, M. (1966). On Steiner’s problem with rectilinear distance. SIAM Journal of Applied Mathematics 14:255-265.
Hesser, J., Manner, R. & Stucky, O. (1989). Optimisation of Steiner trees using genetic algorithms. In: Proceedings
of the Third International Conference on Genetic Algorithms, 231-236.
Hougardy, S. & Promel, H. J. (1999). A 1.598 Approximation Algorithm for the Steiner Problem in Graphs. In:
Proceedings of ACM-SIAM Symposium on Discrete Algorithms, 448-453.
Hsieh, S-Y. & PI, W-H. (2008). On the Partial-Terminal Steiner Tree Problem. In: The International Symposium on
Parallel Architectures, Algorithms, and Networks, I-SPAN 2008, 173-177.
Hsieh, S-Y. & Gao, H. M. (2007). On the partial-terminal Steiner tree problem. Journal of Supercomputing,
41(1):41-52.
Hsieh, S. Y. & Yang, S. C. (2007). Approximating the selected-internal Steiner tree. Theor. Comput. Sci. 381:288-291.
Hu, Y., Jiang,H. & Qin, Z., (2010). A New Effective Heuristic for Solving Minimal Steiner Tree Problem on Graphs.
In: International Conference on Computational Intelligence and Software Engineering (CiSE), 2010, 1-4.
Hwang, F. K. & Richards, D. S. (1992). Steiner Tree Problems. Networks 22:55-89.
Jain K. (2001). A factor 2 approximation algorithm for the generalized Steiner network problem. Combinatorica
21(1):39-60.
CAPÍTULO 8  Árvores de Steiner 531

Johnson, D. S., Minkoff, M. R. & Phillips, S. (2000). The prize-collecting Steiner tree problem: Theory and practice.
In: Proceedings of 11th ACM-SIAM Symposium on Discrete Algorithms, 760-769.
Karp, R. M. (1972). Reducibility among combinatorial problems. In: Complexity of Computer Computations, Mill-
er, R.E. & J. W. Tatcher. (Eds). Plenum Pub Corp, 85-103.
Karpinsky, M. & Zelikovsky, A. (1997). New Approximation Algorithms for the Steiner Tree Problem. Journal of
Combinatorial Optimization 1:47-65.
Khuller, S. & Zhu, A. (2002). The General Steiner Tree-Star Problem. Information Processing Letters 84(4):215-220.
Klau, W., Ljubić, I., Moser, A., Mutzel, P., Neuner, P., Pferschy, U., Raidl, G. & Weiskircher, R. (2004). Combining
a memetic algorithm with integer programming to solve the prize collecting Steiner tree problem. In: Proceedings
of the Genetic and Evolutionary Computation Conference (GECCO-2004). Lecture Notes in Computer Science
3102:1304-1315.
Koch, T. & Martin, A. (1998). Solving Steiner tree problem in graphs to optimality. Networks 32(3):207-232.
Komlos, J. & Shing, M. T. (1985). Probabilistic partitioning algorithms for the rectilinear Steiner problem. Net-
works 15:413-423.
Kong, J., Kahng, A. & Robins, G. (1993). Matching Based Methods for High-Performance Clock Routing. IEEE
Trans. CAD-IC 12(8):1157-1169.
Kortsarz, G. & Peleg, D. (1999). Approximating the weight of shallow Steiner trees. Discrete Applied Mathematics
93:265-285.
Kou, L., Markowsky, G. & Berman, L. (1981). A Fast Algorithm for Steiner Trees. Acta Informatica 15:141-145.
Laekhanukit, B. (2010). Approximation Algorithms for (S,T)-Connectivity Problems, Master of Mathematics in
Combinatorics and Optimization Thesis, University of Waterloo.
Lee, D. H. (1976). Low Cost Drainage Networks. Networks 6:351-371.
Li, X., Zou, F., Huang, Y., Kim, D. & Wu, W. (2010). A Better Constant-Factor Approximation for Selected-Internal
Steiner Minimum Tree. Algorithmica 56:333-341.
Li, Z. & Wang, L. (2002). An approximation algorithm for a bottleneck k-Steiner tree problem in the Euclidean
plane. Information Processing Letters 8:151-156.
Lin, G-H. & Xue, G. (2002). On the terminal Steiner tree problem. Information Processing Letters 84(2):103-107.
Lin, G-H. & Xue, G. (1999). Steiner tree problem with minimum number of Steiner points and bounded edge-
-length. Information Processing Letters 69:53-57.
Ljubić, I., Weiskircher, R., Pferschy, U., Klau, G.W., Mutzel, P. & Fischetti, M. (2006). An algorithmic framework for
the exact solution of the prize-collecting Steiner tree problem. Mathematical Programming 105:427-449.
Lu, C. L., Tang, C. Y., & Lee, R. C-T. (2003). The full Steiner tree problem. Theoretical Computer Science 306(1-
3):55-67.
Luyet, L., Varone, S. & Sufferey, N. (2007). An Ant Algorithm for the Steiner Tree Problem in Graph, M Giacobini
et al. (Eds.) EvoWorkshop. Lecture Notes in Computer Science 4448: 42-51, Springer-Verlag Berlin Heidelberg.
Luna, H. P. L., Ziviani, N. & Cabral, R. H. B. (1987). The Telephonic Switching Centre Network Problem: Formal-
ization and Computational Experience. Discrete Applied Math. 18:199-210.
Makki, K. & Pissinou, N. (1992). The Steiner tree problem with minimum number of vertices in graphs. In: Pro-
ceedings of the Second Great Lakes Symposium on VLSI, 204-206.
Martinez, F. V., Pina, J. C. & Soares, J. (2007). Algorithms for terminal Steiner trees. Theoretical Computer Science
389:133-142.
Martins, S. L., Resende, M. G. C., Ribeiro, C. C. & Pardalos, P. M. (2000). A parallel GRASP for the Steiner tree
problem in graphs using a hybrid local search strategy. Journal of Global Optimization 17: 267-283.
Martin, A. & Weismantel, R. (1993). Packing paths and Steiner trees: routing of electronic circuits. CWI Quarterly
6:185-204.
532 Grafos

Melkonian, V. (2007). New primal-dual algorithms for Steiner tree problems Source. Computers and Operations
Research 34(7):2147-2167.
Micali, S. & Vazirani, V. V. (1980). An O(|V|1/2.|E| ) Algorithm for finding maximum matching in general graphs.
In: Proceedings of the 21st IEEE Symp. Foundations of Computer Science, 17-27.
Nie, X., Shu, S., Wang, H. & Huang, F. (2010). A New Method of Rural Road Network Layout Designing in the
County: Generating Algorithm of Rectilinear Steiner Tree. In: International Conference on Intelligent Computation
Technology and Automation, 37-41.
Plesnik, J. (1981). A Bound for the Steiner Tree Problem in Graphs. Math. Slovaca 31:155-163.
Polzin, T. & Daneshmand, S. V. (2001). Improved algorithms for the Steiner problem in networks. Discrete Applied
Math. 112:263-300.
Promel, H. J. & Steger, A. (1997). RNC-Approximation Algorithms for the Steiner Problem. In: Proceedings 14th
Annual Symposium on Theoretical Aspects of Computer Science, 559-570.
Rayward-Smith, V. J. (1983). The Computation of Nearly Minimal Steiner Tree in Graphs. Int. J. Math. Educ. Sci.
Technol. 14:15-23.
Reich, G. & Widmayer, P. (1989). Beyond Steiner’s problem: A VLSI oriented generalization. In: Workshop on
Graph-Theoretic Concepts in Computer Science, 196-210.
Ribeiro, C. C. & Souza, M. C. D. (2000). Tabu Search for the steiner problems in graphs. Networks 36(2):138-146.
Ribeiro, C. C., Uchoa, E. & Werneck, R. F. (2002). A hybrid grasp with perturbations for steiner problem in graphs.
INFORMS J. on Computing 14(3):228-246.
Richards, D. (1989). Fast heuristic algorithms for rectilinear Steiner trees. Algorithmica 4:191-207.
Richey, M. B., Parker, R. G. & Rardin, R. L. (1985). An efficiently solvable case of the minimum weight equivalent
subgraph probleml. Networks 15:217-228.
Robins, G. & Zelikovsky, A. (2005). Tighter bounds for graph Steiner tree approximation. SIAM Journal on Discrete
Mathematics 19(1):122-134.
Robins, G. & Zelikovsky, A. (2000). Improved Steiner tree approximation in graphs. In: Proceedings of the 11th an-
nual ACM-SIAM symposium on Discrete algorithms, 770-779.
Rothfarb, R., Frank, H., Rosenbaum, D. M., Steiglitz, K. & Kleitman, D. J. (1970). Optimal Design of Offshore
Natural Gas Pipeline Systems. Opns. Res 18:992-1020.
Satoh, T., Nara, K., Mishima, Y. & Okano, H. (2002). Algorithm for Solving Steiner Problem in Graph. In: IASTED
International Conference on Simulated Evolution And Learning, 158-163.
Skorin-Kapov, N. & Kos, M. (2003). The application of Steiner trees to delay constrained multicast routing: a tabu
search approach. In: Proceedings of the 7th International Conference on Telecommunications, ConTEL 2003, 443-448.
Smith, J. M. (2001). Steiner trees and the dynamic quadratic assignment problem. Combinatorial Optimization
11:377-404.
Smith, J. M. (1981). An O(nlogn) Heuristic for the Steiner Minimal Tree Problems on the Euclidean Metric. Net-
works 11:23-39.
Smith, J. M., Lee, D. T. & Liebman, J. S. (1980). An O(nlogn) heuristic algorithm for the rectilinear Steiner minimal
tree problem. Engineering Optmization 4:179-192.
Smith, J. M. & Liebman, J. S. (1979). Steiner tree, Steiner circuits and the interference problem in building design,
Engineering Optimization 4:15-36.
Stanton, C. & Smith, J. M. (2004). Steiner trees and 3-D macromolecular conformation. INFORMS Journal on
Computing 16(4):470-485 Electronic Edition.
Takahashi, H. & Matsuyama, A. (1980). A Approximate Solution for the Steiner Problem in Graphs. Mathematica
Japonica 24:573-577.
Valiant, L. G. (1979). The complexity of enumeration and reliability problems. SIAM Journal on Computing 8:410-421.
CAPÍTULO 8  Árvores de Steiner 533

Verhoeven, M. G. A., Aarts, E. H. L. & Severens, M. E. M. (1996). Local search for the Steiner problem in graphs.
In: Modern Heuristic Search Methods, John Wiley.
Vik, K-H. & Halvorsen, P. & Griwodz, C. (2008). Evaluating Steiner-tree heuristics and diameter variations for ap-
plication layer multicast. Computer Networks 52:2872-2893.
Wade, A. S. & Rayward-Smith, V. J. (1997). Effective local search for the steiner tree problem. Studies in Locational
Analysis 11:219-241.
Westbrook, J. K. & Yan, D. C. K. (1993). Greedy Algorithms for the On-Line Steiner Tree and Generalized Steiner
Problems. In: Proceedings of Workshop on Algorithms and Data Structures, WADS'93, 622-633.
Williamson, D. P., Goemans, M. X., Mihail, M. & Vazirani, V. V. (1993). A primal-dual approximation algorithm
for generalized Steiner network problems. In: Proceedings of the 25th ACM Symposium on Theory of Computing,
708-717.
Winter, P. (1987). Steiner Problem in Networks: A Survey. Networks 17:129-167.
Wong, R. T. (1984). A Dual Ascent Approach for the Steiner Tree Problems on a Directed Graph. Math. Prog.
28:271-287.
Wu, X., Li, S. & Chen, G. (2010). Maintaining Approximate Minimum Steiner Tree and k-center for Mobile Agents
in a Sensor Network. In: International Conference on Mobile Adhoc and Sensor Systems (MASS), 2006 IEEE, 1-5.
Yan, S. & Lin, B. (2008). Application-Specific Network-on-Chip Architecture Synthesis based on Set Partitions and
Steiner Trees. In: Design Automation Conference, ASPDAC 2008. Asia and South Pacific, 277-282.
Yang, D-N. & Liao, W. (2008). On Multicast Routing Using Rectilinear Steiner Trees for LEO Satellite Networks.
IEEE Transaction on Vehicular Technology, 57(4):2560-2569.
Zelikovsky, A. (1996). Better Approximation Bounds for the Network and Euclidean Steiner Tree Pro-
blems. Technical report CS-96-06, University of Virginia, disponível em: http://citeseer.ist.psu.edu/viewdoc/
summary?doi=10.1.1.30.362. Acesso em setembro de 2011.
Zelikovsky, A. (1993). An 11/6-Approximation Algorithm for the Network Steiner Problem. Algorithmica 9:463-470.
Zhou, D. & Gao, J. (2010). Maintaining Approximate Minimum Steiner Tree and k-center for Mobile Agents in a
Sensor Network. In: Proceedings IEEE NFOCOM, 2010, 1-5.
CAPÍTULO 9 Caixeiro-viajante 535

capítulo
536 Grafos

9.1 O Problema do Caixeiro-viajante


O problema do caixeiro-viajante (PCV) é um dos clássicos problemas da otimização combinatória, consistindo
em determinar em um grafo ponderado G = (N, M), onde N = {1,..., n} representa o conjunto de vértices do grafo
e M = {1,..., m} o conjunto de arestas, um ciclo hamiltoniano de menor custo. Segundo Schrijver (1990) em seu
trabalho On the history of combinatorial optimization (Till, 1960), a ideia do ciclo hamiltoniano mínimo como um
problema de aplicação surge pela primeira vez na década de 1920, através de Karl Menger, em Viena. Em uma
visita a Princepton e durante um seminário, conhece Hassler Whitney. Supostamente em seminários posteriores
de Whitney, entre 1931-1932, ele teria se referido ao problema como caixeiro-viajante. Todavia, essa origem não
está livre de contestação. Sabidamente, todavia, o problema foi estudado em anos futuros por outros pesquisado-
res como Menger (1940) e Milgran (1940) ou estatísticos como Mahalanobis (1940), Jessen (1942), Gosh (1948)
e Maks (1948), que também examinaram o modelo. Finalmente, Flood (1956) publica um trabalho pioneiro na
revista Operations Research.

Encontrar um ciclo hamil-


O Problema do Caixeiro-viajante
π toniano de custo mínimo e
máximo em um grafo sem pro-
Consiste em determinar em um grafo G = (N, M) ponderado em arestas (direcionado priedades particulares é:
ou não) um ciclo hamitoniano de custo mínimo.
NP-Difícil
O Caixeiro Viajante Máximo
π
O problema da determinação
Consiste em determinar em um grafo G = (N, M) ponderado em arestas (direcionado ou do subgrafo euleriano gerador
não) um ciclo hamitoniano de custo máximo. Trata-se de um problema equivalente mínimo é uma relaxação do cai-
ao caixeiro-viajante clássico. xeiro-viajante, que mostra uma
(Blokh & Gutin, 1995; Barvinok et al., 2002). interessante conexão entre ciclos
eulerianos e hamiltonianos. O
subgrafo possui uma cadeia fe-
Subgrafo Euleriano Gerador
π chada (sem repetir arestas) míni-
ma que visita todos os vértice de
Consiste em determinar em um grafo G = (N, M) ponderado em arestas (direcionado ou G, todavia permitindo a repetição
não) uma cadeia fechada mínima que visite todos os vértices de G (geradora). de visitas aos vértices de G.
(Cho & Zelikovsky, 1985; Catlin, 1987).

NP-Difícil

As Figuras 9.1(2)-(4) exemplificam os três problemas anteriores, considerando o grafo da Figura 9.1(1).

1 5 2 1 5 2 1 5 2 1 5 2
1 1 1 1 1
10 5 10 5 10 10 5 10 5
1 1 1 1 1 1 1
3 2 4 3 2 4 3 4 3 2 4

Grafo G (2) Caixeiro-viajante (3) Caixeiro máximo (4) Subgrafo euleriano

Figura 9.1 Caixeiro-viajante e sua relaxação


CAPÍTULO 9 Caixeiro-viajante 537

O PCV é NP-Difícil (Garey & Johnson, 1979), sendo um dos problemas de otimização combinatória mais
intensamente pesquisados até o presente momento. A maior instância não trivial solucionada de forma exata
evoluiu de 318 cidades na década de 1980 (Crowder & Padberg, 1980) para 7.397 cidades em meados dos anos
1990 (Applegate et al., 1994) e 24.978 cidades em 2004. A melhor marca foi obtida em abril de 2006, na solução de
uma instância de 85.900 cidades (Applegate et al., 2006). A maior instância hoje disponível é a “World TSP” com
1.904.711 cidades e disponível no http://www.tsp.gatech.edu/world/. O problema possui diversas aplicações reais
(Gutin & Punnen, 2007) e muitas variantes, algumas das quais serão examinadas no presente capítulo.

A importância do Caixeiro Viajante


π
A importância do problema do caixeiro-viajante pode ser atribuída a três características
combinadas:

1. Grande Número de Aplicações Práticas


(Bellmore & Nemhauser, 1968; Burkard, 1979; Reinelt, 1994; Laport & Martelo,
1990; Gutin & Punnen, 2007)

2. Relação com outros Problemas e muitas Variantes


(Laporte et al., 1996; Gutin & Punnen, 2007)

3. Grande dificuldade de Solução Exata


(Papadimitriou & Steiglitz, 1982; Miller & Pekny, 1991; Grötsche & Holland, 1991)

Existem diversas variações do PCV, cada uma delas possuindo várias aplicações reais. Algumas das variações
são apresentadas no presente capítulo. Serão destacadas inicialmente duas variantes que introduzem alterações no
cerne da definição do caixeiro-viajante, que é a propriedade do problema de desenvolver um ciclo e do ciclo de
ser hamiltoniano. Essas duas variantes exemplificam bem a constelação de problemas que se associou, ao longo do
tempo, ao problema clássico do caixeiro-viajante.

O Caminho do Caixeiro Viajante


π
Considerando um grafo G = (N, M) ponderado em arestas (direcionado ou não) e
dados pares de cidades hi e hj ∈ N, o problema consiste em determinar um caminho
de comprimento mínimo que, iniciado em hi e terminado em hj, percorra todas
os vértices de G. Também é relatado na literatura o passeio do caixeiro-viajante,
onde é necessário visitar pelo menos uma vez cada cidade do grafo.
(Lam & Newman, 2008)

O Caixeiro Viajante Multivisitas


π
Determinar em um grafo G = (N, M) um ciclo de comprimento mínimo que passe
si vezes em cada cidade hi ∈ N.
(Cosmadakis & Papadimitriou, 1984)
O problema possui uma variante denominada high multiplicity traveling salesman
problem.
(Grigorieva & van de Klundert, 2006)
538 Grafos

9.2 Algoritmos Heurísticos para o PCV


Diversos algoritmos heurísticos foram desenvolvidos para o problema do caixeiro-viajante, quatro dos quais são
descritos a seguir.

Algoritmo de Bellmore & Nemhauser

Uma das mais simples heurísticas construtivas para o caixeiro-viajante deve-se a Bellmore & Nemhauser (1968).
A heurística também é denominada vizinho mais próximo e está descrita no quadro Bellmore & Nemhauser.

A Bellmore & Nemhauser


Ler G = (N, M)
Escolher um vértice inicial hi e inclui-lo em H ← {hi}
Enquanto |H| < n Fazer
Encontrar o vértice hk ∉ H mais próximo de hi
Inserir o vértice hk após hi em H (o seu vizinho mais próximo)
i←k
Fim_Enquanto

Heurístico

As Figuras 9.3(1) a (6) ilustram os passos de aplicação da heurística do vizinho mais próximo ao grafo da Fi-
gura 9.2. No exemplo mostrado na Figura 9.2, o ciclo é iniciado no vértice 1. Observe que o procedimento guloso
pode resultar em inserções forçadas de alto custo, tendo em vista se esgotarem os vértices a serem visitados. Isso
acontece nos passos (4) e (5), onde as arestas impedidas de serem inseridas pelo procedimento em virtude de es-
tarem ligadas a vértices já incluídos no ciclo aparecem pontilhadas. No grafo examinado, a heurística de Bellmore
& Nemhauser conduz a um ciclo de valor final igual a 18.

2
2 3
3 5
1 1 3

4 7 2 3

5 4 4

Figura 9.2 Grafo do exemplo do algoritmo de Bellmore & Nemhauser


CAPÍTULO 9 Caixeiro-viajante 539

2 3

1 1 1 1 3
1 1 3

3
7 4 2
4 2 3

5 4

(1) 1a inserção (1-3) (2) 2a inserção (3-5) (3) 3a inserção (5-2)

2 2 2

2 3
5 3 5 3 5
1 1 3 1 1 3 1 1 3

3
7 2 3 7 2
2

5 5 4 4 5 4

(4) 4a inserção “forçada” (2-4) (5) 5a Inserção “forçada” (4-1) (6) Solução final

Figura 9.3 Desenvolvimento do algoritmo de Bellmore & Nemhauser

Complexidade Bellmore & Nemhauser


O procedimento percorre os n vértices do grafo. Em cada vértice são examinados os vizinhos do vértice. Como, no máximo, os
vizinhos são O(n) o procedimento resulta em, no máximo, O(n2) operações.

Heurístico O(n2)

Heurísticas de Inserção de Vértices

Algumas heurísticas construtivas possuem um processo de decisão que envolve cuidados mais elaborados do que
simplesmente a utilização de uma estratégia gulosa. Tais heurísticas tratam de ampliar determinado ciclo previa-
mente calculado através da agregação de novos vértices (ou arestas, conforme será examinado no próximo item)
no ciclo e são denominadas, normalmente, simplesmente inserção. Basicamente realizam a escolha:

 de um vértice ou aresta a ser inserida na solução.


 da posição de inserção desse novo vértice ou aresta.
 do ciclo inicial que deverá ser considerado.
540 Grafos

Normalmente as heurísticas de inserção partem de um subtour inicial – normalmente um ciclo de comprimen-


to 3 – e vão selecionando e inserindo vértices ainda não incluídos na solução até completar um ciclo. Os critérios
mais utilizados para a seleção dos vértices a serem somados ao subtour são:

 Inserção do vértice mais próximo (associado à aresta mais barata).


 Inserção do vértice mais distante (associado à aresta mais cara).
 Inserção do vértice (aresta) que conduz ao ciclo de menor custo (inserção mais barata).
 Inserção aleatória.

As heurísticas de inserção de vértices podem ser descritas conforme os quadros Insere Vértice 1 e Insere Vértice 2.

A Insere Vértice 1
Ler G = (N, M)
Iniciar por um ciclo de vértices H
Enquanto não for formado um ciclo hamiltoniano Fazer
Encontrar o vértice k ∉ H, mais próximo / mais distante de qualquer dos vértices de H.
Encontrar a aresta (i, i + 1) tal que Minimize {cik + ck i +1 – ci i + 1}
Inserir o vértice k em H entre os vértices i e i + 1
Fim_Enquanto

Heurístico

A Insere Vértice 2
Ler G = (N, M)
Iniciar por um ciclo de vértices H
Enquanto não for formado um ciclo hamiltoniano Fazer
Encontrar k ∉ H tal que sua inserção entre os vértices i e i +1 de H
Minimize {cik + ck i +1 – ci i + 1}
Inserir o vértice k em H entre os vértices i e i +1
Fim_Enquanto

Heurístico

No caso das inserções utilizando os vértices mais próximos e mais distantes de um vértice do subtour H, uma
vez escolhido o vértice que será inserido, cabe decidir como será realizada a inserção no subtour. São necessárias
duas arestas para incluir o vértice em H. Caso a inclusão do vértice ocorra entre os vértices i e i+1, será neces-
sário remover a aresta (i, i+1) de H para preservar a viabilidade do subtour. A decisão sobre quais arestas serão
escolhidas é tomada considerando o balanço do custo de entrada versus o custo de saída das arestas examinadas.
Considerando a inserção do vértice hk entre os vértices i e i+1. Considerando ainda que cij é o custo da aresta (i,j), o
critério para a escolha do ponto de inserção se confunde com o critério de escolha da aresta (i, i+1), que minimiza
o seguinte balanço:

cik + ck i+1 – ci i+1

A heurística Insere Vértices 2 exige maior esforço de processamento computacional, pois verifica todas as in-
serções possíveis para todos os vértices ainda não pertencentes ao subtour. As Figuras 9.3(2) a (6) exemplificam a
aplicação de Insere Vértice 1 para o caso do grafo 9.3(1).
CAPÍTULO 9 Caixeiro-viajante 541

1
1 2
2 2
3 3
7 7 2
6
8 2 1
1 2
3 3
1 7 7 2
6 1 3
8
5
5
5 4
4
5 2 4

(1) Grafo exemplo – K7 (2) Ciclo inicial

1 1
1 2 1 2
i i+1
7 7 2 7 7 2

3
1

1
3 3
k
(3) Escolha do vértice mais próximo a qualquer vértice do ciclo (4) 1a inserção possível
1 + 3 – 7 = –3

i i+1
1 1
1 2 1 2
2 i+1 i 2
7 7 2 7 7 2

3
k k
1
3 3

(5) 2a inserção possível (6) 3a inserção possível


2 + 3 – 2 = +3 1 + 2 – 1 = +2

Figura 9.3 Execução de um passo da heurística insere vértice 1


542 Grafos

Complexidade Insere Vértice 1


O procedimento percorre os n vértices, exigindo, consequentemente, O(n) operações nessa etapa. Em cada vértice são examina-
das as arestas incidentes, o que, no pior caso, pode exigir O(m) operações. Assim, sem cuidados especiais ou uma estrutura de
dados dedicada, o procedimento pode exigir até O(mn) operações.

Heurístico O(mn)

A Figura 9.4 exemplifica com a heurística Insere Vértices 2 e diferencia-se da heurística Insere Vértice 1 de-
senvolvendo a inserção dos vértices 4 e 5. As operações que na heurística Insere Vértice 1 eram realizadas apenas
para o vértice mais próximo (no caso do exemplo, o vértice 3) agora são realizadas para todos os vértices, para
todas as arestas do ciclo.

1 1
1 2 1 2
i i+1 i i+1
7 7 2 7 7 2
8 2
1
1 2

7 7 2 5 4

k k
5 4

(1) Remoção da aresta (2-7) (2) 1a inserção possível (3) 2a inserção possível
5+4–7=+2 8+2–7=+3

Figura 9.4 Execução parcial da heurística Insere Vértices 2

Assim, removendo-se a aresta (2,7), no caso de Insere Vértice 2, os demais vértices seriam testados da mesma
forma que o vértice 3 na Insere Vértice 1, realizando-se a inserção que resultasse na maior economia possível.
Neste caso, o procedimento Insere Vértice 2 escolheria, no primeiro passo, a mesma inserção realizada na Insere
Vértice 1.

Complexidade Insere Vértice 2


No caso da heurística Insere Vértice 2 a operação de examinar somente um vértice – o “mais próximo” de Insere Vértice 1
é substituída pelo exame de todos os vértices do grafo ainda não incluídos no ciclo. Assim são examinados n–1 vértices, n–2,
n–3, ... 1 vértices ao longo do desenvolvimento do algoritmo, exigindo exames da ordem da soma dos n naturais nesse passo,
ou seja, O(n2) operações. Todavia, em cada vértice considerado, são examinadas as arestas incidentes, o que, no pior caso, pode
exigir O(m) operações. Assim, sem cuidados especiais ou uma estrutura de dados dedicada, o procedimento pode exigir até
O(mn2) operações.

Heurístico O(mn2)
CAPÍTULO 9 Caixeiro-viajante 543

Arthur & Frendewey (1959) relatam bons resultados computacionais no uso dessas heurísticas para caixeiro-
-viajante de um modo geral. Para o caso do caixeiro-viajante simétrico euclidiano, constatou-se superioridade na
qualidade de solução para a inserção mais distante.

Heurísticas de Inserção de Arestas

Essa classe de heurísticas se caracteriza por permutar arestas em um ciclo formado. O quadro Insere Aresta for-
maliza o procedimento. A Figura 9.5 exemplifica a inserção de arestas em relação ao grafo da Figura 9.5(1) e o ciclo
H da Figura 9.5(2). A aresta (1,4) é inserida entre os vértices 2 e 5 na Figura 9.5(4) e entre os vértices 5 e 3 na Figura
9.5(5). O procedimento prossegue inserindo a aresta entre os vértices 3 e 6, 6 e 2.

2
1 2 1 2
1 6 1

2 5 8 1 5 8
6 3 3 6 3 3
1 9 9

2 10 7 3 7

5 2
4 5 4

(1) Grafo do exemplo (2) Ciclo H

1 4 2 5 3 6 2 1 4 5 3 6 2 5 1 4 3 6

(3) H custo = 33 (4) 1a inserção custo=22 (5) 2a inserção custo = 31

Figura 9.5 Execução parcial da heurística Inserção de Arestas

A Figura 9.6 esclarece a diferença de movimentos imposta por uma inserção de arestas versus uma inserção de
vértices.

r s r s
h
h
i k i k

Inclusão de um vértice – Remove três arestas e inclui três

r s r s
i j
i j

i k i k

(2) Inclusão de uma aresta – remove três arestas e inclui três, todavia preserva uma dada aresta

Figura 9.6 Comparação dos movimentos de inserção de vértice versus inserção de arestas
544 Grafos

A Insere Vértice 2
Ler G = (N, M)
Iniciar por um ciclo com n vértices H = [hi]
Z ← Avalia (H); H* ← H; Z* ← Z;
Para i ← 1,...n Fazer
x←i
Se (x = n) então y ← 1
Senão y ← x + 1
Fim_Se
Para j ← 1,... n–2 Fazer // A iteração n–2 é para restaurar o ciclo original //
a ← (x + 2) mod(n + 1) // Operação mod retorna o resto da divisão inteira //
Se (a = 0) então a ← 1
Senão
Se (x = 0) então x ← 1
Senão
Se (y = 0) então y ← 1
Fim_Se
Fim_Se
aux ← ha
ha ← hy
hy ← hx
hx ← aux
Z ← Avalia (H)
Se Z < Z* então
H* ← H; Z* ← Z;
Fim_Se
x ← (x+1) mod(n+1); y ← (y+1) mod(n+1)
Fim_Para
Fim_Para
Escrever H* e Z*

Heurístico

Heurísticas de Inserção e Deslocamento de Vértices – Shift

Uma heurística de inserção bastante eficiente e de fácil implementação é a denominada Shift. Consiste em inserir
um vértice entre dois outros, em um ciclo, deslocando todos os demais vértices do ciclo em uma posição – fazendo
uma operação de Shift. O procedimento de permutação e deslocamento é repetido para todos os vértices do ciclo.
O quadro Shift resume o procedimento.
CAPÍTULO 9 Caixeiro-viajante 545

A Shift
Ler G = (N, M)
Iniciar por um ciclo com n vértices H = [ hi ]
Z ← Avalia (H); Z* ← Z; H* ← H
Para i ← 1,...n Fazer
Haux ← H; Zaux ← Z; A ← 0
Para i ← 1,...,n–1 Fazer
Aux ← hi ; hi ← hi+1; hi+1 ← Aux
Z ← Avalia (H)
Se Z < Zaux então
Zaux ← Z ; A ← i
Fim_Se
Fim_Para
Se A ≠ 0 e Z* > Zaux então
Para i ← 1,..., A Fazer
Aux ← hauxi ; hauxi ← hauxi+1 ; hauxi+1 ← Aux
Fim_Para
H* ← Haux; Z* ← Zaux
Fim_Se
Fim_Para
Imprimir H* e Z*

Heurístico
Nessa heurística um vértice escolhido (ou uma aresta) é sucessivamente inserido em todas as posições possí-
veis do ciclo, mantendo-se ao final a posição de melhor inserção. As Figuras 9.7(3)-(7) exibem seu funcionamento
no grafo da Figura 9.7(1). As Figuras 9.7(4), (5), (6) e (7) mostram as possibilidades de o vértice 1 ser recolocado
dentro da sequência de vértices do ciclo exibido na Figura 9.7(3). A Figura 9.7(9) mostra o prosseguimento do
algoritmo com a inserção do vértice 4 entre 2 e 5, considerado o ciclo da Figura 9.7(8).

2
1 2 1 2
1 6 1

2 5 8 5 8
1
6 3 3 6 3 3 1 4 2 5 3 6
1 9 9

2 10 7 3 7

5 1
4 5 4

(1) Grafo exemplo – K6 (2) Ciclo inicial (3) Representação do ciclo

4 1 2 5 3 6 4 2 1 5 3 6 4 2 5 1 3 6

(4) Insere 1 entre 4 e 2 (5) Insere 1 entre 2 e 5 (6) Insere 1 entre 5 e 3

4 2 5 3 1 6 4 2 5 3 6 1 2 4 5 3 6 1

(7) Insere 1 entre 3 e 6 (8) Insere 1 entre 6 e 4 (9) Insere 4 entre 2 e 5

Figura 9.7 Heurística shift


546 Grafos

Complexidade Shift
O procedimento insere n vértices sobre ciclos de comprimento n. Cada operação completa de inserção de um vértice é composta
por n–1 inserções no ciclo de comprimento n. Assim, sem cuidados especiais ou uma estrutura de dados dedicada, o procedi-
mento pode exigir até O(n2) operações.

Heurístico O(n2)

Heurísticas Exchange

Uma heurística de inserção bastante eficiente e de fácil implementação é a denominada Exchange, ou troca sim-
ples. O quadro Exchange 1 apresenta a heurística em sua forma mais simples.
No quadro Exchange 1 um vértice do ciclo é escolhido a priori para ser permutado com os demais vértices. Esse
vértice é guardado na variável k. Observa-se que a obtenção do ciclo inicial dessa heurística pode ser realizada de
forma trivial, caso o grafo G = (N, M) seja completo através de qualquer permutação dos n vértices do grafo.

A Exchange 1
Ler G = (N, M), k // k é o índice do vértice de troca //
Constituir um ciclo com n vértices H = [ hi ]
Zaux ← Avalia (H); A ← 0; B ← 0
Para i ← 1,...n Fazer
Se i ≠ k então
Aux ← hi ; hi ← hk ; hk ← Aux
Z ← Avalia (H)
Se Z < Zaux então
Zaux ← Z ; A ← i ; B ← k
Fim_Se
Aux ← hi ; hi ← hk ; hk ← Aux
Fim_Se
Fim_Para
Se A ≠ 0 então
Aux ← hA ; hA ← hB ; hB ← Aux
Z ← Zaux
Fim_Se
Imprimir H e Z

Heurístico

As Figuras 9.8 (1) a (6) apresentam o exemplo dessa troca para o caso do grafo da Figura 9.7(1) e consideram
como configuração inicial o mesmo da Figura 9.7(2) e k = 5.
CAPÍTULO 9 Caixeiro-viajante 547

1 4 2 5 3 6 5 4 2 1 3 6 1 5 2 4 3 6

(1) Configuração inicial – k = 5 (2) Troca 5 por 1 (3) Troca 5 por 4

1 4 5 2 3 6 1 4 2 3 5 6 1 4 2 6 3 5

(4) Troca 5 por 2 (5) Troca 5 por 3 (6) Troca 5 por 6

Figura 9.8 Heurística Exchange 1

Complexidade Exchange 1
A heurística permuta um vértice ao longo do vetor de representação do ciclo, ocupando todas as posições de permutação pos-
síveis – que são n. Assim, sem cuidados especiais ou uma estrutura de dados dedicada, o procedimento pode exigir até O(n)
operações.

Heurístico O(n)

A heurística Exchange 2 pode permutar todas as cidades entre si, não somente uma cidade k escolhida. O qua-
dro Exchange 2 formaliza essa possibilidade.

A Exchange 2
Ler G = (N, M)
Constituir um ciclo H = [ hi ]
Zaux ← Avalia (H); A ← 0; B ← 0
Para i ← 1,...,n–1 Fazer
Para j ← i+1,...,n Fazer
Aux ← hi ; hi ← hj ; hj ← Aux
Z ← Avalia (H)
Se Z < Zaux então
Zaux ← Z ; A ← i ; B ← k
Fim_Se
Aux ← hi ; hi ← hk ; hk ← Aux
Fim_Para
Fim_Para
Se A ≠ 0 então
Aux ← hA ; hA ← hB ; hB ← Aux
Z ← Zaux
Fim_Se
Imprimir H e Z

Heurístico
548 Grafos

As Figuras 9.9 (1) a (6) apresentam o exemplo dessa troca para o caso do grafo da Figura 9.7(1) para a primeira
posição considerada, segundo a configuração inicial da Figura 9.9(1). Após a realização das trocas entre o vértice
1 e os demais, as Figuras 9.9 (7) a (9) mostram a continuidade da enumeração para o vértice 6, que passa a ocupar
a primeira posição de troca.

1 4 2 5 3 6 4 1 2 5 3 6 2 4 1 5 3 6

(1) Configuração inicial – k = 1 (2) Troca 1 por 4 (3) Troca 1 por 2

5 4 2 1 3 6 3 4 2 5 1 6 6 4 2 5 3 1

(4) Troca 1 por 5 (5) Troca 1 por 3 (6) Troca 1 por 6

4 6 2 5 3 1 2 4 6 5 3 1 5 4 2 6 3 1

(7) Troca 6 por 4 (8) Troca 6 por 2 (9) Troca 6 por 5

Figura 9.9 Heurística Exchange 2

Complexidade Exchange 2
A heurística permuta um vértice ao longo do vetor de representação do ciclo, ocupando todas as posições de permutação pos-
síveis – que são n. Retoma o processo até esgotar os outros n–1 vértices. Assim, sem cuidados especiais ou uma estrutura de
dados dedicada, o procedimento pode exigir até O(n2) operações.

Heurístico O(n2)

Heurísticas de k-Substituições

As heurísticas de substituição são estratégias de melhoria e partem de um ciclo hamiltoniano inicial. São também
denominadas de k-ótimas. Um dos exemplos clássicos encontra-se no trabalho de Lin & Kernighan (1973). Elas
possuem relatos de bom desempenho computacional, especialmente as 2-Opt e 3-Opt (Golden et al., 1980 ) e hoje
fazem parte de inúmeros outros algoritmos (Gerdessen, 1996).
CAPÍTULO 9 Caixeiro-viajante 549

A k-Opt
Ler G = (N, M)
Iniciar por um ciclo hamiltoniano H = [ hi ]
Enquanto Regra de Parada = Falso Fazer
// Regra de parada pode ser o número de iterações, elementos em subconjunto
de controle, limites para o valor da solução, etc. //
Remover k arestas do ciclo corrente, tornando-o incompleto
Construir todas as soluções viáveis que contenham as arestas restantes do ciclo
Escolher a melhor solução entre as encontradas
Fim_Enquanto

Heurístico

Um exemplo de execução da heurística das k-substituições é apresentado na Figura 9.11, considerando o grafo
da Figura 9.10(1) e o ciclo hamiltoniano 1-3-2-5-4-6 de comprimento 18 (Figura 9.10(2)).

2
1 2 1 2
1 6 1 6
2 5 8 1 1
6 3 3 8
9
6 3
1 1
2 10 7 3

5 1
4 5 4
1

(1) Grafo (2) Ciclo hamiltoniano de custo = 18

Figura 9.10 Grafo e ciclo hamiltoniano inicial

As Figuras 9.11(1)-(8) exibem quatro possibilidades de remover e reinserir duas arestas no referido ciclo de
modo a caracterizar o procedimento de 2-substituição ou 2-Opt.

1 2 1 2
1 6 6
5
8 1 8 1
6 3 6 3
1 1
2

5 4 5 4
1

(1) 1a substituição (2) 1a viabilização = 23

Figura 9.11 Funcionamento da heurística 2-opt – 1a parte


550 Grafos

1 2 1 2
1 6 1

8 1 8 1
6 3 6 7 3
1 9
1

5 4 5 4
1

(3) 2a substituição (4) 2a viabilização = 27

1 2 1 2
1 6 6

8 1 2 1
6 3 6 10 3
1 1

5 4 5 1
4
1

(5) 3a substituição (6) 3a viabilização = 21

1 2 2
1
1
6 1
8 1
2 8 1
6 3 3
6
1

3
5 4 5
1
1
4

(7) 4a substituição (8) 4a viabilização = 16

Figura 9.11 Funcionamento da heurística 2-opt – 2a parte

A Figura 9.12 mostra o efeito da troca de duas arestas em um ciclo.

Figura 9.12 Substituição de duas arestas


CAPÍTULO 9 Caixeiro-viajante 551

Complexidade k-Opt
A heurística substitui um número k de arestas no ciclo. Para cada conjunto de k arestas, em um grafo completo, existe um número
de ciclos igual à combinação de k, n a n a examinar. Por outro lado, cada viabilização exige O(k) operações.
Assim, a complexidade do procedimento é limitada pela combinação, sendo O(nk).

Heurístico O(nk)

Heurística Twice-Around

A condição necessária e suficiente para que um grafo contenha um ciclo euleriano foi demonstrada primeiramente
por Euler e exige que todo vértice de G tenha grau par (conforme Lema 3.1). Dado um grafo euleriano é possível
obter seu ciclo euleriano através de vários procedimentos, mas o denominado depth-first trasversal o faz em O(m)
(Aho et al., 1974). No algoritmo Twice-Around, iniciando por uma árvore geradora mínima do grafo G, um ciclo
hamiltoniano é obtido com base em um ciclo euleriano em G através de um percurso que, utilizando “atalhos”
sempre que possível, evita a repetição de vértices no ciclo. A complexidade da heurística é dominada pela geração
da árvore geradora mínima – O(n2). O quadro Twice-Around apresenta o procedimento. A Figura 9.13 exibe o
grafo que será utilizado para exemplificar a execução do procedimento.

A Twice-Around
Ler G = (N, M)
H←∅ // H o ciclo hamiltoniano //
Determinar T uma árvore geradora mínima de G
Dobrar as arestas de T e construir um ciclo euleriano L = {li} , li ∈ N, em T

Enquanto L ≠∅ Fazer
Escolher sequencialmente lk ∈ L
Se lk ∉ H então H ← H ∪ {lk} Etapa Twice-Around – TW(.)
L ← L\{hk}
Fim_Enquanto

Heurístico

1 1 2
4 6
2 8 9
5 5
7
6 4 3
10
3 10

7
5 1 4

Figura 9.13 Grafo exemplo para a heurística Twice-Around


552 Grafos

A Figura 9.14 exemplifica o procedimento quando aplicado ao grafo da Figura 9.13.

1ª 1ª

1 1 2 1 2ª 2 1 2ª 2
3ª 3ª
2
10ª 10ª Atalho


6 4 3 6 3 6 3
5ª 5ª

3 6ª 6ª
9ª 7ª 9ª 7ª
5 1 4 5 4 5 4
8ª 8ª

(1) Árvore geradora mínima (2) Inicialização (3) Percurso (1-2); (2-1);
L = (1,2,1,6,3,6,5,4,5,6,1) (1,6) → aresta (2-6)
1ª 1ª 1ª

1 2 1 2 1 2
Atalho Atalho Atalho

4ª 4ª 4ª
6 5ª
3 6 5ª
3 6 3

6ª 6ª Atalho Atalho
9ª 7ª 9ª 7ª 7ª

5 4 5 4 5 4
8ª 8ª 8ª

(4) Caminho reorganizado (5) Percurso (6-3); (3-6); (6) Caminho reorganizado
H = (1-2-6) (6,5) → aresta (3-6) H = (1-2-6-3-5)

1 2 1 2
Atalho


6 3 6 3
Atalho
Atalho

5 4 5 4

(7) Percurso (5-4); (4-5) → aresta (4-1) (8) Ciclo final H = (1-2-6-3-5-4-1), custo = 31

Figura 9.14 Desenvolvimento da heurística Twice-Around


CAPÍTULO 9 Caixeiro-viajante 553

Heurística de Christofides

A heurística de Christofides (1976) acrescenta uma etapa de aperfeiçoamento do critério da seleção das arestas que
permitirão encontrar o ciclo euleriano que será transformado em ciclo hamiltoniano. O processo de duplicação
das arestas da árvore geradora é substituído por uma seleção que emprega a solução de um problema de matching
perfeito mínimo.
A heurística de Christofides calcula um matching perfeito mínimo sobre os vértices de T, uma árvore geradora
mínima do grafo, que possuem grau ímpar e acrescenta tais arestas a T, obtendo um grafo euleriano onde o pro-
cedimento TW(.) do quadro Twice-Around pode ser aplicado para encontrar o ciclo hamiltoniano (Campello &
Maculan, 1994). O quadro Christofides apresenta uma variação da heurística de Christofides, a qual utiliza a etapa
TW(.) do quadro Twice-Around.

A Christofides
Ler G = (N, M)
H ←∅ // H o ciclo hamiltoniano //
Determine T = (N,MT) uma árvore geradora mínima de G
Defina G0 = (N0,M0) onde N0 é o conjunto de vértices de T que possuem grau ímpar
e M0 ={(i,j) ∈ M | i,j ∈ N0}
Determine E* o 1-matching perfeito mínimo em G0
Faça G´ = (N,MT ∪ E*)
Determine um ciclo euleriano L em G´
H ← TW(L)
Imprimir H

Heurístico

Christofides (1976) apresenta uma prova de que a solução produzida por seu algoritmo é no máximo 1,5 vezes
pior que a solução ótima do problema.
A Figura 9.15 exibe os passos de aplicação da heurística de Christofides ao grafo da Figura 9.13. A Figura
9.15(4) mostra o ciclo encontrado na etapa da aplicação de TW.

1 1 2 2
6
2 5 5

6 4 3 6 4 3

3 10

7
5 1 4 4

(1) Vértices de grau ímpar na árvore (2) Matching E* = {(2-4),(6-3)} em G0


554 Grafos

1 1 2 1 1 2

2 5 4 5
4 Atalho

6 4 3 6 4 3

3 3

5 1 4 5 1 4

(4) Caminho 6-3-6-1-2-4-5-6 com repetição


(3) G´ = (N,MT ∪ E*)
H = (6-3-1-2-4-5-6)

Figura 9.15 Desenvolvimento da heurística de Christofides

Complexidade Christofides
A heurística é limitada pela complexidade do passo que exige o matching, que é O(n3).

Heurístico O(n3)

Heurística de Economia

Originalmente, a heurística de economia (saving) foi sugerida para problemas de roteamento de veículos (Clark &
Wright, 1964). Sua aplicação eficiente sugere a necessidade de um grafo completo, concluindo-se que é uma abor-
dagem bastante razoável para o PCV euclidiano e simétrico. O raciocínio da heurística é baseado na transformação
de um ciclo que repete visitas a todos os vértices e tem por foco um vértice escolhido em um ciclo hamiltoniano.
A repetição das visitas é eliminada por um “atalho” de economia. A Figura 9.16(1) exibe um ciclo que, partindo
do vértice 1, visita os vértices 6 e 5 do grafo. Trata-se de um passeio fechado no grafo da Figura 9.17(1) e que será
utilizado no exemplo de aplicação dessa heurística. Em relação a esse passeio é possível transformá-lo em um
caminho com a substituição das idas e voltas ao vértice 1 por um atalho ligando os vértices 1 e 6, como mostra a
Figura 9.16(2). As arestas (6-1) e (5-9) são atalhadas pela aresta (5-6). Portanto, o custo do passeio é reduzido no
custo de (6-1) e (5-9) e acrescido do custo de (5-6). No grafo da Figura 9.17 (1) esse balanço significa 1+9–2=7. Ou
seja, o passeio foi transformado em caminho com uma “economia” de 7 unidades. Essa “economia” será represen-
tada pela variável Sij, onde i e j são os vértices que serão atalhados pela ligação, permanecendo o vértice foco como
referência do atalho. No caso ilustrado nas Figuras 9.16(1) e (2), tem-se Sij = 20–12 = 8.
CAPÍTULO 9 Caixeiro-viajante 555

1 1 1
1
6 6
9 9

2
5 5

(1) Visita com repetição = (2 x 1) + (2 x 9) = 20 (2) Visita de atalho = 1 + 2 + 9 = 12

1 k 1 k
9 9
4 4

5 4 5 2 4
j i j i
(3) Visita com repetição = (2 x 9) + (2 x 4) = 27 (4) Visita de atalho = 9 + 2 + 4 = 15

Figura 9.16 Cálculo de economias

As Figuras 9.16(3) e (4) exibem os índices dos vértices. A economia S45 é igual a 12.
Nem sempre o talho vai resultar em economia real. O atalho pode custar mais caro que as visitas com repetição.
O algoritmo de economias é descrito no quadro de mesmo nome.

A Economias
Ler G = (N, M)
Iniciar pelo vértice k, selecionado por algum critério ou aleatoriamente;
Considerar todos os vértices ligados ao vértice k
// um circuito não hamiltoniano que passa n vezes pelo vértice k. //
Obter a lista das “economias” L da seguinte forma:
Sij = cjk + cki – cij i, j = 1, ... n
// S é uma economia se o vértice i for ligado ao vértice j sem passar por k //
Ordenar as economias em lista monótona decrescente;
Enquanto L ≠∅ Fazer
Percorrer a lista iniciando pela primeira posição. Tentar a ligação correspondente ao maior Sij
Se a inserção da aresta (i,j) e a retirada da aresta (k,i) e (j,k) resultar em uma rota iniciando em k e passando pelos demais
vértices, L\ Sij.
Caso contrário, tentar a ligação seguinte da lista.
Fim_Se
Fim_Enquanto

Heurístico
556 Grafos

A Figura 9.17 apresenta o grafo e o vértice foco para o desenvolvimento da heurística de economias que se
seguirá na Figura 9.18.

3 6
1 2 1 2
2 1
2 10 5 4
11 7 4
8
6
10 3
6 9 3
9 20

4 2
4
2
5 3 4 5

(1) Grafo para a heurística de economias (2) Vértice escolhido – caminhos ida e volta

Figura 9.17 Grafo e vértice selecionado para a heurística de economias

As “economias” são listadas em ordem não crescente. Nessa ordem elas serão escolhidas para dar origem aos
atalhos que criarão o ciclo hamiltoniano.

3 ⇒ S45 = 12 2 ⇒ S45 = 12
2 1 3 2 S56 = 8 1 2 ⇒ S56 = 8
S46 = 5 1 S46 = 5
2 2 1
S25 = 5 S25 = 5
2
6 S34 = 5 6 S34 = 5
5 5 3 5 3 S26 = 4
S26 = 4 10
10 S35 = 3
S35 = 3
10
S23 = –2 S23 = –2
4 S24= –3 3 4 S24 = –3

5 5
Lista L Lista L

(1) Inicialização (2) Economia S45 realizada

2 ⇒ S45 = 12 2 ⇒ S45 = 12
1 2 ⇒ S56 = 8
1 2 ⇒ S56 = 8
1 ⇒ S46 = 5 1 S46 = 5
1 1
S25 = 5 S25 = 5
6 S34 = 5 6 ⇒ S34 = 5
5 3 3
S26 = 4 S26 = 4
S35 = 3 2 S35 = 3
4 S23 = –2 4 S23 = –2
3 4 S24 = –3 3 4 S24 = –3

5 Lista L
5 Lista L

(4) Economia S46 é inviável, e também as economias S25.


(3) Economia S56 realizada
Realiza-se a economia S34
CAPÍTULO 9 Caixeiro-viajante 557

2 ⇒ S45 = 11
1 2
⇒ S56 = 8
S46 = 5
1
S25 = 5
2 As figuras relacionam somente parte da lista de
6 ⇒ S34 = 5
3 economias, as primeiras da lista. Por exemplo,
⇒ S26 = 4 a seguinte economia não está listada:
3 S35 = 3
S36 = –5
2 S23 = –2
2 4 S24 = –3

5 Lista

(5) Economia S26 realizada e encontra-se H

Figura 9.18 Desenvolvimento da heurística de economias

Complexidade Economias
O cálculo da lista de economias exige o exame da combinação de n vértices dois a dois, o que é O((n2–2n)/2) = O(n2). O exame
da lista de economias é limitado pela complexidade de sua formação. A execução da implementação de uma economia é O(k).
Assim, a heurística é O(n2).

Heurístico O(n2)

Heurísticas Baseadas em Grupamentos

O princípio que fundamenta as heurísticas com base em grupamentos é o da divisão do problema de determi-
nar um ciclo hamiltoniano em um grafo G em subproblemas de menor tamanho e de mais fácil solução. Dividido
o problema e solucionadas as partições, os ciclos determinados nos grupamentos são reunidos em um único ciclo.
Algumas dessas heurísticas atacam principalmente o problema da divisão do problema em si, enquanto outras
partem da divisão para sugerir formas de conexão entre os grupamentos. O bom funcionamento qualitativo de
uma heurística baseada em determinação de grupamentos está associado:

 à capacidade de identificação de “bons” grupamentos.


 a uma estratégia eficiente para identificar os pontos de ligação dos grupamentos.
 a um algoritmo eficiente para determinar o caminho hamiltoniano entre o par de vértices escolhidos para
conectar o grupamento.

As heurísticas que se seguem identificadas com o símbolo ►pertencem à classe das heurísticas de grupamento.

►Heurística dos Retalhos

Supõe-se que os n vértices de um grafo estão dispostos no plano dentro de um retângulo R e que seja possível partir
R em subretângulos Ri, denominados retalhos, de forma que nenhum desses retalhos possua mais que L vértices
em seu interior, sendo que pelo menos um vértice esteja situado em uma fronteira comum com outro retalho. O
quadro Retalhos mostra o processo de particionamento para essa heurística. A estratégia é reduzir o problema a
558 Grafos

subproblemas convenientemente menores e de mais fácil solução. O exemplo de funcionamento dessa heurística
será feito sobre o grafo da Figura 9.19. O valor de ki, o tamanho dos conjuntos de vértices da partição na iteração i
é obtido por uma divisão por dois. A Figura 9.19(2) mostra a primeira partição gerada pelo algoritmo. Os vértices
em azul ressaltam o primeiro retalho.

3
3
1 2 4 1 2
4
6 5 6
5
10 10
7 7
9 9
11 11
8 14 8 14
15 12 15
12
13 ⎡15 ⎤ 13 ⎢15 ⎥
k0 = ⎢ ⎥ = 8 k1 = ⎢ ⎥ = 7
⎢2⎥ ⎣2⎦

(1) Grafo exemplo (2) 1a partição

Figura 9.19 Grafo e exemplo do procedimento de partição da heurística de retalhos

A Retalhos
Ler G = (N, M) e L // L é o número máximo de vértices no retalho //
Formar um retângulo R que contém os vértices de G
t0 ← n // t0 é a variável que recebe os n vértices de G //
I, j, s ← 0
R0 ← R
Para i ← 0,...s tal que ti ≥ L Fazer
⎡t ⎤
k←⎢ i⎥
⎢2⎥
Tomar um dos lados menores de Ri
Marcar uma linha paralela ao menor lado de Ri passando pelo k-ésimo vértice
mais próximo do menor lado de Ri
S ← S+1
Produzir dois retângulos Ri e Rs ao dividir Ri de modo que:
⎡t ⎤ ⎢t ⎥
ti ← ⎢ i ⎥ e ts ← ⎢ i ⎥
⎢2⎥ ⎣2⎦

Fim_Para

Heurístico

Após a criação dos grupamentos supostamente adequados, obtém-se um ciclo hamiltoniano ótimo em cada re-
talho, através de um procedimento exato, por exemplo. Os retalhos, por construção, permitem que seja organizado
um ciclo euleriano no grafo completo pela união desses subciclos hamiltonianos dois a dois, criando vértices de
grau quatro no encontro entre os subciclos de vértices, como mostra a Figura 9.20(3).
CAPÍTULO 9 Caixeiro-viajante 559

Assim é possível aplicar-se a heurística de atalho para transformar o ciclo euleriano da Figura 9.20(3) em um
ciclo hamiltoniano, com exemplifica a Figura 9.20(4), exibindo a formação do primeiro atalho, a partir de um
caminho iniciado no vértice 5. A heurística em retalhos é adequada à solução do problema do caixeiro-viajante
euclidiano simétrico. Sua análise de complexidade pode ser encontrada em Karp (1977).

⎡8⎤ ⎡7⎤
k0 = ⎢ ⎥ = 4 k1 = ⎢ ⎥ = 4
⎢2⎥ 3 3 ⎢2⎥
1 2 1 2
4 4
5 6 5 6
10 10
7 7
9 9

11 8 11 8
14 14
12 15 12 15

⎢8⎥ 13 13 ⎢7⎥
k0 = ⎢ ⎥ = 4 k3 = ⎢ ⎥ = 3
⎣2⎦ ⎣2⎦

(1) 2a partição (2) 3a partição

3 3
1 2 1 2
4 4
5 6 6
5
10
7 7 10
9 9

11 8 11 8
14 14
15 12 15
12
13 13

(3) Formação de um ciclo euleriano em G (4) 1o atalho na formação do ciclo hamiltoniano

3 3
1 2 1 2
4 4
6 5 6
5

7 10 7 10
9 9

11 11 8
8 14 14
15 12 15
12
13 13

(5) 2o atalho (6) Demais atalhos

Figura 9.20 Desenvolvimento da heurística dos retalhos


560 Grafos

Complexidade Retalhos
⎛ n −1 ⎞
O⎜2 f (t ) + O( n log n) ⎟
⎝ t −1 ⎠
Onde :
f(t) é a função que representa o tempo da solução exata de um retalho.
n é o número de vértices do problema.
t é o máximo de vértices admitido em um retalho (Karp, 1977).

Heurístico

►Heurística de Grupamentos

A heurística de Reinelt (1992), como a heurística dos retalhos, desenvolve uma estratégia de solução via redução
do tamanho do problema. O procedimento geral pode ser resumido no quadro Grupamentos.

A Grupamentos
Ler G=(N,M)
Formar uma k-partição (S1, S2,...,Sk) dos vértices do grafo G tal que:
k
Si ∩ Si +1 = ∅ i = 1,...., k − 1 e US
i =1
i =N N = {1, 2,..., n}

Determinar as envoltórias convexas Conv(Si), i = 1,2,..., k


Representar cada subconjunto Si pelos vértices da respectiva envoltória convexa
Obter um tour global entre os subconjuntos Si (*)
Obter caminhos hamiltonianos CHi, i = 1,..., k–1, para cada um dos subconjuntos Si iniciando e terminando nos vértices de
entrada e saída
Obter um ciclo hamiltoniano que contenha os vértices de entrada e saída de cada k-partição (**)

(*) Os subconjuntos Si serão representados por dois vértices de sua envoltória convexa – vértices distintos de entrada e saída no
subconjunto.
(**) Considerando que os pontos de entrada e saída estão ligados por uma aresta de inclusão obrigatória no ciclo e de valor igual
ao comprimento do caminho hamiltoniano associado a cada k-partição.

Heurístico
Deve-se notar que a heurística deixa em aberto a estratégia que será utilizada para a obtenção das k-partições
no grafo G, concentrando-se no processo de definir os vértices da envoltória convexa dos grupamentos. Tal fato
torna a heurística de Reinelt adequada para a solução de instâncias em que a topologia de distribuição dos vértices
do grafo G naturalmente atenda à formação de grupamentos – como em alguns casos de conexões em placas VLSI.
Tendo em vista esse direcionamento para problemas euclidianos e com os grupamentos conhecidos por força da
aplicação, os vértices escolhidos para receber as ligações entre grupamentos devem então pertencer à envoltória
convexa de cada grupamento.
CAPÍTULO 9 Caixeiro-viajante 561

(1) Distribuição dos vértices no plano (2) Árvore geradora mínima

(3) Formação dos grupamentos (4) Envoltória convexa dos grupamentos

(5) Caminhos hamiltonianos nos grupamentos (6) Ciclo ligando os grupamentos

Figura 9.21 Desenvolvimento da heurística dos grupamentos

Quando as partições do problema não são previamente conhecidas ou de trivial determinação, uma implemen-
tação eficiente da heurística de grupamentos pode ser alcançada quando as k-partições em G são encontradas atra-
vés da árvore geradora mínima. Nessa alternativa de solução do problema de determinação dos grupamentos, seria
suficiente desenvolver a árvore geradora mínima de G e remover suas k-1 maiores arestas. Os vértices das k arbo-
rescências resultantes constituem uma k-partição (Hartigan, 1975) conforme exige a heurística. Ao se empregar a
árvore geradora mínima para a determinação dos agrupamentos, outro fato interessante também é verificado: os
vértices pertencentes às arestas removidas são naturais candidatos a se tornarem pontos de conexão, uma vez que,
562 Grafos

supostamente, representam pontos de conexão entre os agrupamentos. Os passos de execução da heurística estão
exemplificados na Figura 9.21. As Figuras 9.21(2) e (3) exemplificam uma forma de obtenção de grupamentos
através da execução de uma árvore geradora. Para obter k grupamentos de vértices em um grafo basta eliminar
k-1 arestas da árvore geradora mínima. Caso o cálculo das k partições da heurística de grupamento seja efetuado
com base na árvore geradora mínima, a complexidade do procedimento é O(n2) e dominará a complexidade do
algoritmo (Campello & Maculan, 1994).

Complexidade Grupamentos
A complexidade da heurística é dominada pela construção da árvores geradora mínima. A partição em grupamentos a partir da
árvore pode ser feita em O(n). A ligação dos vértices igualmente ser realizada em O(n) através de uma heurística do vizinho
mais próximo.

Heurístico O(n2)

►Heurística em Cobertura de Ciclos

Trata-se de uma heurística analisada em Karp & Steele (1985) reportando bons resultados. A heurística é apresen-
tada no quadro Ciclos Básicos.

A Ciclos Básicos
Ler G = (N, M)
Encontrar uma cobertura de ciclos em G
Enquanto H não é um ciclo hamiltoniano Faça
Reunir dois ciclos de modo a que formem um único ciclo.

Heurístico
O funcionamento da heurística de ciclos é extremamente simples. O procedimento está baseado na possibi-
lidade da determinação de uma cobertura de ciclos inicial em um grafo G. Como abordado no Capítulo 5, uma
cobertura mínima de ciclos com comprimento 3 – ciclo com três arestas – pode ser obtida em tempo polinomial. A
heurística do quadro Ciclos via Matching propõe que a obtenção da cobertura de ciclos inicial seja obtida a partir
de um matching mínimo em G e que os ciclos sejam reunidos sempre a partir do maior ciclo que se vai formando
– ciclo de maior comprimento. O processo de composição de dois ciclos vai examinar todas as possibilidades de
remoção de uma aresta em cada ciclo – com a consequente obtenção de 4 vértices terminais que, ligados, formam
o novo ciclo. A Figura 9.22 ilustra a formação de um ciclo a partir de dois ciclos menores.

A Ciclos Via Matching


Ler G = (N, M)
Encontrar um matching mínimo E* em G.
Se E* não é perfeito então completar a cobertura de arestas com a menor aresta incidente no vértice não emparelhado.
Reunir as arestas do matching E* de forma a compor uma cobertura de ciclos Ciclo.
Enquanto H não é um ciclo hamiltoniano Faça
Reunir os dois maiores ciclos em ciclo de modo a que formem um único ciclo.
// O maior ciclo será considerado o ciclo de maior peso //

Heurístico
CAPÍTULO 9 Caixeiro-viajante 563

a c
a c

b d
b d

(1) Abertura dos ciclos com a remoção de duas arestas (2) Reunião de dois ciclos com a inclusão de duas novas arestas

Figura 9.22 Processo de reunião de dois ciclos

A Figura 9.23 (1a, 2a e 3a partes) ilustra a aplicação da heurística. Os vértices em azul nas figuras representam os
vértices que serão emparelhados em cada um dos ciclos que estão sendo reunidos, também chamados de vértices
de ligação.

2 3 4 2 3 4
1 3 2 6 1 3 2 6

8 4 5 4 5
8
1 7 1 1 2 4 1 7 1 1 2 4
8 3 8 3
8 7 6 5 8 7 6 5
9 2 2 9 5 9 2 2 9 5

4 7 1 8 3 2 1 4 7 1 8 3 2 1
3 6 3 6

10 9 2 8 10 9 2 8
11 12 13 11 12 13

(1) Grafo exemplo (2) Determinação do matching mínimo em G

2 3 4 2 3 4
1 3 2 6 1 3 2 6

8 4 5 4 5
8
1 7 1 1 2 4 1 7 1 1 2 4
8 3 8 3
8 7 6 5 8 7 6 5
9 2 2 9 5 9 2 2 9 5

2
4 7 1 8 3 2 1 4 7 1 8 1
3
3 6 3 6

10 9 2 8 10 9 2 8
11 12 13 11 12 13

(3) Completar os 2-ciclos com menor aresta incidente (4) Identificar os dois maiores ciclos e escolher os vértices de ligação
no vértice não emparelhado (10-8 não se liga a 4-6-12)

Figura 9.23 Desenvolvimento da heurística dos grupamentos – 1a Parte


564 Grafos

2 3 4 2 3 4
1 3 2 6 1 3 2 6

8 4 5 8 4 5 1
1 7 1 1 2 4 1 7 1 2 4
8 3 8 3
8 7 6 5 8 7 6 5
9 2 2 9 9 2 2 9

7
8
4 7 1 8 3 1 4 1 3 1
3 6 3 6

10 9 2 8 10 9 2 8
11 12 13 11 12 13

(5) Formar novo ciclo (6) Identificar os dois maiores ciclos e escolher os vértices de ligação
(10-8 não se liga a 4-6-12)
2 3 4 2 3 4
1 3 2 6 1 3 2 6

8 4 5 1 8 4 5 1
1 7 1 2 4 1 7 1 2 4
8 3 8
8 7 6 5 8 3 7 6 5
9 2 2 9 9 2 2 9

7 7
4 1 1 1 1
3 6 4 3 6

10 9 2 8 10 9 2 8
11 12 13 11 12 13

(7) Formar novo ciclo (8) Identificar os dois maiores ciclos e escolher os vértices de ligação

2 3 4 2 3 4
1 3 2 6 1 3 2 6

8 4 5 1 8 4 1
5
1 7 1 2 4 1 7 1 2 4
8 8
8 3 7 6 5 8 3 7 6 5
9 2 2 9 9 2 2 9

7 7
1 1
4 3 6 4 3 6

10 9 2 8 10 9 2 8
11 12 13 11 12 13

(9) Formar novo ciclo (10) Identificar os dois maiores ciclos e escolher
os vértices de ligação
2 3 4 2 3 4
1 3 2 1 3 2

8 5 1 8 5 1
1 7 2 4 1 7 2 4
8 3 8 3
8 7 6 5 8 7 6 5
9 2 2 9 2 2
7 7
1 1
4 3 6 4 3 6

10 9 2 8 10 9 2 8
11 12 13 11 12 13

(11) Formar novo ciclo (12) Identificar os dois maiores ciclos (ciclo 2-3 de custo 5 é inviável)

Figura 9.23 Desenvolvimento da heurística dos grupamentos – 2a Parte


CAPÍTULO 9 Caixeiro-viajante 565

2 3 4
1 2

1
1 7 2 4
3
8 7 6 5
9 2 (13) Solução final

1
3

10 9 2 8
11 12 13

Figura 9.23 Desenvolvimento da heurística dos grupamentos – 3a Parte

A heurística de cobertura de ciclos possui sua complexidade limitada pelo procedimento de matching. Para o
caso de grafos não completos, a união dos ciclos vai exigir alguns cuidados no sentido de se viabilizar. As Figuras
9.23(4) e (6) exemplificam o fato de poder haver ciclos que não possuam arestas em comum.

Complexidade Ciclos via Matching


A complexidade da heurística é dominada pela construção do Matching. A união dos ciclos, caso sejam examinadas todas as
possíveis combinações de arestas entre os dois ciclos, exige O(n2) operações. Caso o grafo seja completo e o critério de fusão
entre os ciclos seja o de escolher a maior aresta em cada ciclo, essa união poderá ser feita em O(n) operações, já que existem,
no máximo, O(n) arestas em cada ciclo. O procedimento de união pode ser repetido até O(n) vezes. Examinando-se todas as
combinações de arestas ou não no procedimento de união, a complexidade final da heurística é O(n3).

Heurístico O(n3)

Procedimentos Gerais de Busca Local

Algumas técnicas para a solução do caixeiro-viajante podem ser utilizadas de diversas formas diferentes – varian-
tes. Serão destacadas duas dessas técnicas por sua importância e capacidade de inspirar algoritmos como o método
stem-and-cycle (Rego, 1998) e a abordagem de Lin & Kernigham (1973).

As heurísticas que se seguem identificadas com o símbolo ▼pertencem à classe das heurísticas baseadas em pro-
cedimento.

▼Stem-and-Cycle

A estrutura stem-and-cycle (haste-e-ciclo) foi proposta por Glover (1992) e pode ser empregada principalmente
para compor procedimentos de geração de vizinhanças. As heurísticas que utilizam esta estrutura trabalham com
o exame de “ciclos” e “hastes”. Definido um “ciclo” e uma “haste”, uma heurística tenta compor o “ciclo” com a
“haste” de modo a obter soluções melhores para o problema. Uma haste é um caminho em G que tem origem em
um vértice do ciclo e nunca passa por um vértice pertencente ao ciclo. Entende-se por ciclo qualquer caminho fe-
chado em G. A Figura 9.24(1) mostra um grafo completo com 6 vértices utilizado para exemplificar duas estruturas
stem-and-cycle nas Figuras 9.24(2) e (3). Na Figura 9.24(2) o ciclo é formado pelos vértices 6 (dito raiz), 2, 3, 4 e 5.
A haste é formada pelos vértices 6 e 1. O vértice 6 é comum ao ciclo e à haste. O vértice 1 é chamado de ponta da
haste. Na Figura 9.24(3), o vértice 2, raiz, forma um ciclo com os vértices 5, 6 e 1. A haste é formada pelos vértices
2, 3 e 4, a ponta da haste.
566 Grafos

1 2 1 Haste 2 1 2

Ciclo
6 3 6 3 6 3
Ciclo
Haste

5 4 5 4 5 4

(1) Grafo (2) 1o exemplo de ciclo e haste (3) 2o exemplo de ciclo e haste

Figura 9.24 Exemplos de ciclos e hastes

A Figura 9.25 ilustra possibilidades de alterações nos ciclos e nas hastes. As transformações estão associa-
das à configuração base da Figura 9.25(1). A Figura 9.25(2) identifica o vértice raiz, r, as subraízes s1 e s2 e a
ponta da haste, o vértice t. Considerando ligações de t apenas com as subraízes, existem duas possibilidades
de construção de um ciclo com todos os vértices. A primeira possibilidade é ilustrada na Figura 9.25(3),
onde uma aresta é adicionada entre t e s1 e a aresta (r-s1) é removida, resultando no ciclo mostrado na Figura
9.25(4). As Figuras 9.25(5) e (6) ilustram a situação onde t é ligado à subraiz s2. Outras possibilidades ilustra-
das nas Figuras 9.25(7)-(12) são apresentadas no trabalho de Rego (1998). As Figuras 9.25(7)-(10) ilustram a
situação onde t é ligado a um vértice p que pertence ao ciclo. Uma das duas arestas de p no ciclo é removida
conforme ilustram as Figuras 9.25(7) e (9), resultando em novas hastes como mostram as Figuras 9.25(8) e
(10). A ponta da nova haste é identificada pelo vértice q. Caso q = r, então a haste degenerou e o resultado é
um ciclo hamiltoniano no grafo. As Figuras 9.25(11) e (12) ilustram a situação onde t é ligado a um nó p da
haste. O vértice q ligado a p no caminho entre p e t é a nova ponta da haste, portanto a aresta (p-q) é removi-
da. A estrutura stem-and-cycle serve de base para diversas heurísticas para o problema do Caixeiro-viajante
(Gamboa et al., 2006). As mudanças que têm por base os ciclos são denominadas “ejeção de ciclos” e resultam
em alteração tanto na formação dos ciclos como na disposição das hastes. A operação denominada “ejeção
de hastes” preserva o ciclo.

r r

S1 S2 S1 S2

Haste Ciclo Haste Ciclo

t t

(1) Exemplo de ciclo e haste (2) Vértices-chave na incorporação (3) 1a possibilidade de ligação

Figura 9.25 Possibilidades de incorporação das hastes e mudanças na estrutura haste x ciclo – 1a Parte
CAPÍTULO 9 Caixeiro-viajante 567

S1 S2

(4) Solução resultante da 1a possibilidade (5) 2a possibilidade de ligação (6) Solução resultante da 2a possibilidade

r r

S1 S2 S1 S2

q q

t p t p

(7) 1a possibilidade de mudança na estrutura (8) Resultado da 1a mudança (9) 2a possibilidade de mudança na estrutura

p r

q S1 S2

(10) Resultado 2a mudança (11) Modo de ejetar a haste (12) Resultado da ejeção

Figura 9.25 Possibilidades de incorporação das hastes e mudanças na estrutura haste x ciclo – 2a Parte

A Figura 9.26 ilustra como, através de uma árvore geradora mínima, é possível formar “ciclos” e “hastes”
promissores. Ilustra, também, como um ciclo hamiltoniano pode ir sendo formado através de operações de
inclusão e de retiradas de arestas, a partir de um ciclo e de hastes em G. A rotina exemplificada pela Figura
9.26 sugere a sucessiva incorporação das hastes através da união dos vértices da extremidade da haste a um
vértice do ciclo.
568 Grafos

2 3 2
5
1 1
2 2
4 3 3
4 8 5 8
11 7 1 11 1
10
1 12
5 1
5
1 1
2 7 7
1 1
10 8 2 10
1 6 1 6
1
1 1
3 4 4
1 6 1
9 4 9
3 3
1 1

(1) Grafo G (2) Árvore geradora mínima de G

2 2
1 1
2 2
3 3
8 8
11 1 11 1
1
5 1
5
1 1
7 7
1 1
10 10
1 6 1 6
1 1
1 1
4 4
1
9 9 4
3 3
1 1

(3) Criação do ciclo 6-4-9-5-7-6 (4) Incorporação da 1a haste e remoção de (4-9)

2 2
1 1
2 2
3 3
8 4 8
11 1 11 1
7
1
5 1
5
7 7
1 1
10 10
1 6 1 6
1 1
1 1
4 4
9 4 9 4
3 3
1 1

(5) Incorporação da 2a haste e remoção de (5-7) (6) Incorporação da 3a haste e remoção de (5-8)

Figura 9.26 Inclusões de hastes ao ciclo através de inclusão e retirada de arestas


CAPÍTULO 9 Caixeiro-viajante 569

A estrutura stem-and-cycle permite a proposta de várias heurísticas que, examinando possíveis incorporações e
ejeções de hastes, construam ciclos hamiltonianos a partir, por exemplo, de uma árvore geradora ou de um ciclo e
uma haste inicial. Os quadros Stem-and-cycle 1 e 2 mostram duas arquiteturas gerais para o desenvolvimento de
heurísticas baseadas na estrutura stem-and-cycle. Nos algoritmos é utilizada uma variante da estrutura básica, uma
vez que existe um ciclo e múltiplas hastes. AGM denota árvore geradora mínima nos quadros Stem-and-cycle 1 e
2. O critério de parada dos algoritmos Stem-and-cycle 1 e 2 pode ser definido pelo projetista do algoritmo como,
por exemplo, número máximo de iterações do laço principal, número de iterações sem que um novo ciclo de me-
nor comprimento em relação aos já encontrados seja alcançado.

A Stem-and-cycle 1
Ler G = (N, M)
Determinara AGM T de G
Incluir aleatoriamente uma aresta em T formando um grafo H com um ciclo
Enquanto parada ≠ “verdade” Fazer
Determinar uma haste em H a partir de seu ciclo
Determinar os vértices t, r, s1 e s2 da estrutura ciclo x haste
Examinar as possibilidades de incluir a haste aceitando a que resultar em menor ciclo C.
Se todos os vértices estão no ciclo C Fazer
Sol ← C
Se Custo (Sol) <Custo(Sol*) então Sol* ← Sol
Retirar aleatoriamente uma aresta de C
Incluir uma nova aresta em C formando um grafo H com um ciclo
Fim_Se
Fim_Enquanto

Heurístico

A Stem-and-cycle 2
Ler G = (N,M)
Determinar a AGM Tde G
Incluir aleatoriamente uma aresta em T formando um grafo H com um ciclo
Enquanto parada ≠ “verdade” Fazer
Determinar uma haste em H a partir de seu ciclo.
Examinar as possibilidades de incluir a haste aceitando a que resultar em menor ciclo C1.
Ejetar a haste de H por qualquer método.
Examinar as possibilidades de incluir nova haste aceitando a que resultar em menor ciclo C2.
C ← Ciclo de menor custo entre C1 e C2.
Se todo os vértices estão no ciclo C Fazer
Sol ← C
Se Custo (Sol) <Custo(Sol*) então Sol* ← Sol
Retirar aleatoriamente uma aresta de C
Incluir uma nova aresta em C formando um grafo H com um ciclo
Fim_Se
Fim_Enquanto

Heurístico
570 Grafos

▼A Técnica de Lin & Kernighan

Lin & Kernighan (1973) propõem uma das mais eficientes heurísticas existentes para o caixeiro-viajante simétrico
– com matriz de distância simétrica. O quadro Lin & Kernighan resume a proposta.

A Lin & Kernighan


1 Ler G = (N, M)
2 Construir um ciclo hamiltoniano e calcular seu custo c

3 c_melhor ← c // Guarda o melhor custo encontrado //

4 Remover uma aresta do ciclo criando um caminho hamiltoniano, H, por um critério a ser definido // por exemplo, a
aresta mais cara do ciclo //
5 Criar duas listas vazias: Arestas que saem, L_Sai, e arestas que entram, L_Entra.

6 Incluir a última aresta removida em L_Sai

7 Selecionar uma aresta w para inclusão localizada entre algum vértice terminal e um vértice h interno de H, tal que
w ∉ L_Sai ∧ w ∉ L_Entra

8 Se tal aresta inexistir, ir para o passo 15


Caso contrário fazer H ← H ∪ {w}, formando um ciclo em H e L_Entra ← L_Entra ∪ {w}

9 Calcular a função de ganho, g, pelo somatório dos pesos das arestas em L_Sai menos o peso das arestas em L_Entra.

10 Remover a aresta a adjacente a h tal a ∉ L_Entra e a faz parte do ciclo recém formado.

11 Se não for possível encontrar uma aresta a que atenda a exigência ir para o passo 15

12 Calcular o custo, c_ind, do ciclo hamiltoniano induzido por H mais a aresta que une os vértices terminais.

13 Se c_ind < c_melhor então c_melhor ← c_ind e salvar o ciclo hamiltoniano correspondente a c_ind

14 Se g > 0, voltar ao passo 6

15 Se c_melhor < c voltar ao passo 4, considerando o ciclo hamiltoniano correspondente a c_melhor como a nova
solução inicial e c ← c_melhor
Caso contrário FIM.

Heurístico

A proposta é um pouco mais abrangente que uma heurística, uma vez que deixa em aberto algumas impor-
tantes decisões no processo de constituir um algoritmo de solução. Observa-se que o passo 4 deixa em aberto o
critério de seleção da aresta a ser incluída na solução, possibilitando várias adaptações. As Figuras 9.27(2)–(11)
mostram um exemplo de aplicação da heurística Lin & Kernighan, L&K, tomando por base o grafo da Figura
9.27(1) e considerando a retirada da aresta mais cara do ciclo ao se alcançar o passo 4.
CAPÍTULO 9 Caixeiro-viajante 571

1 2 2 1 2
1 2
1 9 4 9 4
9 5 9 5
7
6 6 3 6 6 3
8
2 3 2

1
5 2 4 5 4

(1) Grafo exemplo para o algoritmo L&K (2) Passo 1 – ciclo (1,4,2,3,6,5) – custo 35

1 2 1 2
9 4 9 4
9 5 5

6 6 3 6 6 3

2 2 1
Mais Mais
cara barata
5 4 5 4

(3) Passo 3: c_melhor ← 35 (4) Passo 5: L-Sai ←∅; L_Entra ←∅


Passo 4: Remover aresta (2-4) Passo 6: L-Sai ←(2-4)
Passos 7,8: Escolhe (4-6), L_Entra ← (4–6)

1 2 1 2
7
9 4 9 4
5 5

6 6 3 6 6 3

2 1
Única que 1 Aresta de
elimina o ligação
ciclo
5 4 5 4

(5) Passo 9: g = L_Sai – L_Entra = 9 – 1 = 8 (6) Passo 12: Avalia-se o ciclo com (2-5), c_ind = 32
Passo 10: Remover aresta (6-5) adjacente ao vértice 6 Passo 13: c_melhor ← 32 (5,1,4,6,3,2)
Passo 14: g > 0 volta ao passo 6
Passo 6: L_Sai ← L_Sai ∪ {(5-6)}

Figura 9.27 Desenvolvimento da heurística de L&K – 1a Parte


572 Grafos

1 2 1 2
9 4 9 4
5 5

6 6 3 6 6 3

1 Mais Única que


barata 1 elimina o
ciclo
5 2 4 5 2 4

(7) Passos 7,8: Incluir aresta (4-5) no caminho formando o ciclo 1-5-4. (8) Passo 9: g = L_Sai – L_Entra = (9+2) – (1+2) = 8
L_Entra ← L_Entra ∪ {(4-5)} Passo 10: Remover aresta (1-4), adjacente ao vértice 4.
L_Entra = {(4-6),(4-5)}

1 2 1 2
2
9 1 9
5 5

6 6 3 6 6 3

Aresta de Mais
1 ligação barata
5 2 4 5 2 4
(9) Passo 12: Restaurar ciclo incluindo (1-2),c_ind = 25 (10) Passo 6: L_Sai ← L_Sai ∪ {(1-4)}
Passo 13: c_melhor ← 25, Salvar (1-5-4-6-3-2). Passos 7,8: L_Entra ← L_Entra ∪ {(1-6)}
Passo 14: g > 0 volta ao passo 6 Passo 9: g = L_Sai – L_Entra = (9+2+4) – (1+2+1) = 11

1 2
9
5
Observe que a aresta de
ligação não é incorporada ao ciclo,
6 6 3 cumprindo de fato a tarefa de
permitir a avaliação do ciclo
hamiltoniano.
Mais
Cara
5 2 4

(11) Passo 10: Remover aresta adjacente ao vértice 6. A única passível de


remoção é (6-4), que pertence a L_Entra, portanto ir para passo 15
Passo 15: Se c_melhor < c (25<35 ) então ir para o passo 3, iniciando
com o ciclo (1,5,4,6,3,2), c =25.

Figura 9.27: Desenvolvimento da heurística de L&K – 2a Parte


CAPÍTULO 9 Caixeiro-viajante 573

9.3 Exemplos de Aplicações


O problema do caixeiro-viajante encontra diversas aplicações reais clássicas na área industrial, transportes, gené-
tica etc. Com o objetivo de contribuir diante dessas aplicações conhecidas e difundidas, seguem-se aplicações um
pouco menos abordadas na literatura.
Uma das mais antigas aplicações do caixeiro-viajante é relatada por Lenstra & Rinnooy Kan (1975), envolvendo
a conexão da fiação de uma placa de computador em um subconjunto de pinos, onde não mais de dois fios podem
ser conectados a cada pino. Uma situação semelhante ocorre no caso da fiação de um sistema de hardware chama-
do testbus.
Ratliff & Rosenthal (1983) relatam uma aplicação no problema de separação de pedidos em armazéns. Os itens
de um pedido devem ser coletados e transportados do armazém, de forma a poderem ser enviados ao cliente. Esse
tipo de coleta e transporte é realizado por veículos. O problema de encontrar a rota mais econômica em um arma-
zém para um veículo reunir os materiais de um pedido pode ser modelado como um PCV.
Bartholdi et al. (1983) aplicam o modelo para entrega de comida.
Plante et al. (1987) relataram um caso de aplicação na manutenção de motores de turbina a gás de
aviões. Para garantir um fluxo de gás uniforme pelas turbinas é necessário assentar conjuntos de palhetas de ba-
lanceamento sobre o arco da turbina. O assentamento dessas palhetas pode ser modelado através de um PCV sob
função objetivo especial.
O trabalho de Bland & Shallcross (1989) aborda a análise de estrutura de cristais. Essas estruturas são examina-
das através do estudo do resultado da difração de feixes de raios X incidentes sobre o cristal. Os autores sugerem
o PCV como modelo de solução para a minimização do tempo de posicionamento dos detectores de raios X que
é realizada por equipamentos motorizados, uma vez que o número dessas posições pode ser da ordem de centena
de milhares.
Grötschel et al. (1991) relatam uma aplicação em perfuração de placas para circuitos impressos para conectar
condutores entre camadas dos circuitos integrados. A distância entre as cidades é o tempo gasto para mover a cabe-
ça do mecanismo de perfuração. O mecanismo volta à sua posição inicial após cumprir a trajetória de perfuração.
Na mesma linha de aplicação do PCV se enquadram os movimentos repetitivos de braços robóticos para solda e
pintura industrial (Gueta et al., 2008) e diversas outras situações de produção de placas de circuito integrado.
Agarwala et al. (2000) relatam uma aplicação na construção de mapas genéticos e no mapeamento de cromossomos.
Bagchi et al. (2006) apresentam várias aplicações reais do PCV em Flowshop. Caricato et al. (2007) apresentam
uma aplicação para a solução de uma variante do flowshop com restrições de disposição das peças em lotes de pro-
cessamento e com máquinas em processamento paralelo e com máquinas de gargalo.
Ismail & Ibrahim (2008) relatam a aplicação à distribuição de combustível para postos de gasolina.
Dentre os vários problemas para a otimização de um sistema de mísseis está o de minimizar o tempo total para
neutralizar um dado conjunto de alvos. Sun et al. (2011) estudam esse problema e propõem um modelo de solução
baseado em um PCV dinâmico.

O Problema de Transporte de Bagagens em Aeroportos

Os aeroportos da atualidade crescem continuamente de tamanho e se tornaram o elemento-chave no transporte


de média e longa distâncias. São constituídos, normalmente, de vastos terminais e exigem uma complexa rede de
carga e descarga de bagagem das aeronaves. Em não raras ocasiões, o transporte dessas bagagens e pequenas cargas
depende de uma frota de pequenos tratores ou troles. O papel desses veículos é o de levar reboques de bagagens
do avião até esteiras transportadoras ou do ponto de despacho até os aviões. A Figura 9.28 exemplifica a planta de
um aeroporto que possui cerca de oitenta posições para aviões. Os veículos de carga e descarga devem seguir pelas
vias marcadas na pista do aeroporto. As bagagens são concentradas em um centro de recebimento e entrega, que
controla tanto as bagagens que devem embarcar quanto as que chegam para serem entregues aos passageiros ou
estão em conexão.
574 Grafos

Acesso Acesso
rodoviário rodoviário

Posições dos Posições dos


aviões aviões

Terminais Terminais
de embarque de embarque
e desembarque e desembarque

(1) Planta do aeroporto c/ posições de parada (2) Vias de acesso às posições de parada

Figura 9.28 Planta esquemática das posições de aviões e rotas dos tratores de atendimento

O problema de otimizar o atendimento das várias posições de parada pode ser modelado através de um
m-caixeiro-viajante, em que m carros de transporte executam rotas de recolhimento ou entrega de bagagens e aten-
dendo as diversas posições. Observar que a demanda da posição varia em função do avião atracado, e o número de
aviões atracados é uma função do tempo.

O Passeio do Pistoneio

A exploração de petróleo em campos terrestres é basicamente efetuada com dois tipos de poços: surgentes, em
que a pressão no interior da jazida é suficiente para trazer o petróleo à superfície, e os não surgentes, em que é
necessário um processo de retirada forçada. A retirada forçada pode ser efetuada através de um equipamento fixo,
que é instalado no local do poço, ou através de equipamentos móveis que se deslocam entre os poços. Quando a
vazão do poço não surgente é suficientemente alta, ele é explorado por um equipamento fixo. Quando a vazão do
poço decai, ele pode ser explorado por um equipamento móvel presentemente denominado Unidade Móvel de
Pistoneio (UMP). O nome dessa unidade deriva de seu método de elevação de petróleo. Um equipamento móvel
de pistoneio funciona introduzindo no poço um copo de pistoneio. O copo submerge cerca de 50 metros no óleo,
sendo então puxado através de cabos que são tracionados pelo guincho da unidade. Esta operação é repetida até
que se alcance um nível de óleo de exploração antieconômica. A partir deste momento, a UMP se desloca para ou-
tro poço, enquanto o poço recém-explorado passa a ser realimentado pelo seu reservatório. O volume de petróleo
disponível no poço por ocasião de uma visita depende, além das características do próprio poço, do tempo entre
as visitas da UMP. O reenchimento cessa assim que a coluna de óleo do poço encontra seu equilíbrio hidrostático
com o reservatório, de forma que longos períodos de repouso não aumentam a disponibilidade de óleo no poço. A
realimentação dos poços obedece à função descrita na equação 1.

ΔV – VMax (1 – e–τ/r) (1)

ΔV representa a variação no volume disponível em um poço cujo volume de óleo máximo (coluna estática) é
VMax e que foi explorado pela última vez a r unidades de tempo, com a velocidade de reenchimento definida pelo
parâmetro τ, uma característica do poço. A variação no volume disponível no poço considera que o conteúdo do
mesmo é esgotado a cada visita da UMP.
CAPÍTULO 9 Caixeiro-viajante 575

A UMP possui um depósito de óleo com capacidade bastante limitada – via de regra, não maior que o volume
médio esperado no recolhimento de três a quatro poços. Assim, uma forma de operar a unidade de pistoneio é dis-
por de um equipamento denominado sugador para transportar o óleo recolhido no tanque da UMP. Com o apoio
do sugador, a UMP não necessitará deslocar-se até o depósito para esvaziar o seu tanque de óleo antes de prosse-
guir em novos pistoneios. O sugador pode ser chamado pelo rádio ou ter seu encontro com a UMP, previamente
agendado, de acordo com o planejamento diário de trabalho. Com o uso do sugador, o trabalho da UMP pode ser
considerado de recolhimento irrestrito. Eventualmente, a UMP pode também descarregar o óleo em pontos de
captação distribuídos no campo, normalmente junto a determinados poços. O problema do Passeio do Pistoneio
(PPP) consiste em planejar uma sequência de visitas da Unidade Móvel do Pistoneio – um conjunto de passeios,
sob um horizonte de tempo determinado, de modo a maximizar o volume de óleo extraído de um conjunto de
poços não surgentes de um campo terrestre (Goldbarg & Luna, 2000). Como o problema permite que poços sejam
revisitados em função da amplitude do horizonte de planejamento e da capacidade de recuperação dos poços, o
problema caracteriza-se como tipicamente periódico. Em relação ao trabalho de aplicação presentemente abor-
dado, os primeiros trabalhos relatados na literatura abordaram a solução do problema com várias simplificações.
A Figura 9.29 exemplifica uma sequência de passeio sobre um conjunto de poços distribuídos em um campo.
Os poços em amarelo são poços prontos para serem pistoneados e podem fazer parte de um tour da unidade de
pistoneio. Os poços em vermelho estão sem óleo. Os em azul estão em recuperação. O retângulo representa a
garagem da unidade móvel do pistoneio. Os vértices brancos representam pontos de passagem. O exemplo da Fi-
gura 9.29(1) parte de um conjunto de poços com óleo suficiente para o pistoneio – todos em amarelo. Nas figuras
seguintes observa-se a evolução dos poços.

(1) Distribuição dos poços (2) Passeio do primeiro dia (3) Passeio do segundo dia

(4) Passeio do terceiro dia (5) Passeio do quarto dia (6) Passeio do quinto dia

Figura 9.29 O passeio do pistoneio

O primeiro trabalho apresentado para esse problema é o de Ferreira (2000), que desenvolve um algoritmo genéti-
co e um algoritmo transgenético para a solução de uma versão do problema do passeio do pistoneio – PPP, em que o
horizonte de planejamento é fixado em, no máximo, setes dias. Tal horizonte é suficientemente curto para, de forma
realística em alguns casos, desconsiderar a revisita aos poços. Dantas (2001) relata um algoritmo busca tabu para o
PPP. Os dois trabalhos anteriormente citados apresentam resultados para a solução de casos reais associados ao cam-
po terrestre de Canto do Amaro, localizado em Mossoró – RN. Dalboni (2003) relata algoritmos evolucionários se-
quenciais e paralelos para o problema. Dentre eles, destaca-se um algoritmo genético com busca local e mineração de
dados. Neste trabalho, são desconsiderados os tempos de montagem e desmontagem do equipamento para retirada
576 Grafos

do petróleo, assim como o tempo de trabalho da UMP em cada poço visitado. O tempo de percurso entre os poços é
considerado igual. A possibilidade de realimentação dos poços é desconsiderada. Gonçalves (2005) desenvolve qua-
tro algoritmos GRASP. Os algoritmos são testados em casos gerados aleatoriamente com horizontes de planejamento
variando de 1 a 15 dias. O número de poços dos campos nos casos teste varia entre 50 a 1.000. Esse último trabalho
considera a possibilidade do retorno a poços já visitados, todavia somente no caso de sua recuperação plena. Gold-
barg et al. (2010) abordam o problema periódico considerando o reenchimento dos poços.

Os poços recuperam-se segundo diferentes


taxas. Poços mais recentemente visitados
podem tornar-se atrativos para uma revisita
antes de poços que foram visitados no passado.
Por outro lado, o volume captado em um poço
não está obrigatoriamente associado à sua
velocidade de recuperação. Trata-se de um
problema de otimização tipicamente dinâmico.

Figura 9.30 Cidades revisitadas no passeio do pistoneio na Figura 9.29

Para a variante que exige que a unidade móvel de pistoneio intercale visitas a vértices com poços que serão
explorados com visitas a vértices de transbordo do óleo acumulado no tanque da unidade móvel não constam
soluções relatadas na literatura. A Figura 9.30 ressalta o fenômeno das revisitas.

Otimização de Cadeias de Varreduras e Semicondutores

Uma fábrica de semicondutores utilizou a heurística de Lin-Kernighan para a determinação de rotas em um ex-
perimento de otimização de circuitos integrados. Cadeias de varredura são rotas desenhadas em um chip que
proporcionam elementos de testes para esse chip. O propósito do problema é minimizar o comprimento dessas
cadeias para evitar perda de tempo e de potência dentro do chip (Turino, 2002). A Figura 9.31 mostra exemplos de
um chip otimizado pela técnica anteriormente descrita.

Misturador
Memória de
Sinal
IP
Core

Memória

Unidade lógica / Aplicação


Memória

Porta de
Controlador Acesso

Figura 9.31 Um chip com as cadeias de varredura otimizadas


CAPÍTULO 9 Caixeiro-viajante 577

9.4 Variantes do Caixeiro-viajante


O caixeiro-viajante possui um número de variantes significativo. O surgimento de variantes do caixeiro decorre,
na maioria dos casos, de aplicações práticas. Não raramente, contudo, as variantes decorrem de ligações com
outros problemas de otimização combinatória. A literatura não guarda sistematização espontânea, de forma que
uma mesma variante pode receber diferentes nomeações na literatura. O presente item vai definir as principais
variantes existentes na literatura e, em alguns casos, sugerir uma sistematização para facilitar o entendimento do
relacionamento entre essas variantes. Em alguns casos serão constituídas subclasses de problemas das quais deri-
vam variantes.

O Caixeiro Viajante m-Peripatético*


π
Determinar, em um grafo ponderado, m ciclos hamiltonianos disjuntos em arestas, de
forma a minimizar o custo acumulado de todos os ciclos.
(Krarup, 1975)
(*) Peripatetikós – “o que gosta de passear”

O Caixeiro Viajante Múltiplo O caixeiro-viajante 3-peripatético


π
Consiste em determinar em um grafo G = (N, M) m ciclos hamitoniano disjuntos
em vértices de forma a minimizar o custo acumulado de todos os ciclos. Os
ciclos são percorridos por m caixeiros.
(Russel, 1977; Golden et al., 1981; Frieze, 1983)

O problema múltiplo pode diferenciar os caixeiros. Eles podem possuir diferentes O caixeiro-viajante múltiplo
depósitos base, restrições de comprimento de caminho percorrido ou diferentes custos Os problemas do presente tópi-
de mobilização. Quando os custos de mobilização dos caixeiros são distintos, esses co pertencem à classe
custos são contabilizados na função objetivo de minimização.
(Bektas, 2006)
NP-Difícil

O problema do caixeiro-viajante múltiplo é também denominado na literatura como k-person traveling problem.

❂ PCV Múltiplo – Dicas de Trabalhos

Bektas (2006) faz uma recente revisão do estado da arte desse problema.

❂ PCV m-peripatético – Dicas de Trabalhos

De Kort (1991) exibe um limite inferior para o problema. Um algoritmo branch-and-bound para a solução do PCV-2peripatético é
apresentado por De Kort (1993). Duchenne et al. (2005 e 2007) propõem algoritmos branch-and-cut para a solução do problema.
578 Grafos

O Caixeiro-viajante Generalizado O caixeiro-viajante clássico é um


π caso particular do caixeiro-viajan-
Determinar um ciclo hamiltoniano de custo mínimo em que em um grafo dividido em grupamentos te generalizado, sendo o último,
de vértices ou clusters visita exatamente uma vez cada grupamento, passando por portanto
todos grupamentos de G (Dimitrijevic, 1997).

NP-Difícil
Os grupamentos de vértices não devem possuir vértices em comum. Alguns autores consideram
o caixeiro-viajante generalizado visitando pelo menos uma vez cada grupamento, não Castelino et al. (2002) relatam
exatamente uma vez, e denominam o caso da visita exata de “Equality” (Cacchiani et uma aplicação prática desse pro-
al., 2011). blema em uma variante com res-
O problema foi introduzido por Henry-Labordere (1969) trições de precedência nas visitas
– variante não nominada.

(1) Grupamentos (2) PCV generalizado

(3) PCV equality

Figura 9.32 Caixeiro-viajante generalizado/equality


CAPÍTULO 9 Caixeiro-viajante 579

Hoeft & Palekar (1997) relatam uma variante para o PCV equality para um problema de corte de peças denomina-
da Plate-cutting Traveling Salesman Problem. Na variante, os grupamentos são modelados através de polígonos
de corte. Além da sequência de visitas aos polígonos de corte é necessário determinar o ponto de chegada aos
polígonos.

❂ PCV Generalizado – Dicas de Trabalhos

Fischetti et al. (1997) propõem algoritmo branch-and-cut para a solução do problema. Silberholz & Golden (2007) apre-
sentam um algoritmo genético de solução e Yang et al. (2008) um algoritmo em colônia de formiga. Tasgetiren et al. (2010)
relatam um algoritmo em evolução diferencial. Karapetyan & Gutin (2011) relatam adaptações da heurística L&K para a solu-
ção do problema.

O caixeiro-viajante clássico é um
O Caixeiro Viajante em Grupos
π caso particular do caixeiro-viajante
em grupos quando os grupos são
Determinar um ciclo hamiltoniano de custo mínimo em que em um grafo dividido em formados por apenas um vértice.
grupamentos de vértices ou clusters todos os vértices de um grupo devem ser Portanto, o problema é
visitados consecutivamente.
A literatura denomina o problema como Clustered Traveling Salesman
(Chisman, 1975; Guttmann-Beck el al., 2000). NP-Difícil

Figura 9.33 Exemplo de um tour do caixeiro-viajante em grupos

❂ PCV em Grupos – Dicas de Trabalhos

Gendreau et al. (1996b) apresentam heurísticas para a solução do problema. Laporte & Palekar (2002) descrevem aplicações do
problema. Ding et al. (2007) desenvolvem um algoritmo genético de solução.
580 Grafos

O Caixeiro Viajante Euclidiano


π
Determinar um ciclo hamiltoniano de custo mínimo ligando um conjunto de pontos
no plano euclidiano – ℜ2.

O Caixeiro Viajante com Curvas


π Caixeiro euclidiano
Determinar um ciclo hamiltoniano de custo mínimo sobre um conjunto de pontos
em ℜ2 tal que minimize as mudanças de direção das arestas do ciclo.
(Minimum Bends Traveling Salesman Problem – Wagner & Stein, 2001)

O Caixante Viajante em Vizinhanças


π
Determinar um ciclo hamiltoniano de custo mínimo ligando regiões do plano. A Caixeiro com curvas
visita é caracterizada pela inclusão no ciclo de qualquer ponto pertencente
às áreas. Em muitos casos as regiões são áreas retangulares, discos etc. As áreas
são consideradas conectadas, ou seja, podem ser visitadas, vindas de qualquer
área e em qualquer ponto pertencente à área. Trata-se de uma generalização do
caixeiro-viajante euclidiano.

O caixeiro-viajante em vizinhanças – TSP with neighborhoods – é também Caixeiro em vizinhanças


conhecido como:
Caixeiro Viajante Euclidiano em Grupos (Euclidean Group TSP – Elabassioni et
al., 2005). A visita às áreas somente pode ser realizada em certos pontos das regiões
do plano. Isso permite modelar a existência de obstáculos entre as áreas – que é
denominada desconexão.
Caixeiro Viajante em Conjuntos (One-of-a-Set TSP – Mitchell, 2000). É sinônimo
do caixeiro euclidiano em grupos.

Caixeiro em conjuntos
Encontrar os ciclos hamilto-
nianos de custo mínimo, citados
ao lado, em um grafo qualquer é

NP-Difícil

O caixeiro-viajante em grupo introduz uma alteração significativa no conceito do ciclo do caixeiro eucli-
diano, e cria uma ligação evidente com as variantes de caixeiros viajantes que, eventualmente, não percorram
todos os vértices do grafo G. Essa proximidade conceitual será abordada no próximo conjunto de variantes
do caixeiro.
CAPÍTULO 9 Caixeiro-viajante 581

❂ PCV Euclidiano – Dicas de Trabalhos

Arora (1998 e 2003) relata esquemas de aproximação para o problema e obtidos em tempo polinomial. Dumitrescu & Mitchell (2003)
relatam algoritmos aproximativos com vizinhanças planares.

PCV Rotulado O caixeiro-viajante rotulado é


π
Dado um grafo G = (N, M) rotulado em arestas, consiste em determinar o ciclo NP-Difícil
hamiltoniano em G cujas arestas contenham o menor número de diferentes
rótulos (Couëtoux et al., 2008).
O problema é também referido como PCV colorido (Xiong et al., 2007). A Figura 9.34 exemplifica um
ciclo do PCV rotulado.

No trabalho de Xiong et al. (2007) os rótulos correspondem aos transportadores que são alugados em uma taxa
mensal e devem ser minimizados.

1 C 2 1 C 2
A D
A B
A E A A A
B
6 E 3 6 3
E

C A C A

D
5 A 4 5 A 4

(1) Grafo exemplo (2) Ciclo do PCV rotulado

Figura 9.34 Exemplos do PCV rotulado

❂ PCV Rotulado – Dicas de Trabalhos

Albert et al. (1995) estudam propriedades e a complexidade do problema. Xiong et al. (2007) relatam aplicação e algoritmo de solu-
ção. Jozefowiez et al. (2011) relatam um algoritmo branch-and-cut.
582 Grafos

Latência O caixeiro-viajante de míni-


Dados um grafo G = (N, M) não direcionado, com peso wij associado à cada aresta ma e máxima latência é
(i-j), um ciclo C contendo os n vértices de G e um ponto p considerado como o ponto de
partida de C, a Latência Lj do j-ésimo vértice do ciclo é dada pela soma dos pesos
das arestas do caminho de p até j em C. NP-Difícil

PCV d
de Mínima
Mí i ed
de Má
Máxima
i LLatência
tê i
π A Figura 9.35(2) exemplifi-
ca o cálculo da latência do ciclo
Determinar o ciclo hamiltoniano em G cuja latência acumulada em todos os que soluciona o grafo da Figura
vértices, a partir de um ponto inicial p, é minimizada / maximizada. 9.35(1).
(Blum et al., 1994)

1 1 2 1 1 2
3 2 2
5 5
5 8 5

4 6 6

3 4 4 3 4 4

(1) Grafo exemplo (2) Latência acumulada no ciclo a partir do vértice 1 é


1+3+9+13+5 = 31

Figura 9.35 Cálculo da latência acumulada em um ciclo

❂ PCV Mín/Max Latência – Dicas de Trabalhos

O problema é abordado por Blum et al. (1994), Chalasani et al. (1996) e Chalasani & Motwani (1999). Sarubbi et al. (2007) propõem
uma formulação de fluxos multiprodutos para o problema de mínima latência.

PCV Remoto
π O caixeiro-viajante remoto é

Dados um grafo ponderado G = (N, M) e um inteiro k, determinar um subconjunto


S de N com cardinalidade k tal que o custo do menor caixeiro viajante no NP-Difícil
subgrafo induzido pelos vértices de S seja máximo.
(Halldórsson et al., 1995)
CAPÍTULO 9 Caixeiro-viajante 583

A Figura 9.36(1) exibe um grafo exemplo para o caixeiro-viajante remoto. Considerando k = 4, a Figura 9.36(2)
exibe o menor ciclo do subconjunto {1,2,3,4} com valor 15. As Figuras 9.36(3)-(5) mostram os ciclos associados ao
subconjunto {1,2,4,6}, onde o menor ciclo é mostrado na Figura 9.36(4).

2 2

3 3 3 3
1 4 3 1 3
5 3
6
7
2 1 1
8 8
8
6 4 4
1 2

5
(1) Grafo G (2) Menor ciclo do subconjunto {1,2,3,4}

2 2 2

3 3
1 1 4 1
4 5
5

2 2
8 8
8 8
6 4 6 4 6 4

(3) Ciclo 1 para {1,2,4,6} (4) Ciclo 2 para {1,2,4,6} (5) Ciclo 3 para {1,2,4,6}

Figura 9.36 Caixeiro-viajante remoto

PCV de Máximo Espalhamento


π O caixeiro-viajante de máxi-
mo espalhamento é
Encontrar o ciclo hamiltoniano em G = (N, M) tal que o comprimento damenor
aresta é maximizado.
O problema é conhecido na literatura como The Maximum Scatter TSP (Arkin NP-Difícil
et al.,1997).

O problema é definido sobre um grafo ponderado e completo, pertencendo à classe de problemas de progra-
mação com gargalo. A Figura 9.37(2) exibe uma solução de máximo espalhamento para o grafo da Figura 9.37(1).
584 Grafos

6 6

12 2
4 7 4 7

3 4 3 4

(1) Grafo G (2) Solução de máximo espalhamento

Figura 9.37 Caixeiro-viajante de máximo espalhamento

PCV Min_Max_Min_Sum –M3S


π
O caixeiro-viajante M3S é
Sendo G = (N, M) um grafo duplamente ponderado em arestas segundo os vetores
C e P, o PCV-M3S busca encontrar um ciclo hamiltoniano em G tal que minimize a
soma das arestas do ciclo segundo o critério de ponderação do vetor C NP-Difícil
acrescido do maior valor existente nas arestas do ciclo segundo o critério do
vetor P.

Os problemas chamados de “gargalo” ou bottleneck são tradicionais no contexto da otimização, porque estão
associados às várias situações práticas que envolvem o deslocamento de facilidades. O Min_Max_Min_Sum é uma
composição do problema clássico do caixeiro-viajante com um critério de gargalo, onde a função objetivo a ser
minimizada é a soma algébrica das funções objetivo dos problemas mencionados. São dados p elementos de um
conjunto E = {e1, e2 ,..., ep} e F ⊂ P(E), onde P(E) é o conjunto potência de E, uma família finita de subconjuntos
de E perfeitamente definidos. Instâncias de F poderão ser, por exemplo, as subárvores de um grafo, os caminhos
unindo dois vértices de um grafo ou conjuntos de arestas não adjacentes de um emparelhamento máximo. A cada
elemento ei, i = 1, 2,... p são associados dois números reais, um representado por ci ou custo, e outro por pi ou peso.
Sendo S ∈ F, onde F é o conjunto das soluções viáveis de um dado problema, define-se a função:

Z ( S ) = Max{ pi } + ∑ ci
ei ∈S
ei ∈S

O problema de otimização Min_Max_Min_Sum pode ser formulado da seguinte forma (M3S1):

MinZ ( S )
E∈F

Um dos primeiros trabalhos abordando um problema de otimização combinatória bicritério no formato M3S
foi reportado por Hansen (1980) para o problema do caminho mais curto. O M3S foi reportado pela primeira vez
como um problema distinto no trabalho de Minoux (1986), aparecendo como um subproblema do problema de
decomposição da matriz relacionada à alocação ótima de tráfego de comunicação em satélites. Posteriormente, o
problema foi associado, dentre outros, aos problemas de coloração de arestas em grafos valorados e particionamen-
to de vértices e arestas (Minoux, 1987). Martello et al. (1984) apresentam um problema similar ao M3S no contexto
da alocação balanceada. Berman et al. (1990) abordam um problema bicritério com duas medidas de desempenho
que poderiam ser modeladas como em M3S, mas que no estudo são tratadas separadamente, um problema como
CAPÍTULO 9 Caixeiro-viajante 585

restrição do outro. Casos bicritérios semelhantes são solucionados através das superfícies de Pareto nos trabalhos
de Braham (1966) e Frisch (1966). O M3S1 pode ser formulado de maneira equivalente, como expresso a seguir, a
qual será denominada (M3S2):

⎧ ⎧ ⎫⎫
Min ⎨ pk + Mink ⎨∑ ci ⎬⎬
1≤ k ≤ p
⎩ S ∈F i
⎩ e∈S ⎭⎭

de modo que solucionar M3S pode ser equivalente a solucionar uma sequência de p subproblemas Min_Sum. O
algoritmo de Minoux (1989) fundamenta-se exatamente na formulação M3S2. No contexto das aplicações práticas
do caixeiro-viajante, M3S pode modelar situações de roteamento entre células de produção. Nesse caso, o caixeiro
pode representar o aparelho de transporte que liga as várias células da manufatura. Claramente, a movimentação
de produtos entre as células tem repercussão no tamanho das filas dentro de cada célula. A Figura 9.38 ilustra o
cálculo da função objetivo desse problema, mostrando que o máximo valor do critério vermelho é somado ao valor
do ciclo obtido pelo critério em preto.

1 6 6
4 2
12 2
14 7 1 4 7
3 4 3 4
8 1 8
1 1

(1) Grafo (2) Valor do ciclo = 4+6+7+3+4+8=32

Figura 9.38 Caixeiro Min_Max_MIn_Sum

O caixeiro-viajante com recomple-


PCV com Recompletamento
π tamento é

Encontrar um ciclo hamiltoniano direcionado de custo mínimo, que não contém NP-Difícil
subcaminhos não viáveis, segundo as condições que se seguem:

São atribuídos pesos inteiros positivos wi aos vértices de um multigrafo direcionado


Problema introduzido por Boland
G = (V, E) e o peso do caminho P é a soma dos pesos dos vértices ao longo de P.
et al. (2000) e heurísticas relatadas
Um subconjunto dos arcos é chamado de arcos de recompletamento (reenchimento) por Mak & Boland (2000). Mak
e notado por B ⊆ A. Os demais arcos, denotados por C = A\B, são chamados de & Boland (2007) apresentam um
ordinários (comuns). algoritmo exato de solução.

Um caminho é dito inviável se seu peso exceder determinado limite de peso constante
e se ele não contém arcos de recompletamento. Caso contrário é viável. Um A Figura 9.39(2) exibe um ci-
caminho é minimamente não viável se todos os seus subcaminhos são viáveis. Permite- clo viável sobre o grafo da Figura
se a existência de dois arcos paralelos entre vértices, um arco ordinário e um de 9.39(1). Os colchetes da figura mos-
recompletamento, se o arco ordinário tiver custo mais baixo. tram o peso dos vértices. Os arcos
O problema é conhecido na literatura como Traveling Salesman Problem with tracejados são de recompletamento.
Replenishment Arcs (Boland et al., 2000). O modelo é introduzido através
da solução de um problema de oti-
mização de rotas de aviões.
586 Grafos

[4] 3 [6] [4] [6]


2 1 2 2 2 1 2
1 9 5 5
4 1 1 1 1
[4] 6 6 3 [2] [1] 6 3 [2]
1 1
2 3
8 8
5 2 4 [6] 5 4 [6]
[10] [10]
3 3

(1) Grafo (2) Ciclo viável

Figura 9.39 PCV com recompletamento

PCV com Alvos Móveis


π
Dados um conjunto S = {s1, s2, ..., sn} de alvos móveis com velocidade constante vi
e posição inicial pi para o alvo si, e um perseguidor que começa na origem e tem Helvig et al. (2003) apresentam
velocidade máxima V >| vi |, i = 1,2,...,n, encontrar o tour mais rápido para o variantes do problema e um
perseguidor que inicia e termina na origem e intercepta todos os alvos. algoritmo exato com complexidade
O(n2) para o problema
O problema é conhecido na literatura como The Movingtarget Traveling unidimensional.
Salesman Problem (Helvig et al., 2003).

NP-Difícil

As matrizes circulantes constituem uma álgebra comutativa de forma que


se as matrizes A e B são circulantes, então A+B é circulante, AB é circulante
e AB = BA.
O primeiro trabalho abordando o
tema se deve a Finke (1987). Yang
PCV em Matriz Circulante et al. (1995). Gerace & Greco (2008)
π também abordam este problema.
Trata-se do caixeiro-viajante em um grafo cuja matriz de distâncias é circulante.
O problema é denominado na literatura Traveling Salesman Problem on
Circulant Matrices (Finke, 1987).

⎡ c1 c2 c3 L cn ⎤
⎢c cn −1 ⎥⎥
Em Aberto! ⎢ n c1 c2 L
C = ⎢cn −1 cn c1 L cn −2 ⎥
⎢ ⎥
⎢ M M M L M ⎥
Uma matriz n × n circulante é formada a partir de um vetor de n compo- c c3 c4 L c1 ⎥
⎣⎢ 2 ⎦
nentes pelas permutações cíclicas destes componentes, como a matriz C ao
lado (Kalman & White, 2001). A complexidade do PCV em matrizes circu-
lantes é um problema em aberto.
CAPÍTULO 9 Caixeiro-viajante 587

PCV On-line
π
Trata-se de solucionar o caixeiro-viajante quando os dados de entrada do
problema são alterados ao longo do processo de solução. Adicionalmente não Ausiello et al. (2001) relatam
existe um modelo que permita predizer essas alterações, como no caso das algoritmos aproximativos para o
variantes estocásticas do PCV. problema e Ausiello et al. (2004)
descrevem uma variante com cota
O problema é denominado na literatura como On-line Travelling Salesman diária de atendimento.
(Ausiello et al., 2001; Jaillet & Wagner, 2008)

NP-Difícil

As cidades podem ser visitadas


PCV Periódico
π mais de uma vez dentro do período
de m dias, contudo somente uma
Consiste em programar um conjunto de m vistas (m dias) do caixeiro-viajante vez a cada dia.
(o horizonte de planejamento) de forma que cada cidade seja visitada exatamente
k vezes e a soma dos custos de todos os ciclos seja mínima. Não é permitido um trajeto diá-
rio vazio – sem visitas.
O problema é denominado na literatura The Period Traveling Salesman
Problem (Chao et al., 1995). O PCV periódico é

NP-Difícil

❂ PCV Periódico – Dicas de Trabalhos

O problema é abordado por Christofides & Beasley (1984). Chao et al. (1995) e Palleta
(2002) propõem heurísticas de bom desempenho para o problema.

Variantes do PCV Associadas a Subclasses

O presente tópico introduz uma sistematização, ainda que parcial, no estudo das variantes do caixeiro-viajante
que, por sua vez, possuam subvariantes associadas de alguma forma entre si. A sistematização é parcial porque
são possíveis vários pontos de vista para realizar essas associações e algumas subvariantes podem ser classificadas
em mais de uma classe. Mesmo assim, a classificação tem por benefício facilitar a visão geral da constelação desses
problemas. O primeiro grupo analisado será aquele composto pelos problemas do caixeiro-viajante com restrições
de tempo.
588 Grafos

Classe do PCV com Restrição de Tempo


π
Definição da Classe
Trata-se de uma subclasse de problemas do caixeiro-viajante em que existem restrições que regulam a chegada ou a partida dos
vértices do ciclo. De alguma forma as visitas aos vértices devem ocorrer dentro de intervalos de tempo ou janelas de tempo. Em
muitas ocasiões esse tipo de problema está associado também a programação de atividades nos vértices.

Definição de Janela de Tempo


A forma mais comum de a literatura se referir às restrições de tempo dos problemas de roteamento é através da expressão janela
de tempo. As restrições de tempo podem ser expressas também como rótulos associado aos vértices do grafo. De forma geral são
três restrições conjuntas que podem formar uma janela de tempo. A primeira define o tempo mínimo de chegada no vértice
i e pode ser representada pelo rótulo ai. A segunda registra a permanência máxima no vértice i e pode ser representada pelo
rótulo bi. Finalmente a terceira restrição, representada através do rótulo ci, define o tempomáximo permitido para a partida
do vértice.
Em diversos casos de aplicação a janela é definida somente por uma ou duas das restrições citadas. Por exemplo, no caso particular
em que não existe limitação de tempo de permanência no vértice, apenas limites para a chegada ou partida, fica implícito o tempo
de permanência na diferença entre a chegada e a saída. Todavia, em alguns casos, o tempo de permanência pode ser menor que essa
diferença, caracterizando-se a necessidade do rótulo bi.

PCV com Janelas de Tempo


π
Representa a classe geral dos problemas que visam encontrar uma rota de mínimo
custo atendendo as restrições de chegada, permanência e saída dos vértices ❂
do grafo.
O problema é denominado na literatura Traveling Salesman Problem with PCV-Janela de Tempo
Time Windows (Dumas et al., 1995) ou Time-constrained Travelling
Salesman (Baker, 1983). Heurísticas recentes: VNS (Silva &
Urrutia, 2010); Colônia de Abe-
lhas (López-Ibáñez & Blum, 2010);
Traveling Repairman Problem Simulated annealing (Ohlmann
π &Thomas, 2007)
Determinar em um grafo G = (N, M) um ciclo hamiltoniano que, atendendo todas as
demandas dos vértices, minimize a soma do tempo de espera dos clientes (Tsitsiklis,
1992).
O problema é também referenciado como Delivery Man Problem (Heilporn et al.,
2010).

Como uma forma clássica de definir o “tempo de espera de um cliente” é através
da latência, o Traveling Repairman pode ser considerado um sinônimo de Traveling Repairman
caixeiro-viajante de mínima latência.
Abordam o tema: Lucena, (1990);
Tsitsiklis (1992) e Heilporn et al.
(2010).
Speeding Deliveryman Problem
π
Determinar um circuito que minimize o tempo de espera dos clientes sujeito Todos os problemas descritos no
a uma restrição de espera máxima (ou condição mínima de atendimento). Nesse presente item pertencem à classe
caso o ciclo pode não atender todos os clientes (Frederickson & Wittman, 2011) o
que faz conexão desse modelo com outra classe de problemas – a classe de ciclos
hamiltonianos em subgrafos de G – subciclos.
NP-Difícil
CAPÍTULO 9 Caixeiro-viajante 589

Um conjunto de variantes do PCV consideram ciclos hamiltonianos que possuem restrições no sequenciamen-
to de seus vértices. Isso envolve restrições que não permitem a existência de determinadas sequências de vértices,
tornando alguns ciclos do PCV clássico inviáveis para essas subclasses.

Classe do PCV com Restrição de Sequenciamento


π
Definição da Classe
Trata-se de uma subclasse de problemas do caixeiro-viajante em que o objetivo é determinar um ciclo hamiltoniano de custo
mínimo, dado que a visita aos vértices possui restrições de sequência. Nessa classe de problemas alguns vértices
possuemsua visita restringida em função da visita anterior a outros vértices.

1o Caso: Vértices de Coleta e de Entrega


Nesse caso a visita a um desses conjuntos de vértices deve anteceder a visita dos vértices do outro.

2o Caso: Vértices Coloridos / Rotulados


Esse tipo de problema restringe a sequência de visitas a vértices de uma dada cor, exigindo a intercalação de vértices de outra cor.

O Caixeiro Viajante Bipartido


π ❂
Determinar um circuito hamiltoniano de custo mínimo sobre um grafo ponderado que PCV Bipartido
possui n vértices vermelhos e n vértices azuis, de modo que o circuito inicie em um
vértice azul e os vértices vizinhos no circuito possuam sempre cores diferentes. Foi introduzido por Frank et al.(1998)
e possui uma versão euclidiana com
aplicações práticas relatadas por
NP-Difícil Srivastav et al. (2001).

3
V
1 2
V V
7 5
A A

8 4
6 A A
V

(1) Grafo G (2) Ciclo bipartido

Figura 9.40 Caixeiro bipartido


590 Grafos

PCV Preto e Branco


π
Os problemas do PCV preto e
Determinar um ciclo hamiltoniano de custo mínimo sobre um conjunto de vértices branco e PCV com sequência de
que possuem duas cores – branca e preta. clientes pertencem à classe
1. O número de vértices brancos entre dois vértices pretos é limitado por um
parâmetro Q.
2. O comprimento de qualquer cadeia entre dois vértices pretos é limitado NP-Difícil
por um parâmetro L.
(Bourgeois et al., 2003)
As Figuras 9.41(1) e (2)
PCV com Sequência de Clientes exemplificam uma solução para
π uma instância do caixeiro preto e
branco, onde Q = 2 e L = 2.
Determinar em um grafo G = (N,M) um ciclo hamiltoniano de comprimento mínimo
que passe primeiramente por um conjunto de vértices L e, posteriormente,
por um conjunto B, L ∪ B = N e L ∩ B = ∅. As Figuras 9.41(3) e (4) exem-
Os vértices do conjunto B são chamados Backhauls e os do conjunto L Linehauls. plificam uma solução para o
O problema é denominado The Traveling Salesman with Backhauls na PCV com sequência de clientes.
literatura (Gendreau et al., 1996a).

❂ PCV Preto e Branco – ❂ PCV com Backhauls –


Dicas de Trabalhos Dicas de Trabalhos

Bourgeois et al. (2003) e Bhattacharya et al. (2007) sugerem Gendreau et al. (1996a) introduzem a variante a partir do
heurísticas de solução. Ghiani et al. (2006) apresentam um mesmo caso para roteamento de veículos (Deif & Bodin,
algoritmo branch-and-cut. 1984). Toth & Vigo (1999) abordam a variante no contexto de
roteamento de veículos.

10
10 4 10
4
4
4
4
10
10 10
4 10
4

10
4
4
10 4 10
10
10
4
4 4
10 4 4 10
10

(1) Grafo exemplo (2) Caixeiro preto e branco

Figura 9.41 Exemplo dos ciclos das variantes com sequenciamento de vértices – 1a Parte
CAPÍTULO 9 Caixeiro-viajante 591

L1 L1
L3 L3
B1 B1
L2 B6 L2 B6
B5 B5

B2 B3 B4 B2 B3 B4
B7 B7
L4 L4
B8 B8
L5 L5

(3) Grafo exemplo (4) PCV com sequência de clientes

4 4
4 4 4 4
10
10
8
4 10 4
4 4
8
8
10 8
4 4
4 8 10 4
10
10
4 10 4 4 4
4 4

(5) Grafo exemplo (5) PCV bipartido

Figura 9.41 Exemplo dos ciclos das variantes com sequenciamento de vértices

O caixeiro-viajante de coleta
PCV Coleta e Entrega e entrega é
π
O problema é definido sobre um conjunto de demandas de coleta (pickup) pi e NP-Difícil
de entrega (delivery) dj, associadas à vértices hi e hj, vértices de coleta / entrega,
respectivamente. Uma capacidade para o veículo do caixeiro c, um vértice especial
r ∈ N denominado depósito, ao qual não está associada coleta ou entrega, e um grafo Basicamente existem dois ti-
G = (N, M) ponderado. pos de PCV com coleta e entre-
ga. Aquele que coleta e entrega
C ≥ ∑ pi ∧ ∑ d j Para qualquer caminho, w ⊆ H. um mesmo item e o que coleta
i∈W j∈W
um tipo de item e entrega outro
tipo. Um exemplo do primeiro
O problema consiste em desenvolver um ciclo hamiltoniano H à partir do vértice r de caso é a coleta e entrega de pes-
forma a atender todas as coletas e entregas previstas respeitando a capa- soas em um sistema de trans-
cidade do veículo.
porte. Um exemplo do segundo
O problema é referido na literatura como Traveling Salesman with Pickup and caso é a entrega de um bem de
Delivery (Kalantari et al., 1985). consumo e a coleta das embala-
gens ou do lixo associado a esse
bem de consumo.
592 Grafos

A Figura 9.42 ilustra o caso de a coleta e a entrega ocorrerem em vértices específicos. Na Figura, os vértices de
coleta são identificados com a letra P e os vértices de entrega são identificados com a letra D. As Figuras 9.43(1) e
(2) ilustram o caso em que existe um item de coleta e outro de entrega; todavia, cada vértice produz itens de coleta
e demanda por itens de entrega. O primeiro valor do colchete contabiliza a entrega que deverá ser realizada no vér-
tice, enquanto a segunda posição é a coleta. Assim, por exemplo, no vértice 6 são descarregadas quatro unidades
e carregadas cinco. Considerando que o caixeiro da Figura 9.43(1) inicia o seu trajeto no vértice 4 carregado com
sua capacidade máxima de seis unidades embarcadas, a Figura 9.43(2) exibe sua rota ótima. No exemplo, o caixeiro
não pode transitar por um trecho com menos carga que a exigida pela próxima entrega, ou seja, quando a carga/
descarga dos vértices antecedentes não compensa pelo menos a demanda do próximo vértice.

D1=2 P2=4
D3=2 D2=2
D4=2

P3=2
P1=5 D5=6 D6=2

C=16
P4=5 r CV

(1) Entrega/coleta em pontos distintos

Figura 9.42 Exemplos de coleta e entrega com vértices exclusivos

5
[4-3] [4-0]
[4-3] [4-0]
1 2 2
1 2 2 6 1
1 5
1 5 2 4 7 1
2 4 7 1 [4-5] 6 6 3 [0-3]
[4-5] 8
6 6 3 [0-3] 1
3
1 8 2 9 9 4
5
2 9 9 3 5 2 4
[1-0]
5 2 4 6
[1-0]

(1) Grafo exemplo (2) Ciclo entrega e coleta

Figura 9.43 Exemplos de coleta e entrega com vértices exclusivos

❂ PCV com Coleta e Entrega – Dicas de Trabalhos

Os primeiros trabalhos no tema são devidos a Anily & Mosheiov (1994) e Mosheiov (1994), que descrevem uma aplicação ao trans-
porte escolar. Kalantari et al. (1985) introduzem o problema e apresentam um algoritmo de solução. Gendreau et al. (1998) e Hoff &
Lokketangen (2006) reportam algoritmos de solução. Erdoğan et al. (2009) relatam uma variante.
CAPÍTULO 9 Caixeiro-viajante 593

PCV com Requisitos de Separação O caixeiro-viajante com requi-


π sitos de separação é

Determinar um circuito hamiltoniano de custo mínimo cumprindo uma ou mais das


seguintes restrições: NP-Difícil
1. Restrições de inclusão, de modo que um vértice i seja visitado (no mínimo / no
máximo / exatamente) m vértices antes (ou depois) de um dado vértice j.
2. Restrições de exclusão, de modo que um vértice i não seja visitado (no mínimo /

no máximo / exatamente) m vértices antes (ou depois) de um dado vértice j.
A variante é descrita por Balas et
O problema é referido na literatura como Precedence-Constrained Traveling al. (1995) e uma reformulação do
Salesman (Balas et al., 1995). problema é proposta por Wang &
Regan (2002).

A Figura 9.44 mostra um exemplo de um caixeiro-viajante com requisitos de separação. Os vértices do tipo A
e B não podem se ligar diretamente ao ciclo, e no ciclo não pode ocorrer mais de dois vértices do tipo C ligados
em sequência.

Tipo A Tipo B Tipo C

3 3
1 2 1 2

7 5 7 5

8 4 8 4
6 6

(1) Grafo exemplo (2) Ciclo viável com requisitos

Figura 9.44 Caixeiro-viajante com requisitos de separação

Classe do PCV em Subciclos


π
Definição da Classe
Trata-se de uma subclasse de problemas do caixeiro-viajante em que o objetivo é determinar um ciclo hamiltoniano de custo
mínimo em um dado subconjunto de vértices. Essa classe é complexa e está correlacionada com os problemas de ciclos com
bônus, uma vez que esses últimos casos também são constituídos sobre rotas em subconjuntos de vértices.
Nessa classe de problemas os vértices do grafo podem ser classificados em três conjuntos:
1o Conjunto:
Vértices que pertencem ao subtour (que é hamiltoniano em relação a esses vértices).

2o Conjunto:
Vértices que não pertencem ao subtour do caixeiro mas que se ligam diretamente aos vértices do subtour.

3o Conjunto:
Vértices que não se enquadram nas duas primeiras condições e que são denominados isolados.
594 Grafos

As condições dos vértices dessa classe estão exemplificadas na Figura 9.45.

3º 2º 1º 1º 1º

Todos os problemas do caixeiro


em subtour que estão disponíveis na
literatura para grafos sem proprie-
3º 2º 1º 1º 1º dades especiais pertencem à classe

NP-Difícil
3º 3º 2º 1º 1º

Figura 9.45 Exemplo da disposição dos vértices

O Caixeiro Viajante em Cobertura


π
Determinar um ciclo hamiltoniano de custo mínimo em um subconjunto dos vértices do
grafo G tal que ou os vértices do grafo pertencem ao ciclo ou ficam afastados
de um ou mais vértices pertencentes ao tour de no máximo k arestas ou unidades
de distância.
O problema é conhecido na literatura como The Cover Salesman Problem (Cur-
rent & Schilling, 1989).

PCV Subtour
π
Conhecido um grafo G = (N, M) ponderado em arestas, dados um vértice depósito
i = 0 e um conjunto wi, i ∈ N i ≠ 0 de pesos associados aos vértices de G, ri um
conjunto de receitas também associadas aos vértices i ∈ N i ≠ 0, determinar um
ciclo de vértices de G começando e terminando em i = 0, de forma a maximizar a
diferença entre as receitas dos vértices do ciclo menos os custos das arestas,
e que não acumule mais de D unidades de pesos.
O problema é conhecido na literatura como The Traveling Salesman Subtour
Problem (Westerlund et al., 2006).

O caixeiro-viajante em cobertura está fortemente associado às variantes do caixeiro-viajante com bônus.


O bônus ou a penalidade associados aos vértices é uma forma de criar um critério que permita a seleção do
subconjunto de vértices em G.
A ligação desse subconjunto de vértices apenados através de um ciclo que não repita visitas, forma uma cone-
xão com o caixeiro-viajante clássico e decreta o grau de dificuldade na obtenção de sua solução.
O PCV subtour bem representa o elo entre os problemas de bônus com os problemas de subciclos.
CAPÍTULO 9 Caixeiro-viajante 595

Classe do PCV com Coleta de Bônus


π
Definição da Classe
Trata-se de uma subclasse de problemas do caixeiro-viajante em que sempre existem valores (bônus ou custos) associados tanto
às arestas quanto aos vértices do grafo G. O objetivo geral é a otimização simultânea dos valores recolhidos ou pagos em
função do ciclo incluir e excluir certos vértices com os valores pagos nas arestas. Estes dois critérios de otimização podem
ser representados tanto através de uma função objetivo como empregando uma restrição. Assim a classe é composta por pelo menos
três tipos de problemas genéricos, dependendo da forma como os dois objetivos são considerados:
1o Tipo:
O objetivo do modelo é determinar um circuito que minimiza os custos de viagem de tal forma que o reconhecimento do
bônus não seja menor que determinado valor previamente definido. Nesse caso o recolhimento de bônus é considerado
através de uma restrição.
2o Tipo:
O objetivo do modelo é encontrar um circuito que maximize o recolhimento de bônus de tal forma que as despesas de
deslocamento não excedam determinado valor previamente definido. Nesse caso o custo da viagem é considerado através
de uma restrição.
3o Tipo:
Ambos os objetivos são combinados na função objetivo e o modelo busca encontrar um circuito que minimize as despesas
de viagem subtraídos os bônus recolhidos.

O quadro anterior resume a classe dos problemas de coleta de bônus, segundo a taxonomia proposta por Feillet et
al. (2005). Esta taxonomia permite organizar e classificar as diversas e diferentes denominações desses problemas na
literatura. Realmente, essa diversidade não facilita a comunicação na área. Apenas como um exemplo desse problema,
e evitando traduzir os nomes originais para não dificultar ainda mais o entendimento, o quadro que se segue resume
a nomenclatura sugerida para as diversas variantes possíveis sob a luz da taxonomia de Feillet et al. (2005).

O PCV com Coleta de Bônus


π ❂
Considerando um grafo G = (N, M) ponderado em arestas tal que a cada vértice i ∈ N Ausiello et al. (2008) apresenta o
é associado um bônus bi, determinar um ciclo hamiltoniano de comprimento mínimo Online Prize-Collecting
iniciado em um vértice v de G que passe por um subconjunto S ⊆ (N \ {v}) tal que a Traveling Salesman Problem.
soma da bonificação nos vértices seja pelo menos igual a um valor p.
O problema é conhecido na literatura como Prize-collecting TSP (Balas, 1989). O PCV coleta de bônus é

Tipo 1 NP-Difícil
596 Grafos

A Figura 9.46 exemplifica ciclos do problema tipo 1, considerando um bônus mínimo p igual a 25. Entre as
soluções exibidas nas Figuras 9.46(2)-(4), a melhor solução para o caso é a exibida na Figura 9.46(4), ainda que o
bônus da Figura 9.46(2) seja maior que o bônus da Figura 9.46(4).

10
3
2 6
1 7 9
6 1 8
3 4 6
9 4 11 7
4 8 6 5
11 7 1
12 5 5 10
1 1
1 7 1
1 4
10 8
3 1 2 6 4
1 1
1 5
4 9 4
1
9 5 6 5
4
5 3 1
3
1
3

(1) Grafo exemplo (2) Custo do ciclo =2 0, bônus = 31

10
3
2
6
4 5 5
1
6 7
5 1 4
5 1
1 6
7 1
4 4
2 6
9 5
4
4 5 3
5 6 1
4

(3) Custo do ciclo = 20, bônus = 30 (4) Custo do ciclo = 11, bônus = 25

Figura 9.46 Ciclos do caixeiro com coleta de bônus

O PCV Seletivo ou Orienteering


π ❂
Determinar um ciclo hamiltoniano sobre um subconjunto de vértices S de cardinalidade As revisões de Feillet et al. (2005)
q, S ⊆ N, de modo que o somatório dos bônus dos vértices do subconjunto seja e Vansteenwegen et al. (2011)
maximizado e o comprimento do ciclo não ultrapasse um valor r. fornecem o estado da arte do
problema.
Nesse caso o custo da viagem é considerado através de uma restrição. É denominado,
de uma forma geral, Orienteering Problem, nome derivado de um esporte (Chao
et al., 1996), mas com os fundamentos já descritos em Golden et al. (1987). O PCV seletivo é

Tipo 2 NP-Difícil
CAPÍTULO 9 Caixeiro-viajante 597

A Figura 9.47 exemplifica ciclos do problema tipo 2 para o comprimento máximo do ciclo igual a 17.

10 10
3
2 2
1 7 1 7
6 1 6 1
9 4 3 9 3
4 8 6 4 8
11 7 1 11 1
12 5 5 10 5
1 1
1 7 7
1 4 1 4
10 8
3 1 2 6 6
1 1 1
4 4
1
5 6 5
9 4 4
5 3
1 1
3 3

(1) Grafo exemplo Comprimento = 16, bônus = 46

10 10
2 2
1 7 1 7
4 3 4 3
6 6
1 1
5 5 5 5
7 1 7
10
1 2 3 2
1
4 4
9 5 9 5
4 4
5 3 5 3
1 1

Comprimento = 16, bônus = 38 Comprimento = 17, bônus = 41

Figura 9.47 Ciclos do caixeiro-viajante seletivo

O PCV com Lucros (Profits)


π ❂
Determinar um ciclo hamiltoniano sobre um subconjunto de vértices S, S ⊆ N de modo
A revisão de Feillet et al. (2005)
a minimizar uma função objetivo composta por:
fornece o estado da arte do
1. Soma dos pesos das arestas problema.
2. Subtração do bônus bi associados aos vértices incluídos no ciclo.
Conhecido na literatura como Traveling Salesman Problems with Profits
O PCV com lucros é
(Feillet et al., 2005) ou Profitable Tour Problem (Dell’Amico et al., 1995).

Tipo 3 NP-Difícil
A Figura 9.48 exemplifica ciclos do problema tipo 3.
598 Grafos

10 5 10
8
0
8 5 8 8 5
10 5 5 10 5
5 10 10
8 8 5 8
6
5 5 8 5
4
10 5 5 10 0
5
5 8 5
8 8 4 5 8

5 3 3
5 5
10 10
8 5 8 1
3 3 1
3 3

(1) Grafo exemplo (2) Valor da função objetivo = –5

10
10 0
8 5
0 10 5
8 5
10 10
5
1 10 8 6 8
1 8
0 6 8 1 4
1 1 8
4 10 1 5
1 1
1 1 1 5 0
8 4
0 1
1 8
8
1 1
4 0 5
10 0

(3) Valor da função objetivo = –11 (4) Valor da função objetivo = –31

Figura 9.48 Ciclos do caixeiro-viajante com lucros

Considerando o grafo exemplo da Figura 9.48, em que as arestas não marcadas custam uma unidade e os vér-
tices sem marca não produzem bônus se visitados, podem-se construir os ciclos viáveis das Figuras 9.48(2), (3) e
(4). Como a função deve ser minimizada, a solução apresentada na Figura 9.48(4) é a melhor das três.
Uma interessante variante da classe três é o Traveling Purchaser Problem, ou o problema do caixeiro-viajante
comprador. Nesse caixeiro, os “bônus” são negativos e representam os gastos com a compra de produtos nos vér-
tices do grafo.
CAPÍTULO 9 Caixeiro-viajante 599

O PCV Comprador
π
Considerando um domicílio v0, um conjunto de mercados P = {v1, v2, ..., vm} e um
conjunto de produtos K = {f1, f2, ..., fn}, o problema pode ser representado em um grafo
G = (N, M) simples e não direcionado em que N = {v0} ∪ P é o conjunto de vértices e O problema do
M = {(vi, vj): vi, vj ∈ N, i < j} é o conjunto de arestas. Cada produto fk está associado a caixeiro alugador
uma demanda dk disponível em um subconjunto de mercados Pk ⊆ P, sendo bki o preço pode ser reduzido
do produto fk no mercado vi e cij o custo da viagem entre vi e vj. ao problema do
caixeiro-viajante
no caso particular
O problema do caixeiro comprador consiste em determinar uma rota em G
de m = n, | Pk | = 1
iniciando e terminando em v0, passando pelos vértices necessários de modo a
para todo fk ∈ K e
adquirir os produtos fk, k = 1, ..., n, necessários ao atendimento das demandas
dk = 1.
dk, minimizando-se o custo de aquisição dos produtos somado ao custo do
deslocamento no grafo.
(Ramesh, 1981)

O PCV comprador é
Denotando-se por qki o número de unidades do produto fk disponíveis no
mercado vi, são possíveis duas situações:
NP-Difícil
1. dk ≥ qki > 0, sendo dk ≥ 1, ∀fk ∈ K e ∀vi ∈ Pk ou denominado problema do
caixeiro comprador capacitado.
2. dk = qki = 1 ou denominado problema do caixeiro comprador não capacitado.

A Figura 9.49(2) exibe um esquema de compra e rota para o grafo da Figura 9.49(1). As tabelas ao lado dos
vértices mostram o valor dos produtos no vértice e a disponibilidade de cada produto para compra.

p1 p2 p3 p4 p1 p2 p3 p4
bk1 5 3 3 10 bk2 1 4 7 6
qk1 3 2 7 8 qk2 1 1 7 3
2
1 2
1 5
p1 p2 p3 p4 2 4 7 p1 p2 p3 p4
1
bk6 8 1 1 8 6 6 3 bk33 6 6 6 1
qk6 8 1 1 8 1 8 qk3 5 5 3 3

2 9 9 3
5 4
p1 p2 p3 p4 2 p1 p2 p3 p4
1 1
bk5 9 2 1 10 bk4 1 5 2 8
qk5 7 7 7 2 0 qk4 5 5 4 4
p1 p2 p3 p4
dk 5 6 4 3

(1) Grafo exemplo

Figura 9.49 Ciclo do caixeiro-viajante comprador – 1a Parte


600 Grafos

p1 p2 p3 p4 p1 p2 p3 p4
bk1 5 3 3 10 bk2 1 4 7 6
qk1 3 2 7 8 qk2 1 1 7 3
1 2
1
p1 p2 p3 p4 p1 p2 p3 p4
1
bk6 8 1 1 8 6 3 bk33 6 6 6 1
qk6 8 1 1 8 qk3 5 5 3 3

2 3
5 4
p1 p2 p3 p4 p1 p2 p3 p4
1 1
bk5 9 2 1 10 bk4 1 5 2 8
qk5 7 7 7 2 0 qk4 5 5 4 4
p1 p2 p3 p4
dk 5 6 4 3

(2) Compra do produto P1: 5 unidades no vértice 4 a preço 1; Custo total = 4.


Compra do produto P2: 1 unidade no vértice 6 a preço 1, custo = 1; 2 unidades no vértice 1 a preço 3, custo = 6; 3 unidades no vértice 4
a preço 5, custo = 15; Custo total = 1 + 6 + 15 = 22.
Compra do produto P3: 4 unidades no vértice 5 a preço 1; Custo total = 5.
Compra do produto P4: 3 unidades no vértice 3 a custo 1; Custo total = 3.
Custo do ciclo1 + 1 + 2 + 1 + 1 + 3 = 9. Valor da Solução = 43.

Figura 9.49 Ciclo do caixeiro-viajante comprador – 2a Parte

Revisão da Literatura Caixeiro Comprador


O primeiro trabalho da literatura abordando o problema em sua forma atual deve-se a Ramesh (1981), onde um algoritmo exato e
uma heurística são apresentados para o problema.
Singh & van Oudheusden (1997) desenvolveram um algoritmo branch-and-bound para o problema, baseado na ideia de que-
brar o conjunto de todos os possíveis caminhos em subconjuntos cada vez menores e então calcular para cada um deles os limites
inferiores, incluindo a soma da viagem e a soma da compra dos produtos.
Um algoritmo branch-and-cut é proposto por Laporte et al. (2003).
Na abordagem heurística um dos primeiros trabalhos deve-se a Golden et al. (1981), que propõem a Heurística de Economias
Generalizadas (Generalized Savings Heuristic). Esta heurística foi modificada por Ong (1982), que propôs a Heurística de Redução
de Rota (Tour Reduction Heuristic).
Pearn & Chien (1998) sugeriram modificações das heurísticas propostas nos trabalhos de Ramesh (1981), Golden et al. (1981) e
Ong (1982). No trabalho de Pearn & Chien (1998) são, ainda, apresentadas duas versões da Heurística de Adição de Comodidades
(Commodity Adding Heuristic), em trabalho anterior dos autores. Voβ (1996) apresentou uma meta-heurística baseada em
busca tabu e simulated annealing.
Boctor et al. (2003) propõem algoritmos baseados em busca tabu para o problema capacitado e não capacitado. Estes algorit-
mos foram testados segundo várias combinações em instâncias de maior porte e comparados com as duas versões da Heurística de
Adição de Comodidades descritas por Pearn & Chien (1998).
Teeninga & Volgenant (2004) desenvolveram subrotinas que foram incorporadas aos algoritmos de Golden et al. (1981), Ong
(1982) e Singh & van Oudheusden (1997).
Riera-Ledesma & Salazar-González (2005) apresentaram uma heurística aplicada ao problema simétrico, presentemente denomi-
nada RL-SG, baseada em um esquema que desenvolve uma busca local segundo duas estruturas de vizinhança e uma estratégia de
diversificação denominada shaking.
Bontoux & Feillet (2006) apresentaram um algoritmo em colônia de formigas aplicado ao problema não capacitado simétrico
que, conclusivamente, supera em desempenho o algoritmo de Riera-Ledesma & Salazar-González (2005).
Goldbarg et al. (2009) apresentam um algoritmo transgenético que supera o desempenho dos algoritmos anteriores.
CAPÍTULO 9 Caixeiro-viajante 601

Classe PCV em Composição de Caminhos Hamiltonianos


π
Definição da Classe
Trata-se de uma subclasse de problemas do caixeiro-viajante em que o ciclo hamiltoniano do caixeiro é obtido pela composição de r
caminhos encadeados. O primeiro caminho inicia-se em um vértice origem, e o último caminho retorna a esse vértice, completando
o ciclo. Os caminhos podem ser realizados por diferentes agentes, conforme a necessidade do problema. Cada agente pode possuir
diferentes custos de operação, tempos de operação, capacidade de transporte etc. Os agentes realizam trabalhos interligados, de
forma que um agente somente inicia seu caminho quando o agente que o antecede no ciclo tiver terminado sua tarefa.
Os agentes devem retornar a sua posição inicial no caminho, depois de cumprir sua etapa no ciclo. Os agentes transportam uma carga
e podem realizar tarefas sobre a carga transportada.

1o Tipo:
O objetivo é encontrar uma sequência de designações de agentes de transporte e de caminhos encadeados e associados
a esses agentes, de tal forma que determinada carga visite, ao menor custo possível, todos os vértices de um grafo G
= (N, M) ponderado em arestas. Existe um custo para mobilizar o agente i no vértice j e um custo para que, concluído um caminho
até um vértice k, o agente i retorne de k para j. Um problema desse tipo é o Car Renter Salesman (Goldbarg et al., 2011).
Uma variante desse primeiro tipo contabiliza também um custo para realizar o transbordo da carga entre o agente i e o agente j no
vértice k.

2o Tipo:
O objetivo é encontrar um sequência de designações de agentes de transporte e de caminhos encadeados e associados
a esses agentes, de tal forma que determinada carga visite, com o maior lucro possível, todos os vértices de um grafo G =
(N, M) ponderado em arestas. Nessa variante existe um bônis bij associado ao fator de o vértice i ser visitado pelo agente j. A função
objetivo do problema maximiza a soma dos bônus menos os custo de transporte, mobilização dos agentes e retorno dos agentes às
suas posições iniciais.

O PCV Alugador O Caixeiro alugador é


π
Dado um grafo G = (N, M) ponderado em arestas. Dados r carros disponíveis para NP-Difícil
alugar.
Dadas r matrizes C r = [crij] representando o custo de o carro r percorrer a aresta A afirmação acima é facilmen-
(i,j) i, j ∈ N. te demonstrável, uma vez que o
Dadas r matrizes Dr = [drij] representando o custo de o carro r voltar da cidade i caixeiro-viajante representa um
para a cidade j i, j ∈ N. subcaso desse problema quando:
Dados r vetores Ar = [ari ] representando o custo de o carro r ser alugado na
cidade i ∈ N . 1. Existe apenas um carro a ser
alugado no problema.
2. Os custos de retorno desse
O problema do caixeiro alugador consiste em determinar um conjunto de carro para uma cidade dife-
caminhos em G que sejam atribuídos cada um a um carro diferente, de forma que:
rente daquela de aluguel, em
1. Para todos os vértices diferentes do vértice inicial, os caminhos se sucedam, qualquer vértice do grafo, são
terminando o j-ésimo caminho no vértice em que se inicia o caminho j-ésimo +1. maiores que zero.
2. Que os caminhos percorram exatamente uma vez todos vértices de G, iniciando 3. Os custos do aluguel desse car-
e terminando o ciclo no vértice v1 ∈ N. ro são os mesmos em qualquer
3. Que os carros somente sejam alugados nos vértices em que um carro conclui vértice do grafo.
seu caminho ou no vértice v1.
4. Que o somatório dos custos associados ao percurso, ao aluguel dos carros e ao As Figuras 9.50(1)-(3) exemplifi-
retorno ao vértice em que cada carro é alugado seja minimizado. cam os diferentes custos de tráfego
associados aos diferentes carros.
602 Grafos

❂ PCV Alugador – Dicas de Trabalhos

O problema foi recentemente relatado e possui poucos trabalhos publicados. Goldbarg et al. (2011) sugerem um algoritmo memético
de solução e Asconavieta et al. (2011) um algoritmo transgenético.

As Figuras 9.50(4)-(6) exemplificam alguns custos de retorno dos carros à cidade de aluguel. A Figura 9.51 exem-
plifica a formação de uma solução do caixeiro alugador. O carro 1 inicia seu ciclo na cidade F e termina na cidade B.
O carro 2 inicia na B e retorna da C. O carro 3 trafega de C para a cidade F, retornando de F para C.

A 1 B A 1 B
5 2 8 7
4 7 2 3 8
3 1 4 7
1 8 8

F 10 C F 12 C
7 9 4 1

8 9 1 7
1 2

E 10 D E 13 D

(1) Custos – C1 – do primeiro carro percorrer G (2) Custos – C2 – do segundo carro percorrer G
10 1
A 1 B A B
5 9
5 1 6 1
5 5

0 1
F 8 C F C
1 8

1 1
3 1

E 1 D E D
3 5

(3) Custos – C3 – do terceiro carro percorrer G (4) Custos – D1 – para retorno a F


8 0 1 1
A B A B

5 2 2 0
F C F C

2 3

E D E D
3 3 2 4

(5) Custos – D2 – para retorno a B (6) Custos – D3 – para retorno a C

Figura 9.50 Custos do caixeiro alugador


CAPÍTULO 9 Caixeiro-viajante 603

8 10 15 1
A B A B

3 6 2 2
F C F C

1 2

E D E D
8 9 13 20

(1) Custos – A1 – do primeiro a ser alugado (2) Custos – A2 – do segundo carro a ser alugado

8 9
A B A 1 B

1 2 3
1
F C F C

3 1

E D E D
1 9

(3) Custos – C3 – do terceiro carro a ser alugado (4) Custos do primeiro caminho

A 1 B A B
1

2
2
F C F C
1
1 1
2 3 1

E D E D

(5) Custos do segundo caminho (6) Custos do terceiro caminho

Figura 9.51 Formação da solução do alugador

A Figura 9.52 contabiliza os custos da solução exibida na Figura 9.51.


604 Grafos

A 1 B Custos do Ciclo F-A-B-E-C-D-F=6


1 Aluguel do carro 1: 3
2 Aluguel do carro 2: 1
11
Aluguel do carro 3: 2
Retorno do carro 1: 1
F C Retorno do carro 2: 1
1 Retorno do carro 3: 2
1 1 1 Total:16
3
Observe que o aluguel dos carros poderá ser, eventualmente,
incorporado ao custo das arestas, caso seja proporcional à qui-
E D lometragem percorrida.

Figura 9.52 Custos do caixeiro alugador

O ciclo do caixeiro alugador pode também ser entendido como obtido pela união de até t caminhos hamilto-
nianos desenvolvidos sobre até t subconjuntos disjuntos de vértices de G. Cada um dos caminhos é realizado com
auxílio de um carro diferente daqueles utilizados para percorrer os caminhos vizinhos no ciclo. Dessa forma, as
cidades que compõem o ciclo do caixeiro podem ser agrupadas em até t diferentes subconjuntos de vértices de G e
que são percorridos por carros pelo menos distintos entre si nos caminhos que são vizinhos no ciclo.

Tipos do caixeiro alugador:

1. Disponibilidade de carros para aluguel


Em uma situação real não é possível considerar, de forma geral, que qualquer carro pode ser alugado em
qualquer cidade. O caso em que é possível alugar todos os carros em todas as cidades é denominado total.
Em qualquer outro caso, o problema é denominado parcial. O presente trabalho aborda o problema total.
2. Alternativas de devolução do carro alugado
Em uma situação real não é possível considerar, de forma geral, que qualquer carro alugado pode ser devol-
vido em qualquer cidade. O caso em que todas as cidades podem fazer a recepção de todos os carros é deno-
minado irrestrito. Em qualquer outra situação o problema será denominado restrito. O presente trabalho
aborda o problema irrestrito.
3. Integridade do contrato
Quando o problema não permitir que um mesmo tipo de carro seja alugado mais de uma vez no tour do
alugador, o problema será denominado sem repetição. Nessa hipótese, o número de carros disponíveis para
o aluguel é sempre igual ou maior que o número de carros alugados pelo caixeiro. O caso sem repetição em
que todos os carros devam ser obrigatoriamente alugados é denominado exato. O problema é denominado
com repetição em qualquer outro caso.
4. Cálculo dos custos de devolução do carro alugado
Os custos de devolução dos carros podem ser constituídos por valores independentes da topologia ou res-
trições da rede. Nesse caso o problema é dito livre. No caso em que os custos de devolução de um carro são
calculados levando em conta a rota empregada pelo carro para retornar à sua base, o problema é dito vincu-
lado. Em caso contrário, é considerado livre.
CAPÍTULO 9 Caixeiro-viajante 605

Classe PCV Estocástico


π
Definição da Classe
Trata-se de uma subclasse de problemas do caixeiro-viajante em que elementos do problema, como demandas, ligações, custos
das arestas, bônus nos vértices, possuem valor estocástico. Observe que a classe se distingue dos problemas on-line que não
possuem informações suficientes para constituir modelos probabilísticos para a representação do elemento de incerteza. Uma
forma intermediária de enfrentar o problema da incerteza – situada entre a otimização on-line e a estocástica – é denominada
"programação robusta" e fundamenta a variante: The Robust Traveling Salesman (Montemanni et al., 2007; Ben-Tal &
Nemirovski, 2000; Bertsimas & Sim, 2003).

1o Tipo:
Clientes ou vértices de existência ou demanda estocástica (Jaillet, 1988; Laporte, et al., 1994).

2o Tipo:
Tempo de viagem ou comprimento das arestas estocástico (Kao, 1978; Percus & Martin, 1999).

Revisões da Literatura no tema:


Powell et al. (1995); Gendreau et al. (1996c); Bertsimas & Simchi-Levi (1996).

9.5 Exercícios Resolvidos do Capítulo 9


Exercício no 1:
Desenvolver a heurística Swap na solução do grafo do exercício com base no ciclo 1-2-3-4-5-6.

2 15 3
8 10
4 1
2 16 14
5

1 1 4
3
25 7

8
6 20 5

Grafo do exercício 1

Exercício no 2:
Exemplifique o funcionamento da heurística 2-Opt para o grafo da figura do exercício anterior consideran-
do a configuração inicial 1-2-3-4-5-6.
606 Grafos

9.6 Exercícios Propostos do Capítulo 9

Algoritmos

9.1: Como definido no Capítulo 4, um grafo é hipo-hamiltoniano quando a remoção de qualquer de seus vérti-
ces resulta em um grafo hamiltoniano. Ao caso dos grafos hipo-hamiltonianos pode-se associar o seguinte
problema de otimização:

O Ceixeiro Vianjante Indeciso


π
Dado um grafo G ponderado e hipo-hamiltoniano.
Qual vértice de G deve ser removido de forma que o comprimento do ciclo
hamiltoniano no grafo reduzido seja o menor possível?
Tottering Traveling Salesman

O problema descrito acima consiste, em outras palavras, em decidir qual vértice remover do grafo hipo-
-hamiltoniano de forma a preservar o menor ciclo hamiltoniano possível no grafo residual. Claramente é
O(n) vezes mais complexo que o caixeiro-viajante associado ao grafo residual. Desenvolva um algoritmo
para a solução aproximativa do caixeiro-viajante indeciso. Aplique o algoritmo ao grafo da Figura do exer-
cício. Observe que o grafo da figura do exercício é o grafo de Wiener-Araya, conhecido por ser como o
menor grafo planar hipo-hamiltoniano (Wiener & Araya, 2009, The Ultimate Question. http://arxiv.org/
abs/0904.3012).

1 2 6
3 4 5 1 1
14 7
3 13
7 8 9 10 21 17
6 10 4
13 7 16 7 18
12
11 14 5 4 8
23 6 10 15
15 19 22 19 1
16 17 18 11 19
10 14 21 3
20 21 22 23 13 15 25 12
25 26 27 8 3 1 4
24 28
20 5 7
6 9 19 2
29 30 31 32 12 3
36 1 14 4
33 37 17 11
34 35
2 16
5
15 9
18 6
39 40 41 7 2
38 42 4

Grafo Wiener-Araya
CAPÍTULO 9 Caixeiro-viajante 607

Aplicações

9.2: Aplicar as seguintes heurísticas ao grafo da figura do exercício para a determinação de um ciclo hamiltonia-
no de mínimo custo no grafo.
1. Bellmore & Nemhauser (1968).
2. Heurísticas 1 e 2 de inserção de vértices.
3. Heurísticas de inserção e deslocamento de vértices – Shift.
4. Heurística de Exchange.
5. Heurística de k-Substituições.
6. Heurística Twice-Around.
7. Heurística de economias.
8. Heurística baseadas em grupamentos.
9. Heurísticas em cobertura de ciclos.

15
9

6 7 11 12

2 11 3 1 2 5 7 4
9
1 15 3 17
9 4 3 8 7 5
12 6 1 1 6 13 1 7

7 14 9 15
5
2 8 3 1 7 1 9
1 3 9
4 4 8 10

3 1 9 4 5 1 14

3 11

13

Grafo do exercício 9.2

Desafios

9.3: Desenvolva um algoritmo heurístico especializado na solução dos seguintes problemas de otimização com-
binatória:

1. O problema do caixeiro alugador.


2. O problema do caixeiro-viajante de mínima latência.
3. O problema do caixeiro comprador.
9.4: Elaborar um algoritmo heurístico de solução problema do dado andarilho hamiltoniano, que é definido no
presente exercício, e exemplificado na figura do exercício. Na figura, o tabuleiro é 4x4 e o dado é posicionado
inicialmente no canto superior esquerdo do tabuleiro, com a face seis voltada para cima e a face três voltada
para a direita. Os números da figura representam a impressão das faces do dado ao tombar sobre o tabuleiro.
As setas mostram o caminho formado pelos tombamentos do dado sobre o tabuleiro. Na trilha do dado,
uma face do tabuleiro nunca pode ser marcada mais de uma vez.
608 Grafos

O Hiker Dice Hamiltoniano


π
Conhecido o posicionamento inicial de um dado sobre um tabuleiro n x m hamilto-
niano (tabuleiro que possa ter suas células atravessadas por um ciclo hamiltoniano)
determinar um ciclo hamiltoniano que atravesse todas as células do tabuleiro, ciclo
obtido pelo do tombamentos do dado sobre o tabuleiro, de forma a maximizar
o número de pontos gravados nas casas do tabuleiro por ocasião do tomba-
mento do dado.

Ciclo do Hiker Dice

9.7 Referências
Agarwala, R., Applegate, D. L., Maglott, D., Schuler, G. D. & Schaffler, A. A. (2000). A Fast and Scalable Radiation
Hybrid Map Construction and Integration Strategy. Genome Research 10(3):350-364, disponível em: http://www.
ncbi.nlm.nih.gov/genome/rhmap/. Acesso em setembro de 2011.
Aho, A. V., Hopcroft, J. E. & Ullman, J. D. (1974). The design and analysis of computer algorithms, Addison-Wesley
Pub. Co.
Albert, M., Frieze, A. & Reed, B. (1995). Multicoloured Hamilton Cycles. The Electronic Journal of Combinatorics
2, #R10.
Applegate, D. L. Bixby, R. E., Chvátal, V. & Cook, W. J. (2006). The Traveling Salesman Problem: A Computational
Study, Princeton University Press.
Applegate, D., Bixby, R., Chvátal, V. & Cook, W. (1994). Finding cuts in the TSP: a preliminary report distributed at
The Mathematical Programming Symposium, Ann Arbor, Michigan.
Asconavieta, P., Goldbarg, M. C. & Goldbarg, E, F, G. (2011). Evolutionary Algorithm for the Car Renter Salesman,
Congress in Evolutionary Computation (CEC), 593-600. 9781424478354. 10.1109/CEC.2011.5949673.
Anily, S. & Mosheiov, G. (1994). The Traveling Salesman Problem with Delivery and Backhauls. Operations Re-
search Letters 16(1):11-18.
Arkin, E., Mitchell, J. & Narasimhan, G. (1998). Resource-constrained geometric network optimisation. In: Procee-
dings 14th ACM Symposium on Computational Geometry, 307-316.
Arkin, E. M., Chiang, Y-J., Mitchell, J. S. B., Skiena, S. S. & Tang, T. (1997). On the Maximum Scatter TSP. In: Pro-
ceedings of the 8th annual ACM-SIAM Symposium on Discrete Algorithms, 211-220.
Arkin, E. M. & Hassin, R. (1994). Approximation algorithms for the geometric covering salesman problem. Discre-
te Applied Mathematics 55:197-218.
Arora, S. (2003). Approximation schemes for np-hard geometric optimization problems: a survey. Math. Prog.
97:43-69.
Arora. S. (1998). Polynomial-time Approximation Schemes for Euclidean TSP and other Geometric Problems.
Journal of the Association for Computing Machinery 45(5):753-782.
Arthur, J. L. & Frendewey, J. O. A. (1959). Computational Study of Tour Construction Procedures for the Travelling
Salesman Problem. Oregon State University, Departament of Statistics, OR 97331M.
Ausiello, G., Feuerstein, E., Leonardi, S., Stougie, L. & Talamo, M. (2001). Algorithms for the On-line Travelling
Salesman. Algorithmica 29(4):560-581.
Ausiello, G., Demange, M., Laura, L. & Paschos, V. (2004). Algorithms for the On-Line Quota Traveling Salesman
Problem. Information Processing Letters 92(2):89-94.
CAPÍTULO 9 Caixeiro-viajante 609

Ausiello, G., Bonifaci, V. & Laura, J. (2008). The online Prize-Collecting Traveling Salesman Problem. Information
Processing Letters 107:199-204.
Awerbuch, B., Azar, Y., Blum, A. & Vempala. S. (1998). New approximation guarantees for minimum-weight
k-trees and prizecollecting salesmen. SIAM J. Comput. 28(1):254-262.
Bagchi, T. P., Gupta, J. N. D. & Sriskandarajah, C. (2006). A review of TSP based approaches for flowshop schedu-
ling. European Journal of Operational Research 169:816-854.
Baker. E. K. (1983). An exact algorithm for the time-constrained travelling salesman problem. Operations Research
31:938-945.
Balas, E. (1989). The prize collecting traveling salesman problem. Networks 19(6): 621-636.
Balas, E., Fischetti, M. & Pulleyblank, W. R. (1995). The Precedence–Constrained Asymmetric Traveling Salesman
Problem Polytope. Mathematical Programming 68:241-265.
Bartholdi, J. J., Platzman, L.K. Lee, C. R. & Warden, W. W. (1983). A minimal technology routing systems for meals
on wheels. Interfaces 13:1-8.
Barvinok, A., Gimadi, E. K. & Serdyukov, A. I. (2002). The Maximum Traveling Salesman, Chapter 1. In: Gregory
Gutin and Abraham P. Punnen, editors. The traveling salesman problem and its variations, volume 12 of Combi-
natorial Optimization. Kluwer Academic Publishers, Dordrecht.
Bektas, T. (2006). The Multiple Traveling Salesman Problem: An Overview of Formulations and Solution Procedu-
res. Omega: The International Journal of Management Science 34(3):209-219.
Bellmore, M. & G. L. Nemhauser, (1968). The Traveling Salesman Problem: A Survey. Opns. Res 16:538-582.
Ben-Tal, A. & Nemirovski, A. (2000). Robust solutions of linear programming problems contaminated with uncer-
tain data. Mathematical Programming 88:411-424.
Berg, M., Gudmundsson, J., Katz, M. J., Levcopoulos, C., Overmars, M. H. & Stappen, A. F. (2005). TSP with neigh-
borhoods of varying size. Journal of Algorithms 57:22-36.
Berman, O., Einav, D. & Handler, G. (1990). The Constrained Bottleneck Problem in Network. Operations Research
38(1):178-181.
Bertsimas, D. J. & Simchi-Levi, D. (1996). A New Generation of Vehicle Routing Research: Robust Algorithms,
Addressing Uncertainty. Operations Research 44:286-303.
Bertsimas, D. J. & Sim, M. (2003). Price of robustness. Operations Research 52(1):35-53.
Bhattacharya, B., Hu, Y. & Kononov, A. (2007). Approximation Algorithms for the Black and White Traveling Sa-
lesman Problem. Lecture Notes in Computer Science 4598:559-567.
Bienstock, D., Goemans, M., Simchi-Levi, D. & Williamson, D. (1993). A Note on the Prize Collecting Traveling
Salesman Problem. Mathematical Programming 5:413-420.
Bland, R. E., & Shallcross, D. E. (1989). Large traveling salesman problem arising from experiments in X-ray crys-
tallography: a preliminary report on computation. Operations Research Letters 8(3):125-128.
Blum, A., Chalasani, P., Coppersmith D., Pulleybank, B., Raghavan, P. & Sudan, M. (1994). The Minimum Latency
Problem, In: Annual Symposium on Theory of Computation (STOC), 163-171.
Blokh, D. & Gutin, G. (1995). Maximizing traveling Salesman Problem for Special Matrices. Discrete Applied Ma-
thematics 56:83-86.
Boctor, F. F., Laporte G. & Renaud, J. (2003). Heuristics for the traveling purchaser problem. Computers & Opera-
tions Research 30:491-504.
Boland, N. L., Clarke, L. W. & Nemhauser, G. L. (2000). The asymmetric traveling salesman problem with reple-
nishment arcs. European Journal of Operational Research 123:408-427.
Bontoux, B. & Feillet, D. (2008). Ant colony optimization for the traveling purchaser problem. Computers & Ope-
rations Research 35:628-637.
Bourgeois, M., Laporte, G. & Semet, F. (2003). Heuristics for the black and white traveling salesman problem.
Computers & Operations Research 30:75-85.
610 Grafos

Braham, C. (1966). Decisions Optimales. Microeconomie, Paris.


Bruun, A.; Worsøe, U. & Pagh, M. H. (2003). Traveling Salesman With Pickup and Delivery, Technical report,
2003. Disponível em: http://www.diku.dk/OLD/undervisning/2003e/404/notes_paper6.pdf. Acesso em setembro
de 2011.
Burkard, R. E. (1979). Traveling Salesman and Assignment Problems: A Survey. Ann. Disct. Math 4:193-215.
Cacchiani, V., Muritiba, A. E. F., Negreiros, M. & Toht, P. (2011). A Multistart Heuristic for the Equality Generali-
zed Traveling Salesman Problem. Networks 57(3):231-239.
Campello, R. E. & Maculan, N. (1994). Algoritmos e Heurísticas: Desenvolvimento e Avaliação de Performance.
EDUFF, Rio de Janeiro.
Caricato, P., Grieco, A. & Serino, D. (2007). Tsp-based scheduling in a batch-wise hybrid flow-shop. Robotics and
Computer-Integrated Manufacturing 23:234-241.
Castelino, K., D’Souza, R. & Wright, P. K. (2002). Tool path Optimization for Minimizing Air time During Machi-
ning. Journal of Manufacturing Systems 22(3):173-180.
Catlin, P. A. (1987). Spanning Trails. J. Graph Theory 2:161-167.
Chalasani, P., Motwani, R. & Rao, A. (1996). Approximation Algorithms for Robot Grasp and Delivery. 2nd Inter-
national Workshop on Algorithmic Foundations of Robotics (WAFR): 347-362.
Chalasani P. & Motwani, R. (1999). Approximating Capacitade Routing and Delivery Problems. SIAM Journal on
Computing 28:2133-2149.
Chao, I-M., Golden B. L. &, Wasil, E. A. (1995). A new heuristic for the period traveling salesman problem. Com-
puters and Operations Research 22:553-565.
Chao, I., Golden, B. & Wasil, E. (1996). Theory and methodology – a fast and effective heuristic for the orienteering
problem. European Journal of Operational Research 88:475-489.
Cheng, C-B. & Mao, C-P. (2007). A modified ant colony system for solving the travelling salesman problem with
time windows. Mathematical and Computer Modelling 46(9-10):1225-1235
Chisman, J. A. (1975). The clustered traveling salesman problem. Computers & Operations Research 2:115-119.
Christofides, N. & Beasley, J. E. (1984).The period routing problem. Networks 14:237-256.
Christofides, N. (1976). Worst-case analysis of a new heuristic for the travelling salesman problem. Technical Re-
port 388, Graduate School of Industrial Administration, GSIA, Carnegie-Mellon University.
Cho, H-G. & Zelikovsky, A. (1985). Spanning closed trail and Hamiltonian cycle in grid graphs. In: Algorithms and
Computations. 6th International Symposium, ISAAC 95, 342-351.
Clark, G. & Wright, J. (1964). Scheduling of Vehicles from a Central Depot to a Number of Delivery Points. Opns.
Res 12:568-581.
Cosmadakis, S. S. & Papadimitriou, C. H. (1984). The traveling salesman problem with many visits to few cities.
SIAM Journal on Computing 13:99-108.
Crowder, H. & Padberg, M. W. (1980). Solving large scale symmetric traveling salesman problems to optimality.
Management Science 26:495-509.
Couëtoux, B., Gourvès, L., Monnot, J. & Telelis, O. A. (2008). On Labeled Traveling Salesman Problems. Lecture
Notes in Computer Science 5369:776-787.
Current, J. R. & Schilling, D. A. (1989). The Cover Salesman Problem. Transportation Science 23(3):208-213.
Cvetkovic, D. (1991). An Algorithm for M Asymmetric Travelling Salesman Problem on a Bandwidth-Limited
Graph. YUJOR 1:15-25.
Dalboni, F. L. (2003). Algoritmos Evolutivos Eficientes para um Problema de Roteamento de Veículo. Dissertação
de Mestrado em Sistemas e Computação. Programa de Pós-Graduação em Computação. Universidade Federal
Fluminense. Brasil.
Dantas, N. M. (2001). Meta-heurística Busca Tabu Aplicada à Solução do Problema da Unidade Móvel do Pistoneio.
Dissertação de Mestrado em Sistemas e Computação. Universidade Federal do Rio Grande do Norte. Brasil.
CAPÍTULO 9 Caixeiro-viajante 611

Deif, I. & Bodin, L. D. (1984). Extension of the Clarke and Wright algorithm for solving the vehicle routing with
backhauling. In: Proceedings of the Babson Conference on Software Uses in Transportation and Logistics Manage-
ment (Edited by A. E. Kidder), Babson Park, Mass., 75-96.
Dell’Amico, M., Maffioli, F. & Värbrand, P. (1995). On prize-collecting tours and the asymmetric travelling sales-
man problem. International Trans. Oper. Res. 2(3):297-308.
De Kort, J. B. J. M. (1991). Lower Bounds for Symmetric K-Peripatetic Salesman Problems. Optimization 22:113-
122.
De Kort, J. B. J. M. (1993). A Branch and Bound Algorithm for Symmetric 2-Peripatetic Salesman Problems. Euro-
pean Journal of Operational Research 70(2):229-243.
Dimitrijevic, V. (1997). An Efficient Transformation of the Generalized Traveling Salesman Problem into the Tra-
veling Salesman Problem on Digraphs. Information Science 102:105-110.
Ding, C., Cheng, Y. & He, M. (2007). Two-Level Genetic Algorithm for Clustered Traveling Salesman Problem
with Application in Large-Scale TSPs. Tsinghua Science and Technology 12(4):459-465.
Duchenne, E. & Laporte, G. (2007). The Undirected m-Peripatetic Salesman Problem: Polyhedral Results and New
Algorithms. Operations Research 55(5):949-965.
Duchenne, E., Laporte, G. & Semet, F. (2005). Branch-and-cut Algorithms for the Undirected m-Peripatetic Sales-
man Problem. European Journal of Operational Research 162(3):700-712.
Dumitrescu, A. & Mitchell, J. S. B. (2003). Approximation Algorithms for TSP with Neighborhoods in the Plane.
Journal of Algorithms 48(1):135-159.
Dumas, Y., Desrosiers, J., Gelinas, E. & Solomon, M. M. (1995). An optimal algorithm for the travelling salesman
problem with time windows. Operations Research 43:367-371.
Elbassioni, K., Fishkin, A. V., Mustafa, N. H. & Sitters, R. (2005). Approximation Algorithms for Euclidean Group
TSP. Lecture Notes in Computer Science 3580:1115-1126.
Feillet, D., Dejax, P. & Gendreau, M. (2005). Traveling Salesman Problems with Profits Transportation Science
39(2):188-200.
Ferreira, I. (2001). Contaminações Virais na Aceleração da Solução do Problema do Passeio do Pistoneio. Dissertação
de Mestrado em Sistemas e Computação. Universidade Federal do Rio Grande do Norte, Brasil.
Finke, G. (1987). Traveling Salesman Problems on Circulant Matrices, Second Avanced Research Institute on Dis-
crete Applied Mathematics, Rutgers.
Fischetti, M., Salazar, J. J. & Toth P. (1997). A branch-and-cut algorithm for the symmetric generalized traveling
salesman problem. Oper Res 45:378-94.
Frank, A., Korte, B., Triesch, E. & Vygen, J. (1998). On the Bipartite Travelling Salesman Problem, Report No
98866-OR. University of Bonn, disponível em: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.9542.
Acesso em setembro de 2011.
Frederickson, G. N. & Wittman, B. (2011). Approximation Algorithms for the Traveling Repairman and Speeding
Deliveryman Problems, Algorithmica, disponível em: http://www.springerlink.com/content/402112037r7kh262/
fulltext.pdf. Acesso em outubro de 2011.
Frieze, A. M. (1983) An extension of Christofides heuristic to the k-person travelling salesman problem. Discrete
Applied Mathematics 6:79-83.
Flood, M. M. (1956). The Traveling-salesman Problem, Operations Research 4:61-75.
Frisch, R. (1966). Maxima and Mínima Theory and Economics Applications, Dordrecht-Holland.
Fujimura, K., Tokutaka, H., Ohshima, Y. & Kishida, S. (1994). The traveling salesman problem applied to the self-
-organizing feature map. In: Proceedings of international conference on neural information processing, 427-432.
Gamboa, D., Rego, C. & Glover, F. (2006). Implementation analysis of efficient heuristic algorithms for the trave-
ling salesman problem. Computers & Operations Research 33:1154-1172.
612 Grafos

Garey, M. R. & Johnson, D. S. (1979). Computers and interactability: a guide to the theory of NP-completeness. Free-
man, San Francisco.
Gendreau, M., Laporte, G. & Vigo, D. (1998). Heuristics for the traveling salesman problem with pickup and deli-
very. Computers & Operations Research 26:699-714.
Gendreau, M., Laporte, G. & Semet, F. (1997). The Covering Tour Problem. Operations Research 45(3):568-576.
Gendreau, M., Hertz, A. & Laporte, G. (1996a). The Traveling Salesman Problem with Backhauls, Computers and
Opns. Res 23:501-508
Gendreau, M., Laporte, G. & Potvin, J. Y. (1996b). Heuristics for the Clustered Traveling Salesman Problem. Com-
binatorial Optimization 1:41-56.
Gendreau, M., Laporte, G. & Séguin, R. (1996c). Stochastic Vehicle Routing. European Journal of Operational Re-
search 88:3-12.
Ghiani, G., Laporte, G. & Semet, F. (2006). The Black and White Traveling Salesman Problem. Operations Research
54:366-378.
Glover, F. (1992). New ejection chain and alternating path methods for traveling salesman problems. Computer
Science and Operations Research 449-509.
Goldbarg, M. C, Asconavieta, P. & Goldbarg, E. F. (2011b). A Memetic Algorithm for the Car Renter Salesman
Problem. In: Evolutionary Algorithms, Eisuke Kita Eds, InTech, ISBN:978-953-307-171-8, disponível em: http://
www.intechopen.com/source/pdfs/15628/InTech-_memetic_algorithm_for_the_car_renter_salesman_problem.
pdf. Acesso em setembro de 2011:
Goldbarg, M. C., Goldbarg, E. F. G. & Duarte, H. M. (2010). Transgenetic Algorithm for the Periodic Mobile Piston
Pump Unit Routing Problem with Continuous Oil Replenishment. International Journal of Innovative Computing
and Applications, Special Issue on: New Trends on Intelligent Systems Design, 2(4):203-214.
Goldbarg, M. C., Bagi, L. B. & Goldbarg. E. F. G. (2009). Transgenetic algorithm for the Traveling Purchaser Pro-
blem. European Journal of Operational Research 19(1):36-45.
Goldbarg, M. C. & Luna, H. P. L. (2005). Otimização Combinatória e Programação Linear Modelos e Algoritmos,
Campus.
Golden, B., Levy, L. & Dahl, R. (1981). Two generalizations of the traveling salesman problem. Omega 9(4):439-41.
Golden, B. L., Bodin, L., Doyle, T. & Stewart W. Jr. (1980). Approximate Travelling Salesman Algorithms. Opns.
Res 28:694-711.
Golden, B. L., Levy, L. & Dahl, R. (1981). Two Generalizations of the Traveling Salesman Problem. Omega 9:439-445.
Gonçalves, L. B. (2005). Heurísticas GRASP para um Problema de Roteamento Periódico de Veículos. Mestrado em
Ciência da Computação. Programa de Pós-Graduação em Computação, Universidade Federal Fluminense, Brasil.
Gerace, I. & Greco, F. (2008). The Travelling Salesman Problem in Symmetric Circulant Matrices with Two Stripes.
Mathematical Structures in Computer Science 18:165-175.
Gerdessen, J. (1996). Vehicle Routing Problem with Trailer. European Journal of Operational Research 93:135-147.
Grigorieva, A. & van de Klundert, J. (2006). On the high multiplicity traveling salesman problem. Discrete Opti-
mization 3:50-62.
Grötschel, M. & Holland, O. (1991), Solution of Large Scale Symmetric Traveling Salesman Problems. Math. Prog.
51:141-202.
Grötschel, M., Jünger, M. & Reinelt, G. (1991). Optimal Control of Plotting and Drilling Machines: A Case Study.
Mathematical Methods of Operations Research 35(1):61-84.
Gudmundsson, J. & Levcopoulos, C. (1999). A fast approximation algorithm for TSP with neighborhoods. Nordic
Journal of Computing 6:46-488.
Erdoğan, G., Cordeau, J-F. & Laporte, G. (2009). The pickup and delivery traveling salesman problem with first-in-
-first-out loading. Computers & Operations Research 36(6):1800-1808.
CAPÍTULO 9 Caixeiro-viajante 613

Gueta, L. B., Chiba, R., Jun Ota, Ueyama, T. & Arai, T. (2008). Coordinated Motion Control of a Robot Arm and
a Positioning Table with Arrangement of Multiple Goals. In: IEEE International Conference on Robotics and Auto-
mation – ICRA 2008, 2252-2258.
Gutin, G. & Punnen, A. P. (2007). The Traveling Salesman Problem and Its Variations. Series: Combinatorial Opti-
mization 12, Springer, ISBN: 978-0-387-44459-8.
Gutin. G. & Punnen, A. P. (2002). Traveling Salesman Problem and Its Variations. Kluwer Academic Publishers.
Guttmann-Beck, N., Hassin, R., Khuller, S. & Raghavachari, B. (2000). Approximation Algorithms with Bounded
Performance Guarantees for the Clustered Traveling Salesman Problem. Algorithmica 28:422-437.
Halldórsson, M. M., Iwano, K., Katoh, N. & Tokuyama, T. (1995). Finding Subsets Maximizing Minimum Struc-
tures. In: Proceedings of the Sixth Annual ACM-SIAM Symposium on Discrete Algorithms 150-159. Disponível em:
http://www.raunvis.hi.is/~mmh/Papers/jmst.ps. Acesso em setembro de 2011.
Hansen, P. (1980). Bicriterion Path Agorithms. In: Fandel, G. & Gal, T. (Eds.). Multiple criteria decision making.
Theory and applications. Lecture Notes in Economics and mathematical Systems 117:199-127.
Hartigan, J. (1975). Clustering Algorithms, John Wiley and Sons, New York.
Heilporn. G., Cordeau, J-F. & Laporte, G. (2010). The Delivery Man Problem with time windows. Discrete Optimi-
zation 7:269-282.
Helvig, C. S., Robins, G. & Zelikovsky, A. (2003). The moving-target traveling salesman problem. Journal of Alg.
49:153-174.
Henry-Labordere, A. L. (1969). The record balancing problem: a dynamic programming solution of a generalized
traveling salesman problem. Revue Française D Informatique De Recherche Operationnelle – RIRO B 2:43-49.
Hoff. A. & Lokketangen, A. (2006). Creating Lasso-Solutions for the Traveling Salesman Problem with Pickup and
Delivery by Tabu Search. CEJOR 14:125-140.
Hoeft, J. & Palekar, U. S. (1997). Heuristics for the plate-cutting traveling salesman problem. IIE Transactions
29:719-731.
Ismail, Z. & Ibrahim, W. R. W. (2008). Traveling Salesman Approach for Solving Petrol Distribution Using Simu-
lated Annealing. American Journal of Applied Sciences 5(11):1543-1546.
Jaillet, P. & Wagner, M. R. (2008). Online Vehicle Routing Problems: A Survey. The Vehicle Routing Problem:
Latest Advances and New Challenges. Operations Research/Computer Science Interfaces Series 43, Part II, 221-237.
Jaillet, P. (1988). A priori solution of a traveling salesman problem in which a random subset of the customers are
visited. Operations Research 36(6): 929-936.
Jozefowiez, N., Laporte, G. & Semet, F. (2011). A branch-and-cut algorithm for the minimum labeling Hamilto-
nian cycle problem and two variants. Computers & Operations Research 38:1534-1542.
Jozefowiez, N., Glover, F. & Laguna, M. (2008). Multi-objective Meta-heuristics for the Traveling Salesman Pro-
blem with Profits. Journal of Mathematical Modelling and Algorithms 7(2):177-195.
Kalantari, B., Hill A. V. & Arora, S. R. (1985). An algorithm for the traveling salesman problem with pickup and
delivery requests. European Journal of Operational Research 22:377-86.
Kalman, D. &, White, J. E. (2001). Polynomial Equations and Circulant Matrices. The American Mathematic Mon-
thly 108(9):821-840.
Karapetyan, D. & Gutin, G. (2011). Lin-Kernighan heuristic adaptations for the generalized traveling salesman
problem. European Journal of Operational Research 208:221-232.
Karp, R. M. (1977). Probalistic Analysis of Partitioning Algorithms for the Travelling Salesman Problem in the
Plane. Mathematics of Operations Research 2(3):209-224.
Karp, R. M. & Steele, J. M. (1985). Probabilistic analysis of heuristics. In: E. L. Lawler, J. K. Lenstra, A. H. G. Rinnooy
Kan, and D. B. Shmoys, editors, The Traveling Salesman Problem, 181-205. John Wiley and Sons, Chichester.
Kao, E. P. C. (1978). A Preference Order Dynamic Program for the Stochastic Traveling Salesman Problem. Ope-
rations Research 26:1033-1045.
614 Grafos

Kataoka, S. & Morito, S. (1988). An algorithm for the single constraint maximum collection problem. J. Oper. Res.
Soc. Japan 31(4):515-530.
Keller, C. P. & Goodchild. M. (1988). The multiobjective vending problem: A generalization of the traveling sales-
man problem. Environ. Planning B: Planning Design 15:447-460.
Kirby, R. F. & Potts, R. B. (1969). The minimum route problem for networks with turn penalties and prohibitions.
Transportation Research 3:397-408.
Krarup, J. (1975). The peripatetic salesman and some related unsolved problems. In: Combinatorial Programming
Methods and Applications. Reidel, Dordrecht, 173-178.
Kotov, V. & Kovalev, M. (1996). Maximum travelling salesman problem. Mathematical Methods of Operations Re-
search 43(2):169-181.
Lam, F. & Newman, A. (2008). Traveling salesman path problems, Math. Program. A 113:39-59.
Laporte, G., Mercure, H. & Norbert, Y. (1987). Generalized Traveling Salesman Problem Through n Sets of Nodes:
The Asymmetrical Cases. Discrete Appl. Math. 18:185-197.
Laporte, G. & Martello, S. (1990). The Selective Traveling Salesman Problem. Discrete Applied. Mathematics
26:193-207.
Laporte, G., Louveaux, E. & Mercure, H. (1994). A priori optimization of the probabilistic traveling salesman pro-
blem. Operations Research 42:543-549.
Laporte, G., Asef-Vazir, A. & Sriskandarajah, C. (1996). Some Applications of the Generalized Travelling Salesman
Problem. JORS 47:1461-1467.
Laporte, G. & Palekar, U. (2002). Some applications of the clustered travelling salesman problem. Journal of the
Operational Research Society 53:972-976.
Laporte, G., Rieira-Ledesma, J. & Salazar-González, J. J. (2003). A branch-and-cut algorithm for the undirected
traveling purchase. Operations Research 51(6):142-152.
Lenstra, J. K. & Rinnooy Kan, A. H. G. (1975). Some simple applications of the traveling salesman problem. Ope-
rational Research Quarterly 26:717-733.
Lin, S. & Kernighan, B. (1973). An Effective Heuristic Algorithm for the Traveling Salesman Problem. Operations
Research 21:498-516.
López-Ibáñez, M. & Blum, C. (2010). Beam-ACO for the travelling salesman problem with time windows. Com-
puters & Operations Research 37(9):1570-1583.
Lucena, A. (1990). Time-dependent traveling salesman problem: the deliveryman case. Networks 20:753-763.
Mak, V. & Boland, N. (2000). Heuristic approaches to the asymmetric travelling salesman problem with replenish-
ment arcs. Intl. Trans. in Op. Res. 7:431-447.
Mak, V. & Boland, N. (2007). Polyhedral results and exact algorithms for the asymmetric travelling salesman pro-
blem with replenishment arcs. Discrete Applied Mathematics 155:2093-2110.
Menger, K. (1927). Zur allgemeinen Kurventheorie. Fundamenta Mathematicae 10:95-115.
Miller, D. & Pekny, J. (1991). Exact Solution of Large Asymmetric Traveling Salesman Problems. Science 251:754-761.
Minoux, M. (1986). Optimal Traffic Assigment in a SS/TDMA Frame: A New Approach by Set Covering and Co-
lumn Generation. RAIRO – Operations Research 20:1-13.
Minoux, M. (1987). A Class of Combinatorial Problems with Polynomially Solvable Large Scale Covering-Partitio-
ning Relaxations. RAIRO – Operations Research 21:105-136.
Minoux, M. (1989). Solving Combinatorial Problems with Combined Min_Max_Min_Sum Objective and Appli-
cations. Mathematical Programming 45:361-372.
Mitchell, J. S. B. (2000). Geometric shortest paths and network optimization. In: J.-R. Sack, J. Urrutia (Eds.). Hand-
book of Computational Geometry, Elsevier, Amsterdam, 2000.
Montemanni, R., Barta, J., Mastrolilli, M. & Gambardella, L. M. (2007). The Robust Traveling Salesman Problem
with Interval Data. Transportation Science 41(3): 366-381.
CAPÍTULO 9 Caixeiro-viajante 615

Mosheiov, G. (1994). The Travelling Salesman Problem with pick-up and delivery. EJOR 79:299-310.
Ohlmann, J. W. & Thomas, B. W. (2007). A compressed-annealing heuristic for the traveling salesman problem
with time windows. INFORMS Journal on Computing 19(1):80-90.
Ong, H. L. (1982). Approximate algorithms for the traveling purchaser problem. Operations Research Letters
1:201-205.
Palleta, G. (2002). The Period Traveling Salesman Problem: A New Heuristic Algorithm. Computers & Operations
Research 29:1343-1352.
Plante, R. D., Lowe, T. J. & Chandrasekaran, R. (1987). The Product Matrix Traveling Salesman Problem: An Appli-
cation and Solution Heuristics. Operations Research 35:772-783.
Papadimitriou, C. H. & Steiglitz, K. (1982). Combinatorial Optimization Algorithms and Complexity. PrenticeHall,
New York.
Pearn, W. L. & Chien, R. C. (1998). Improved solutions for the traveling purchaser problem. Computers & Opera-
tions Research 25(11):879-885.
Percus, A. G. & Martin, O. C. (1999). The Stochastic Traveling Salesman Problem: Finite Size Scaling and the Ca-
vity Prediction. Journal of Statistical Physics 94(5-6):740-758, disponível em: http://citeseerx.ist.psu.edu/viewdoc/
summary?doi=10.1.1.129.4913. Acesso em setembro de 2011.
Picard, J. C. & Queyranne, M. (1978). The Time Dependent Traveling Salesman Problem and its Application to the
Tardiness Problem in One Machine Scheduling. Opns. Res 26:86-110.
Powell, W. B., Jaillet, P. & Odoni, A. (1995). Stochastic and Dynamic Networks and Routing, In: Network Routing,
M. O. Ball, T. L. Magnanti, C. L. Monma, and G. L. Nemhauser (Eds.). Vol 8 of Handbooks in Operations Research
and Management Science, 141-295, North-Holland, Amsterdam.
Ramesh, T. (1981). Traveling Purchaser Problem. OPSEARCH 18(2):78-91.
Ratliff, H. D. & Rosenthal A. S. (1983). Order-Picking in a Rectangular Warehouse: A Solvable Case for the Travel-
ling Salesman Problem. Operations Research 31:507-521.
Rego, C. (1998). Relaxed Tours and Path Ejections for the Traveling Salesman Problem. European Journal of Ope-
rational Research 106(1-2):522-538.
Reinelt, G. (1994). The Traveling Salesman: Computational Solutions for the Applications. Lectures Notes in Com-
puter Science, 840, Spring-Verlag, Berlin.
Reinelt, G. (1992). Fast Heuristics for Large Geometric Traveling Salesman Problems. ORSA Journal on Computing
4(2):206-217.
Riera-Ledesma, J. & Salazar-González, J. J. (2005). A Heuristic Approach for the Traveling Purchaser Problem.
European Journal of Operational Research 162:142-152.
Russel, R. (1977). An Effective Heuristic for the M-Tour Traveling Salesman Problem with Some Side Conditions,
Opns. Res. 25:517-524.
Sarubbi, J. F. M., Mateus, G. R., Luna, H. P. L. & Miranda, G., Jr. (2007). Model and Algorithms for the Multicom-
modity Traveling Salesman Problem. In: HIS-07- 7th International Conference on Hybrid Intelligent Systems:113-119.
Schilde, M., Doerner, K. F., Hartl, R. F. & Kiechle, G. (2009). Meta-heuristics for the bi-objective orienteering pro-
blem. Swarm Intelligence 3:179-201.
Schrijver, A. (1990). On the history of combinatorial optimization (till 1960), disponível em: http://wiki.uni.lu/
secan-lab/Schijver1990.html. Acesso em setembro de 2011.
Silva, R. F. & Urrutia, S. (2010). A General VNS heuristic for the traveling salesman problem with time win-
dows. Discrete Optimization 7(4):203-211.
Singh, K. N. & van Oudheusden, D. L. (1997). A branch and bound algorithm for the traveling purchaser problem.
European Journal of Operational Research 97:571-579.
Srivastav, A., Schroeter, H. & Michel, C. (2001). Approximation Algorithms for Pick-and-Place Robots. Annals of
Operations Research 10:321-338.
616 Grafos

Silberholz, J. & Golden, B. (2007). The Generalized Traveling Salesman Problem: A New Genetic Algorithm Ap-
proach. Extending the Horizons: Advances in Computing, Optimization, and Decision Technologies 65-181.
Sun, Y., Zhang, M., Liu, E., Zhang, L. & Li, H. (2011). Genetic Algorithm Based on Permutation Distance for Laser
Antimissile Problem. Applied Mechanics and Materials 40-41:488-493.
Tasgetiren, M. F., Suganthan P. N. & Pan, Q-K. (2010). An ensemble of discrete differential evolution algorithms
for solving the generalized traveling salesman problem. Applied Mathematics and Computation 215:3356–3368.
Teeninga, A. & Volgenant, A. (2004). Improved Heuristics for the Traveling Purchaser Problem. Computers &
Operations Research 31:139-150.
Tokutaka, H. & Fujimura, K. (1999). SOM-TSP: An approach to optimize surface component mounting on a printed
circuit board, Kohonen Maps. E. Oja and S. Kaski, editors, Elsevier, Amsterdam, 219-230.
Toth, P. & Vigo, D. (1999). A heuristic algorithm for the symmetric and asymmetric vehicle routing problems with
backhauls. European Journal of Operational Research 113:528-543.
Tsitsiklis, J. N. (1992). Special Cases of Traveling Salesman and Repairman Problems with Time Windows. Networks
22:263-282.
Turino, J. (2002). ASIC DFT and BIST Alternatives, disponível em: http://www.chipcenter.com/asic/tn004.html.
Acesso em agosto de 2011.
Vansteenwegen, P., Souffriau, W. & Oudheusden, D. (2011). The orienteering problem: A survey. European Journal
of Operational Research 209:1-10.
Voß, S. (1996). Dynamic tabu search strategies for the traveling purchaser problem. Annals of Operations Research
63:253-275.
Wagner, D. P. & Stein, C. (2001). Approximation Algorithms for the Minimum Bends Traveling Salesman Problem.
In: Proceedings of the 8th International IPCO Conference on Integer Programming and Combinatorial Optimization,
Lecture Notes in Computer Science 2081: 406-422. 
Wang, X. & Regan, A. C. (2002). The Traveling Salesman Problem with Separation Requirements, UCI-ITS-LI-
-WP-02-11. Institute of Transportation Studies University of California, Irvine, U.S.A.
Westerlund, A., Göthe-Lundgren, M. & Larsson, T. (2006). A stabilized column generation scheme for the trave-
ling salesman subtour problem. Discrete Applied Mathematics 154(15):2212-2238.
Xiong, Y., Golden, B. & Wasil, E. (2007). The Colorful Traveling Salesman Problem, Extending the Horizons: Ad-
vances in Computing, Optimization, and Decision Technologies, Operations Research/Computer Science Interfaces
Series 37, Springer US, 115-123.
Yang, J., Shi, X., Marchese, M. & Liang, Y. (2008). An ant colony optimization method for generalized TSP pro-
blem. Progress in Natural Science 18(11):1417-1422.
Yang, Q. F., Burkard, R. E., Çela, E. & Woeginger, G. J. (1995). Hamiltonian Cycles in Circulant Digraphs with Two
Stripes. Technische Universität Graz, SFB-Report 20.
Índice Remissivo 617

Índice Remissivo

A Heurísticos para o Problema do Árvore de Steiner, 484, 487


Adição de um elo, 134 Caixeiro Viajante, 538 com Coleta de Bônus, 491
Adjacência Kou, Markowsky e Berman, 506 com Conexão Est, 488
de Arestas, 11 MPM, 384 com Conexão Estocástica, 488
de Vértices, 10 para a Determinação de uma com Diâmetro Limitado, 501
Algoritmo(s) Cadeia Euleriana Fechada, com Mínimo Diâmetro, 501
Baseado em Cobertura de 223 com Mínimo Grau, 502
Arestas – Takahashi & para Cobertura de Vértice, 323 com Mínimo Número de Vért.
Matsuyama, 512 para Conjunto Estável, 321 de Steiner, 500
Baseados no Caminho de para o Caminho mais Curto, com Norma Linear, 489, 490
Aumento de Fluxo, 376 199
da Árvore Geradora Mínima com Seleção Interna, 495
Simultâneo para AG Mínima e
com Poda, 504 de k-Tamanho, 496
Máxima, 139
das Arborescências, 507 em Grafo Direcionado, 502
Stem-and-cycle, 569
de Bellmore & Nemhauser, 538 em Grafos, 484
Twice-Around, 551
de Borůvka, 159 em Grupamentos, 497
Warshal, 270
de Dijkstra, 200-206, 270, 271 Enraizada com Penalidades, 499
Antecessores, 10, 14
de Dinitz, 381 Limitada em Grau, 502
Aplicação dos Modelos em Grafos,
de economias, 554 Mínimo Diâmetro Lim Grau,
92
de Edmonds, 310 502
Aproveitamento de Capacidade
de Fleury, 226 Mínimo Vértice Limitada em
Carga, 393
de Floyd-Warshall, 210-213, 271 Custo, 500
Arborescências, 507
de Fluxo Forçado, 381 Terminal, 495
Arco(s), 2
de Ford e Fulkerson, 377 com Diâmetro Limitado, 501
de Ford-Moore-Bellman, 207- Utilizável, 276
Áreas de Aplicações Reais de Parcial, 495
210, 270
Árvores, 169 Árvore Geradora, 132, 137
de Hierholzer, 223
de Kruskal, 156 Aresta(s) , 2 com no Máximo k Folhas, 141
de Prim Colorido, 154 Antipodais em um Ciclo Ck, com Número Máximo de
de Prim, 152 284 Folhas, 141
de Roy, 271 Antipodal, 87 Compacta, 145
para Componentes Conexas, de avanço, 64 de Cruzamento Mínimo, 148
191 de cruzamento, 64 de Grau Mínimo, 138
de Warshall para Fechos de retorno, 62, 64 de Grau Restrito, 138
Transitivos, 193 Elo, 134 de Mínimo Diâmetro, 142, 143
de Zykov, 442 Emparelhada, 310 Duplamente Limitada, 144
do Vértice mais Próximo – paralelas, 7 Isomorfa, 139
Takahashi & Matsuyama, 510
Árvore(s) , 24 , 130 k Compacta, 145
DSATUR para Coloração
alternante, 311 Máxima, 137
Própria, 443
Exato para Coloração Própria, Banana, 144 Mínima, 137, 150
442 (n,k) Banana, 144 Mínima Bicolorida, 149
Exatos para a Coloração de Binária, 161 Mínima Capacitada, 147
Vértices, 446 de profundidade, 62 Mínima com Mínimo Grau, 138
Face_Certa, 111 Duplamente Limitada, 145 Mínima k-hop, 146
Heurísticos para Árvore de k-hop, 147 Mínima Limitada em Diâmetro,
Steiner, 504 Taturana, 149 142
618 Grafos

Mínima Taturana, 149 em Grafos, 195 Conexa, 300


Mínimo Diâmetro Lim. em Euleriano, 16, 220 de Arestas, 294
Grau, 142 Hamiltoniano, 16 de Ciclos, 297
MinMax_MinSum, 140 fechado, 17 de Cliques Mínima, 302
Assimetria de ligações em circuitos mais Curto, 195 de Cliques, 302, 303
sincronizados, 515 com Custos nos Vértices, 197 de Vértices, 294, 295
Atividade fantasma, 242 em Caminhos de G, 296
com Janelas de Tempo, 228
Atribuição de valores, 96 em Ciclos de G, 296
com Vértices de Passagem
em k-Ciclos, 296
B Obrigatória, 229
em L-Ciclos, 296
Backbone óptico (Feeder), 165 com Vértices de
Mínima em Caminhos de G,
Barras em Queda, 127 Reabastecimento, 230
298
Bloco, 34 em Grafo em Camadas, 214- minimal, 294
Blossom, 313 215 Parcial, 299
Bondy & Chvátal, 218 k-Centro, 230 Máxima, 299
Broadcasting, 326 Restrito em Peso, 231 Ponderada, 296
Busca mais Longo, 196 Coloração, 418, 420
em Grafos, 59 Canibais, 123 Acíclica, 438, 440
em largura, 66 Capacidade Completa, 422
em profundidade, 62 de um Corte s-t, 374 de Arestas, 427, 434
C Líquida, 374 Equilibrada, 472
Celebridade, 126 Exata, 423
Cadeia(s), 13, 114
Central de equipamentos Forte, 425
Euleriana, 16
(Headend), 165 Fraca, 425
fechada, 16, 17
Centro de G, 21 Hamiltoniana, 433, 434
Eulerianas e Modelos de
Harmoniosa, 423, 424
Otimização, 233 Ciclo(s) , 17
Split, 457
Caixeiro Viajante Aresta Antipodal, 284
t-múltipla, 472
Bipartido, 589 euleriano, 16
Total, 427
com Curvas, 580 Eulerianos, 220
em Cobertura, 594 Total Distinta, 429
Hamiltoniano, 17
em Grupos, 579 Total Distinta em Vértices
Steiner Terminal, 497 Adjacentes, 428
em Vizinhanças, 580
Vértice Antipodal, 284 Completando as arestas de G, 126
Euclidiano, 580
via Matching, 562, 565 Componente Conexa, 28
Generalizado, 578
Cintura de G – g(G), 20 Conectividade
m-Peripatético, 577
Circunferência de G, 20 em Arestas, 29
Máximo, 536
Classe do Problema do Caixeiro
Múltiplo, 577 em Vértices, 29
Viajante
Multivisitas, 537 Conexidade, 186
com Coleta de Bônus, 595
Caminho(s), 14 em Arestas, 29
com Restrição de
Alternante, 310 Sequenciamento, 589 em Vértices, 29
Aumentante, 311 com Restrição de Tempo, 588 Conjectura, 338, 433
com Falha nos Vértices/Arestas, em Subciclos, 593 Conjunto Conector, 350
232 Estocástico, 605 Mínimo, 350
de Mínimo Gargalo, 232 Clique Máxima/Maximal, 302 Conjunto de Articulação, 31
Disjunto em Arestas, 197 Clique Maximal e Máxima, 301 Conjunto Dominante, 304
Disjuntos, 199 Coárvore Geradora, 133 Conexo, 305
do Caixeiro Viajante, 537 Cobertura(s), 294 Independente, 305
do Hiker Dice, 246 com Vértices Ponderados, 294 Perfeito, 305
e Ciclos Hamiltonianos, 216 Conexa de Vértices, 299 simétrico, 332
Índice Remissivo 619

Conjunto Independente, 307 Floresta, 133 de proximidade, 118


Máximo Ponderado, 325 Floresta de Steiner em Grafo de Recrutamento, 112
Ponderado, 325 Direcionado, 503 de Tietze, 441
Exato, 325 Fluxo de Turán, 341
Conjuntos de Desconexão, 31 em Redes, 368 de Visibilidade, 92, 126
Conservação de fluxo em uma entre Conjuntos de Vértices, 368 de Xadrez, 95
Rede, 370 Líquido, 374 Deck, 337
Corda, 19 Viável, 371 derivado (derived graph), 70
Corte(s), 31 Folga de um Arco, 276 derivativo (derivative), 70
em Arestas, 32 Folhas da Árvore, 24 Direcionado, 8
Dividido, 340
em Vértices, 32 G
Dual, 46
s-t em uma Rede, 374 Gargalo de Fluxo, 375
em xadrez, 126
Cruzamento de Arestas, 41 Genus de um Grafo, 462
Engrenagem, 256
D Grafo(s)
Escada, 254
1-Fator, 316 de Mobius, 255
Decomposição
Anel, 250 Especiais Associados às
em Árvore, 321
em Subgrafos, 318 Antipodal, 87 Árvores, 168
Decomposição de G aresta (edge graph), 70 Estrela, 130
em árvore, 319 Bipartido, 36 Euleriano, 222
em subgrafos H, 318 Bipartido Completo, 37 Exemplos, 2
Diagrama de setas, 242 Buraco e Anti-Buraco, 416 Extremal, 341
Diâmetro Caminho, 135 Finitos, 10
de G, 21 capacitados, 295 Fracamente Conexo, 186
Dtour, 87 Ciclo, 17 Fracamente Perfeitos, 417
Diferenças de Grafos, 48 Circulante, 257 Gaiola, 341
Difusão Ótima, 329 Circular, 343 Gracioso, 461
Distância Dtour, 87 Clique, 37 Grade, 253
Distância entre Árvores, 135 cobertura (covering graph), 70 Hamiltoniano, 217
Distância entre Vértices, 14 com Apelidos, 68 Hipercubo, 251
Dominância de Vértices, 306 Complementar, 49 Hipohamiltoniano, 263
Complemento, 49 Homeomorfo, 44
E
Completo, 37 Ímpar, 460
Emparelhamento, 308 Conexo(s), 24, 28 Infinitos, 10
Máximo, 409 conjugado (conjugate graph), 70 intercâmbio (interchange
Ponderado Mínimo, 315 Cordal, 459 graph), 70
Ensinando o Computador a Girar Crítico, 424 Interseção, 466
Cubos, 109
D-Distância, 249 Intervalar, 466
Escorpião, 69
das permutações das cadeias de Isomorfo, 43
Estruturas de Dados para Grafos,
acordes, 115 k-Aresta-Conexo, 187
53
de Aumento de Fluxo, 376 k Comprimento de Banda, 432
Excentricidade, 21
de Discos 94 k-Conexo, 30
Dtour, 87
de Distância Regular, 249 k-Cubo, 251
F de Estado, 96, 100 k-fator, 316
Família de Grafos para a Solução do 8-Puzzle, k-Potência, 337
Especiais, 36 99 k-Tenaz, 187
Perfeitos, 417 de Halin, 168 k-Vértice-Conexo, 187
Fecho Transitivo de Harary, 247 Kneser, 460
de um Grafo, 11 de Knödel, 255 Linha, 70
de um Vértice, 11 de Kuratowski, 44 Livre de Triplas Asteoidais, 467
620 Grafos

Livro, 255 H Soma zero, 102


Meyniel, 462 Harary, 218 K
MinMax, 103 Heurística(s) k-Árvore de Steiner, 495
Minor, 45 Baseadas em Grupamentos, 557 k-Conexidade, 187
Não Ponderado, 195 de Christofides, 553 K-Cortes, 33
Notação Básica, 2 de Economia, 554 k-Packing, 308
Ore, 248 de Grupamentos, 560
Outerplanar, 464 de Inserção de Arestas, 543 L
Outerplanar, 464 de Inserção de Vértices, 539 Labirinto, 126
Pancíclico, 247 de Inserção e Deslocamento de Laço, 7
Par, 24 Vértices – Shift, 544 Latência, 582
para a Modelagem de Jogos, 101 de k-Substituições, 548 1a Lei de Kirchoff, 370
para Análise de Personagens dos Retalhos, 557 Light Up, 335
Literários, 113 em Cobertura de Ciclos, 562 Lista de Adjacência, 55
para moléculas, 123 Exchange, 546 Localização de Facilidades, 333
Perfeitos, 416 Twice-Around, 551
M
Pirâmide, 69 Hiker Dice Hamiltoniano, 608
Hipergrafo, 7 Manejo Ecológico de Reservas
Planar, 40 Vegetais, 117
Platônico, 251 Homeomorfismo, 44
Matching, 308, 316
Poliédrico,252 Homomorfismo, 420
Matriz de Adjacência, 53
Ponderado, 8, 195, 295 de Mínimo Custo, 421
Matriz de Ciclos, 187, 189
Prisma, 253 Máximo, 421
Matriz de Corte, 32, 33
Probe, 340 I Matriz de Incidência, 54
r-Tenaz, 188 Índice Cromático Circular, 434, 435 Matriz de Pesos, 56
Reconstrução, 338 Índice de Wiener, 15 matryoshkas, 124
reflexivo, 7 Índice Estrela, 437 Modelos de Steiner com Coleta de
Regular, 23, 39 Índice Subcromático, 437 Bônus, 492
Roda, 256 Inserção, 48 Movimentação de Satélites de
Rotulado, 8 Instrução, 453 Exploração, 239
Sanduíche, 336 Interferência, 454 Multigrafo, 7
semi-hamiltoniano, 217 Invariantes, 317 N
semieuleriano, 222 Isomorfisco, 43
Net Worth Maximization Problem,
singleton, 7
J 492
Slim, 463 Nós, 2
Jogo da Velha Através de Grafos,
Snark, 463 Nulidade de um Grafo – r, 35
104
Split, 340 Número
Jogo Sudoku, 449
Threshold, 458 Jogos, tipos de Acromático, 422
Torneio, 39 Assimétricos, 102 Bicromático, 436
Total, 429 Informação imperfeita, 102 Ciclomático, 35
Triangularizado, 459 Informação perfeita, 102 Cobertura de Clique, 302
trivial, 7 Quanto à bonifi cação, 102 Cocromático, 436
Unicamente Colorível, 473 Quanto à informação, 102 Cromático, 418
Unidistância, 249 Quanto à simetria, 102 Acíclico, 438
vazio, 7 Quanto ao processo de decisão, e Acromático, 423
Grau de 102 Forte, 425, 427
De saturação, 420 Sequenciais, 102 Hamiltoniano, 433
De um Vértice, 22 Simétricos, 102 Harmonioso, 423
externo, 22 Simultâneos, 102 Total, 427
interno, 22 Soma diferente de zero, 102 de Absorção Cromático, 448
Índice Remissivo 621

de Arestas, 23 Ponte, 31 Problema de Steiner em Estrela,


de Partição de Cliques, 302 Pontos de distribuição, 165 491
de Pré-coloração, 447 Problema Bidirecional com uma Problema de Steiner em Grafos, 484
de Vértices, 23 Estação Entrada/Saída, 456, 457 Problema de Steiner Generalizado,
Star-Cromático, 432, 433 Problema da Absorção Cromática, 490
Subcromático, 436 447 Problema de Transporte, 390
t-Cobertura Total, 300 problema da árvore geradora Problema de Transporte de
T-Cromático, 430 mínima robusta, 167 Bagagens em Aeroportos, 573
Problema da Circulação Viável em
O Problema do barqueiro, 97
Redes, 387
Operação de Adição de Arestas, 50 Problema do Broadcasting, 329
Problema da Coleta com
Operação de União Total de Grafos, Orçamento, 492 Problema do Caixeiro Viajante, 536
51 Alugador, 601, 602
Problema da d-Pré-coloração, 448
Operações com Grafos e Estruturas Coleta e Entrega, 591
Problema da Datação de Sepulturas
Parciais, 43
em Sítio Arqueológico, 241 com Alvos Móveis, 586
Ordem de um Grafo, 9
Problema da Empilhadeira, 235 com Coleta de Bônus, 595
Otimização de Cadeias de
Varreduras e Semicondutores, Problema da Extensão de uma Pré- com Coleta e Entrega, 592
576 coloração, 447 com Janelas de Tempo, 588
Otimização de Distribuição de Problema da Fofoca, 326 com Lucros (Profits), 597
Sinal em Redes, 162 Problema da Insanidade com Recompletamento, 585
Otimização de Operações de Robôs Instantânea, 107 com Requisitos de Separação,
Industriais, 238 problema da k-ésima melhor 593
Otimização de Rotas Aéreas, 452 Árvore Geradora Mínima, 137
com Sequência de Clientes, 590
Otimização de Sistemas com Grau Problema da Modulação da Energia
Comprador, 599
de Incerteza, 167 em Reatores Nucleares, 330
de Máximo Espalhamento, 583
Otimização de Sistemas de Problema da Otimização da
Identificação Postal, 452 de Mínima e de Máxima
Assimetria (Skew) de Ligações
Otimização de Sistemas Submersos Latência, 582
em Circuitos de Sincronização,
em Campos de Petróleo Off- em Matriz Circulante, 586
515
Shore, 166 On-line, 587
Problema da Otimização
Otimização de Uso de Registros em Periódico, 587
de Ligações em Circuitos
Compiladores, 453 Preto e Branco, 590
Integrados, 514
P Problema da Otimização de Remoto, 582
Partição de Cliques Mínima, 302 Turbinas, 236 Rotulado, 581
Partição de G em Caminhos Problema das n rainhas, 124 Seletivo ou Orienteering, 596
Disjuntos, 197 Problema das n torres, 123 Subtour, 594
Partição em Caminhos k-longos, Variantes do, 587
Problema das Quatro Cores, 419
298
problema de Alocação de Problema do Caminho de Pascal,
Partição em Cliques, 302
Frequências, 450 260
Partição em Estrelas, 437
Problema de Aproveitamento de Problema do Carteiro ao Vento-
Passeio(s), 12
Carga em Aviões de Passageiros, Windy, 233
da empilhadeira, 269
392 Problema do Carteiro Chinês, 233
do Pistoneio, 574
do robô curioso, 283 Problema de Emparelhamento, 391 Problema do Carteiro Rural, 235
do Cavalo, 218 Problema de Enumerar as Cliques Problema do Fluxo Máximo, 373
Percurso, 12 de G, 302 Problema do Hiker Dice, 246
Pré-Euleriano, 19 Problema de Minimização de Problema do k-Carteiro Chinês
Pré-Hamiltoniano, 19 Goemans e Williamson, 492 Min-Max, 234
PERT/CPM, 241 Problema de Programação de Problema do k-Carteiro Chinês,
Planejamento de disciplinas, 124 Tarefas, 451 234
622 Grafos

Problema do Sequenciamento de Redes Urbanas de Distribuição de t-Cobertura Total de Vértices


Genoma, 237 Gás Natural, 516 (Arestas), 300
Problema do Valor Mínimo para a Representação em Estrela Direta, T-Coloração, 430, 431
Coleta de Bônus, 492 56 T-Span, 431
Problema dos Caminhos Disjuntos Representação em Estrela Direta- Tamanho de um Grafo, 9
em Arestas, 198, 504 Reversa, 58 Técnica de Lin & Kernighan,
Problema dos Caminhos Disjuntos Representação em Estrela Reversa, 570
em Vértices, 198 57 Teorema das Quatro Cores, 440
Representação Vetorial, 55 Teorema de Dirac, 218
Problema dos Sinos da Catedral de
Teste de Circuito, 454
Saint-Paul, 114
S Tira de Möbius, 441
Problema Unidirecional com uma
sequência de cadeias, 114 Torneio, 306
Estação Entrada/Saída, 456
sequência de graus, 23 Torres de Hanói, 119
Problemas Associados à Coloração,
sequência plain bob, 114 bicoloridas, 127
447
Simplex de um Grafo, 339 Traveling Repairman Problem, 588
Problemas de Otimização
Soma de Grafos, 47 Trilha, 13
Associados, 325
Soma Disjunta de Grafos, 46 Asteroidal, 467
Problemas de Robótica, 455
Procedimentos Gerais de Busca Soma em Anel, 47 U
Local, 565 Speeding Deliveryman Problem, 588 União Disjunta de Grafos, 46
Processador, 453 Steiner Coleta de Bônus, 495
Steiner em Grupamentos, 499 V
Produto Cartesiano de Grafos, 52
Propriedades das Árvores, 130 Steiner Generalizado, 491 Variantes do Caixeiro-viajante, 577
pseudografo, 7 Stem-and-Cycle, 565 Variantes do Caminho mais Curto,
subárvore, 130 228
Q Variantes do Carteiro Chinês,
Subcoloração
q-Árvore, 86 de Arestas, 437 236
q-Passeio, 86, 279 de Vértices, 436 Variáveis livres, 96
Quase-Árvore, 168 de Vértices, 437 Vértice(s) , 2
Subgrafo(s), 25 Antipodal, 87
R
Aresta-Removido, 337 em um Ciclo Ck, 284
Raio de G, 21 conservativos, 370
Euleriano Gerador, 536
Raio Dtour, 87 de ligação, 563
Gerador, 26
Rank de um Grafo – r, 35 de passagem de fluxo, 370
Induzido por Arestas, 26
Reconstrução de DNA com Extremos, 24, 25
Induzido por Vértices, 26
Fragmentos, 237 fonte, 370
Maximal, 27
Rede, 368 Fortemente Conectados, 186
Parcial, 25, 26
Rede em camadas, 382 Fracamente Conectados, 186
Próprio, 25
Rede interna, 165 Vértice-Removido, 337 Imperador, 306
Rede óptica, 164 Sucessores, 10, 14 Rei, 306
de distribuição, 165 Supergrafo(s), 25, 27 Saturado, 310
drop, 165 sumidouro, 370
Redes de Interação entre Proteínas, T Terminais, 24, 25
454 T-Clique, 301 Universal ou Dominante, 305
100 EXERCÍCIOS RESOLVIDOS  Soluções 1
2 Gráficos

Exercícios Resolvidos do Capítulo 1


Exercício no 1
1. Os vértices vizinhos são 2,3, 6, 11, 12 e 8.
2. Como o grafo é não direcionado e conexo, o fecho de 1 é o próprio conjunto de vértices do grafo.
3. Passeio 3-2-1-3-7-6-3-2-7-2.
4. Caminho 2-3-6-5.

5. Pelo caminho 1-4-8-7-11 é 4.


6. O valor é 70. Distância para 2 é 2; Distância para 3 é 4; Distância para 4 é 1; Distância para 5 é 6 (caminho
1-4-8-7-6-5); Distância para 6 é 5; Distância para 7 é 3; Distância para 8 é 2; distância para 9 é 6; Distân-
cia para 10 é 5; Distância para 11 é 4; Distância para 12 é 6; Distância para 13 é 8; Distância para 14 é
10; Distância para 15 é 8.
7. Caminho fechado 2-7-8-9-4-2.
8. Cadeia 3-7-2-1-3-2.

9. Ciclo 3-10-11-7-12-8-4-2-3.

10. Cintura=3; Circunferência=5; Excentricidade de 5=3; Raio=2; Diâmetro=3


11. d(G)=1; D(G)=3
100 EXERCÍCIOS RESOLVIDOS  Soluções 3

12. Caminho pré-euleriano e caminho pré-hamiltoniano

Caminho pré-euleriano: 3-4-5-7-1-3-7-2-6-7-5-6 Caminho pré-hamiltoniano: 3-7-1-3-4-5-7-6-5

Exercício no 2

subgrafo próprio subgrafo parcial sub. ind. p/vért. sub. ind. p/arest. supergrafo

Exercício no 3

Corte em arestas Corte em vértices Ponte Conj. de articulação Dois blocos


4 Gráficos

Exercício no 4
L = m – n + c = m – r = 22 – 13 + 1 = 10

Nulidade = 10
g = m – n + 1 = 22 – 13 + 1 = 10

Número Ciclomático = 10
r = n – c = 13 – 1 = 12

Rank = 12
Grafo Cross = 4

Exercício no 5

Deseja-se mostrar que Uma aresta é definida pelos seus vértices terminais. Considere a aresta
e vértices terminais xa e xb. Esta aresta contribui com uma unidade tanto para o grau de xa como para o grau
de xb. Deste modo, cada aresta é contada 2 vezes no somatório „

Exercício no 6

Dado um grafo bipartido G = (N, M), N é dividido em 2 cojuntos disjuntos A e B tal que existem apenas arestas
(a, b) a  A e b  B. Um grafo bipartido completo possui |M| = |A|×|B|, sendo portanto o maior número de
arestas que G pode ter. O maior número de arestas em um grafo bipartido com n vértices, n par, ocorre quando
|A| = |B|. Analogamente, se n é ímpar, o número de arestas ocorre quando |A| = |B| + 1.

Caso 1. n é par

Neste caso |A| = |B| = n/2 e o maior número de arestas é dado por |M| = |A| × |B| = (n/2)2 = n2/4.

Caso 2. n é ímpar

Neste caso, |A| = |B| + 1 e

Portanto, |M| = |A| × |B| = (n2–1)/4, que é menor que n2/4. „

Exercício no 7
Sabe-se que
nkk + nk+1(k + 1) = 2m (1)
nk + nk+1 = n (2)
100 EXERCÍCIOS RESOLVIDOS  Soluções 5

Multiplicando (2) por –(k + 1) e somando o resultado a (1), temos

nk = n(k +1)–2 m „

Exercício no 8
Considerando cada time como um vértice e cada jogo como uma aresta, o problema proposto é de encontrar
um grafo 3-regular com 9 vértices. Neste caso o somatório dos graus dos vértices poderia ser calculado por
9 × 3 = 27. Como 27 é um número ímpar e é obrigatoriamente um número par, conclui-se que
não é possível construir tal grafo. Portanto, não é possível programar um torneio entre 9 times tal que cada
time jogue com exatamente três outros times.

Exercício no 9
O grafo G’ = (N’, M’) da figura abaixo é um subgrafo próprio1 de G, não induzido por vértices2 e não indu-
zido por arestas3.
1. É suficiente dizer que G’ é subgrafo próprio de G, porque N’  N. Também seria suficiente afirmar a con-
dição de grafo próprio de G’ através de seu conjunto de arestas, uma vez que M’  M.
2. Não é induzido pelo conjunto de vértices {1, 2, 3, 4, 5}, porque não possui as arestas (1,5) e (2,5).
3. Não é induzido pelo conjunto de arestas {(1,2), (1,3), (2,4), (3,4)}, porque possui um vértice isolado.

Grafo Subgrafo

Exercício no 10
O algoritmo para identificar se G é conexo usará uma variação do algoritmo de busca em profundidade, como
mostrado através dos pseudo-códigos e_conexo( ) e busca_prof( ). O procedimento é iniciado pelo algoritmo
e_conexo( ), que recebe como parâmetro de entrada o grafo G. Um vetor de rótulos para os vértices é definido
como marca[ ]. No começo todos os vértices recebem rótulo 0 (linhas 1-3). O percurso em profundidade
é implementado no algoritmo busca_prof( ), que recebe um vértice como parâmetro de entrada. O percurso
no grafo pode iniciar em qualquer um de seus vértices. No caso, ele é iniciado no vértice 1 com a chamada
busca_prof(1). Cada vez que um vértice v é alcançado pela primeira vez na busca, marca[v] muda para 1 e o
procedimento de busca é chamado recursivamente para cada um dos vértices não marcados adjacentes a v.
Quando o algoritmo retorna da chamada de busca_prof(1), verifica-se se marca[v] é igual a 1 para todos os
vértices do grafo. Se, pelo menos, um dos vértices do grafo não estiver marcado, então o grafo não é conexo.
O laço entre as linhas 1-3 tem complexidade (n) e o laço entre as linhas 6-10 tem complexidade O(n). Se
o grafo é conexo, então o algoritmo busca_prof( ) é chamado exatamente n vezes. Caso contrário o proce-
dimento é chamado, no máximo, n-1 vezes. Isto acontece porque cada chamada do procedimento bus-
6 Gráficos

ca_prof( ) ocorre somente se o vértice v passado como parâmetro tiver marca[v] = 0. A marca do vértice é
trocada para 1 no primeiro passo do algoritmo busca_prof( ) e não é restabelecida para 0 em qualquer ponto
dos algoritmos. Se o grafo G for representado através de uma lista de adjacências, então o laço entre as linhas
2-6 do algoritmo busca_prof( ) é executado |lista_adj[i]| vezes para cada vértice i, 1 ≤ i ≤ n, ou seja, o laço
é executado grau de i vezes. Como tem-se que , então o algoritmo para verificar se um grafo é
conexo, utilizando

a estrutura de dados de lista de adjacências, tem complexidade O(n+m).

A e_conexo
Ler G = (N,M)
1 Início
2 Para i ← 1 até |N| Faça A busca-prof(I )
3 marca [i] ← 0
4 Fim_para busca_prof(i)
a←1 Início
5
6 Para i ← 1 até |N| Faça 1 marca [v] ← 1
Se (marca [i] = 0) então 2 Para todo v  lista_adj[i ] Faça
7
a←0 3 Se (marca[v] = 0) então
8 busca_prof(i )
i ← |N| + 1 4
9 Fim _se 5 Fim_se
10 Fim_para 6 Fim_para
11 Se (a) então Fim
12 Escreva "G é conexo"
13 Senão
14 Escreva "G não é conexo"
15 Fim

Exercício no 11
1. É possível mostrar que o primeiro grafo não é planar fazendo a fusão de arestas para todos os vértices
de grau 2. O grafo resultante é o K5.

2. A contração de arestas entre vértices adjacentes de grau 3 resultará em um grafo com 6 vértices, 4 de grau
4 e dois de grau 5. Os quaro vértices azuis da figura são transformados em dois vértices verdes. A próxima
contração entre dois vértices adjacentes vai resultar em um K5. A contração é entre um vértice azul e um
verde, formando um vértice avermelhado. Portanto, o K5 é minor do segundo grafo, estabelecendo a con-
dição de não planaridade do mesmo.
100 EXERCÍCIOS RESOLVIDOS  Soluções 7

3. A primeira operação é fazer a fusão de arestas para todos os vértices de grau 2, produzindo o grafo G1, de-
pois a contração de arestas entre os dois vértices adjacentes de grau 3, produzindo o grafo G2. Finalmente,
uma contração de arestas entre o vértice de grau 3 e um de seus adjacentes de grau 4. O grafo resultante é
um K5.

Exercício no 12

G3 = Soma em anel de G4 = Soma de G5 = Interseção de G6 = Complemento G7 = Diferença de


G1 e G2 G1 e G2 G 1 e G2 de G1 G1 e G5
8 Gráficos

Exercício no 13

Matriz de adjacência do P3 Matriz de incidência do P3 Quadrado da matriz de adjacência do P3

Cubo da matriz de adjacência do P3 Matriz de adjacência do C4 Matriz de incidência do C4

Quadrado da matriz de adjacência do C4 Cubo da matriz de adjacência do C4 Matriz de adjacência do grafo

Quadrado da matriz de adjacência do


Matriz de incidência do grafo Cubo da matriz de adjacência do grafo
grafo

Nas matrizes resultantes das operações de quadrado e cubo das matrizes de adjacência Mr, r = 2 e r = 3,
respectivamente, o elemento (i,j) mostra a quantidade de caminhos direcionados de comprimento r entre
os vértices i e j. Repare que uma aresta não direcionada é interpretada como duas arestas com direções
opostas.

Exercício no 14

Cortes fundamentais Matriz de cortes fundamentais

Exercício no 15
O grafo da figura que se segue representa o grafo de alcançabilidade dos blocos da mina. Para que exista a re-
moção de qualquer bloco da mina, uma vez que não existe acesso fora da própria escavação, deve-se remover
100 EXERCÍCIOS RESOLVIDOS  Soluções 9

o fecho transitivo do vértice associado ao bloco. Na Figura 1 observa-se a sobreposição dos blocos da segunda
camada da mina sobre os blocos da terceira camada. A Figura 1(1) destaca o bloco 3 e os blocos da terceira
camada, que dependem da remoção de 3 para poderem ser explorados os blocos 7,8,10 e 11. Na Figura 1(2)
exibe-se o grafo de alcançabilidade relativo ao bloco 3.

(1) Influência do bloco 3 da segunda camada da mina na esca- (2) Representação da influência do bloco 3
vação dos blocos da camada 3
Figura 1 da solução do exercício: Representação da restrição de remoção de blocos

A Figura 2(1) do exercício exibe o grafo de alcançabilidade associado à mina proposta no exercício e a
Figura 2(2) exibe a solução do problema.

Devem ser removidos os blocos 1, 2,3,4,5,7,8,10,11 e 21.

(1) Grafo de alcançabilidade (2) Solução do problema


Figura 2 da solução do exercício: Grafo de alcançabilidade e solução do problema
10 Gráficos

Exercício no 16

Os dois grafos a seguir exemplificam o caso solicitado.


A sequência de graus é igual nos dois grafos: 112334.
A sequência de ciclos é a mesma em ambos os grafos: 3,4,5; 2,3,5 e 2,3,4,5 no grafo 1; 2,3,4; 2,4,5 e 2,3,4,5 no
grafo 2. São dois ciclos de comprimento 3 e um de comprimento 4.
Observa-se que os grafos não são isomorfos. Facilmente verifica-se que a distância entre os vértices de grau 1
no grafo 1 é 3, enquanto é 2 no grafo 2.

Exercícios Resolvidos do Capítulo 2


Exercício no 1

Problema das formigas dentro do tubo


A Figura 1 do exercício exemplifica o movimento das formigas. Associando-se +1 à posição do corpo da for-
miga, que conduz a um movimento da esquerda para direita, e –1 o que conduz o movimento oposto, a Figura
2 exemplifica uma possível distribuição das quatro formigas dentro do tubo.

(1) Movimento das formigas no tubo (2) Configuração da distribuição inicial no tubo
Figura 1: Modelagem do problema

A Figura 2.29 exemplifica a árvore de decisão do problema proposto, onde cada vértice representa uma pos-
sível distribuição inicial das quatro formigas. Claramente existem configurações simétricas que produzem o
mesmo número de movimentos para as formigas, uma vez que o tubo é simétrico.
O grafo de estados desse problema consiste em expandir a árvore das configurações iniciais movimentando as
formigas segundo as seguintes regras:

1. Quando duas formigas se encontram, seus valores de movimentos são multiplicados por –1.
2. Quando uma formiga com movimento –1 alcança a extremidade A do tubo, ou uma formiga com movi-
mento +1 alcança a extremidade B do tubo, a configuração é reduzida em uma posição.
100 EXERCÍCIOS RESOLVIDOS  Soluções 11

(1) Movimento das formigas no tubo


Figura 2: Modelagem do problema

A Figura 3 expande os vértices, 7, 6 e 5 da árvore de configurações. Ao lado esquerdo dos vértices as figuras
exibem, nas configurações, as formigas que se encontram e as formigas que deixam o tubo. Ao lado direito
exibe-se nova configuração resultante do encontro das formigas ou da saída do tubo.
A configuração que leva ao maior número de retornos é a configuração associada ao vértice 7.

(1) Expansão do vértice 7 (2) Expansão do vértice 6 (3) Expansão do vértice 5


Figura 3: Expansão dos vértices 5, 6 e 7
12 Gráficos

Exercício no 2
Caso das moedas: o primeiro julgamento de Salomão
Seja o grafo de estado em que os vértices estão divididos em vértices que modelam as divisões no conjunto
de moedas. Eles simplesmente separam os conjuntos de moedas de forma que possam ser pesados na ba-
lança de dois pratos. A divisão sempre se processa de forma a produzir pelo menos dois grupos de moedas
de mesmo número. Assim, 12 moedas podem ser divididas em dois grupos de seis, três grupos de quatro,
quatro grupos de três, seis grupos de duas moedas etc. A pesagem apresenta o resultado lógico decorrente
da pesagem, separando os casos de empate nos pratos, ou de pratos mais pesados e pratos mais leves, como
mostra a Figura 1:

Figura 1: Modelo de grafo de estado para o primeiro julgamento de Salomão

Observar que o grafo de estado possui vértices de dois tipos:

1. Resultantes da divisão das moedas para as operações de pesagem.


2. Resultantes da operação de pesagem.

Tanto as operações de divisão quanto de pesagem resultam em classificação das moedas.


A modelagem proposta no grafo da Figura 1 pode ser aplicada ao problema da forma que exemplifica
na Figura 2. As moedas são divididas em três grupos de quatro. Inicialmente são pesados dois grupos de
quatro moedas em cada prato. Caso mostrem equilíbrio provam que a moeda falsa está no grupo ainda
não pesado. Caso um prato se mostre mais leve, indica que nele se encontra a moeda falsa. Em qualquer
hipótese a busca ficará restrita, após a primeira pesagem, a um grupo de 4 moedas. Observe que o grafo eli-
mina a possibilidade de usar grupos de duas moedas, porque exigem três pesagens e não permitem definir
a moeda falsa. No caso do uso de dois grupos de seis moedas a primeira pesagem elimina 6 moedas, mas
ainda restam seis moedas, enquanto no caso da pesagem com grupos de 4 moedas restam 4 moedas após a
primeira pesagem. Como mostra o grafo, são realizadas, no máximo, três pesagens para identificar a moeda
falsa (as arestas vermelhas).
100 EXERCÍCIOS RESOLVIDOS  Soluções 13

Figura 2: Grafo de estado que exibe uma solução do primeiro julgamento de Salomão

Exercício no 3
Caso das moedas: o segundo julgamento de Salomão
Não era sem razão que os falsários de Jerusalém estavam confiantes. As estratégias baseadas em grafos de
estado semelhantes aos da Figura 1 do exercício anterior não são capazes de solucionar esse novo problema.
O caso não pode ser solucionado através da decomposição em etapas que limitem ou identifiquem a moeda
falsa dentro de certos subconjuntos de moedas. Será necessário utilizar uma estratégia em que várias pesagens
produzam, em sua composição lógica, o resultado desejado. A Figura 1 do presente exercício exemplifica um
esquema de divisão das moedas e pesagem que é capaz de solucionar a questão.
14 Gráficos

Figura 1: Grafo de estado que exibe uma solução para o segundo julgamento de Salomão

Um segundo esquema de pesagem que também pode solucionar o caso é pesar as moedas 1 4 6 10 contra as
moedas 5 7 9 12, as moedas 2 5 4 11 contra as 6 8 7 10, e as 3 6 5 12 contra as 4 9 8 11. Nesse caso a possibilidade
de todos os pratos se equilibrarem permite examinar inclusive a hipótese de todas as moedas serem genuínas.

Exercício no 4
Caso das moedas: o terceiro julgamento de Salomão
Considerando a presença de mais de uma moeda falsa o esquema de pesagem do segundo julgamento pode fa-
lhar (visto no exercício 3). Portanto, o caixeiro reclamador não mais poderia usá-lo. Contudo o sábio Salomão
entende a intenção dos falsários e elimina a necessidade de identificar as moedas falsas. A corte somente exige
que se prove a existência de moedas falsas. Consequentemente, o problema pode ser resolvido através de pesa-
gens sucessivas, como no primeiro caso. A Figura 1 do exercício exemplifica apenas um dos vários esquemas
de pesagem que podem ser enumerados por um grafo de estado para o caso. Observe que a fraude só não será
detectada nas duas primeiras pesagens se os grupos de moedas 1-2-3, 4-5-6 e 7-8-9 ou forem formados por
moedas originais, ou cada grupo possuir exatamente uma moeda falsa. No primeiro caso existe pelo menos
uma moeda falsa no grupo de seis moedas (e podem existir até 4 moedas). Portanto, quando o grupo de seis
moedas for comparado com a união de dois grupos de moedas já pesadas, não haverá equilíbrio do prato.
No segundo caso, quando cada grupo possuir uma moeda falsa, ou não existirá moeda falsa no grupo de seis
moedas, ou existirá no máximo uma moeda, uma vez que o número máximo possível dessas moedas é quatro.
Portanto, quando houver a união de qualquer dois grupos formados por três moedas, existirão duas moedas
falsas na união. Como o grupo de seis moedas possuirá no máximo uma moeda falsa, os pratos não entrarão
em equilíbrio. Mais uma vez o caixeiro implicante escapa da escravidão.
100 EXERCÍCIOS RESOLVIDOS  Soluções 15

Figura 1: Esquema de pesagem do exercício 4

Exercício no 5
Problema da divisão do azeite
O grafo de estado parcial do problema é apresentado a seguir. Algumas enumerações são interrompidas por
simplicidade e em virtude de evidentes repetições ou por obrigatoriamente repetirem configurações já realiza-
16 Gráficos

das no próprio caminho de enumeração. Nas proximidades de cada vértice do grafo a ocupação dos recipien-
tes é anotada. A primeira configuração parte de 8 litros no recipiente A e zero nos demais. A configuração de
solução possui 4 litros no recipiente A e 4 litros no recipiente B. Seria aceitável também considerar apenas 4
litros no recipiente A e que o segundo amigo vai levar os outros dois recipientes que somam 4 litros. Em qual-
quer caso a solução com dois recipientes somando 4 litros reduz-se à primeira pelo transbordo do conteúdo
do recipiente C em B. Uma solução no grafo de estado é destacada em azul.

Legenda Operação de transbordo de A em B e de B em C

Possibilidades de composição dos recipientes


100 EXERCÍCIOS RESOLVIDOS  Soluções 17

Exercício no 6
Reunião do clube
São 10 os sócios. E o único modelo de configuração conexa que permite reunir os 10 sócios de forma que
ninguém sente ao lado de um inimigo (independentemente do número de inimigos que existem no clube) é o
grafo de Petersen – que não é hamiltoniano, portanto não pode ser solucionado em uma mesa circular.

(1) Uma solução para 3 sócios (2) Uma solução para 4 sócios (3) Uma solução para 5 sócios
com um único amigo com um único amigo com um único amigo

Exercícios Resolvidos do Capítulo 3


Exercício no 1
Em um grafo G = (N, M), uma forma de considerar simultaneamente o custo de uma ligação (ci) i  M e sua
probabilidade de funcionamento (ri) é através de uma taxa que relacione essas duas variáveis. Como o objetivo
é minimizar os custos e a probabilidade é um número positivo menor ou igual a 1, a razão entre o custo e a
probabilidade de funcionamento de uma ligação pode representar o que se deseja. Por outro lado, a estrutura
que pode representar o mínimo custo de conexão de todos os vértices de uma rede é a árvore geradora de
mínimo custo. Assim, considerar uma árvore geradora mínima cujos valores das arestas sejam calculados pela
fórmula abaixo soluciona o problema proposto.

Função objetivo

Observe que a probabilidade de que a árvore mantenha os vértices conectados é a probabilidade de que todas
as ligações funcionem simultaneamente, o que é obtido pelo produtório das probabilidades de funcionamento
de todas as ligações da árvore T. A figura que se segue esclarece como a função objetivo proposta é calculada
para uma dada árvore T.
18 Gráficos

(1) Custos em G (2) Probabilidades em G (3) A árvore T

Cálculo da função objetivo de T


Figura do exercício proposto no 1

❂ Trabalho de Referência

A árvore do presente exercício é denominada na literatura árvore com taxa de confiabilidade ou árvore de confiabi-
lidade e admite solução polinomial como exibido em Chandrasekaran et al. (1981) e Chandrasekaran & Tamir (1984).

Exercício no 2
No grafo G = (N, M) será necessário atender toda a demanda pij que se processa sob um custo que depende do
caminho em que as ligações serão constituídas. É necessário, portanto, examinar cada possível caminho entre
cada par de vértices do grafo e seu valor de demanda associado. Portanto, a estrutura desejada é uma árvore
de comunicações de custo mínimo, e a função objetivo associada à árvore está resumida a seguir: A figura que
se segue esclarece como a função objetivo proposta é calculada para uma dada árvore T.

(1) Função objetivo (2) Grafo de aplicação


100 EXERCÍCIOS RESOLVIDOS  Soluções 19

(3) Distribuição de custos em G (4) Distribuição de demanda em G

(5) Células atribuídas à árvore (6) Árvore de comunicação Tcom


Figura do exercício proposto no 2

❂ Trabalho de Referência

A árvore do presente exercício é denominada na literatura árvore de comunicação sendo abordada nos trabalhos de
Johnson et al. (1978), Hu (1974), Hamacher & Ruhe (1994). O problema é NP-Difícil (Garey & Johnson, 1979), contudo
pode ser solucionado polinomialmente para o caso de a matriz de distância respeitar a desiqualdade triangular. Nesse
caso a complexidade do algoritmo de solução é O(log2(|N|) (Peleg & Reshef, 1998).

Exercício no 3
As arestas devem ser colocadas em uma heap, de forma que a retirada de uma aresta seja realizável em
O(log m). O algoritmo coloca as arestas em uma heap min – uma heap onde a primeira posição é ocupada
sempre pelo elemento menor da heap. A construção da heap pode ser realizada em O(m). O procedimento
retira a aresta da cabeça da heap e a insere na árvore. Quando se forma um ciclo na subárvore em formação
a aresta não é inserida. Quando se remove a aresta h1 de H, a heap é reorganizada em O(logm) operações.
Como no máximo m arestas serão analisadas, o procedimento executa no máximo O(mlogm) operações. A
complexidade do algoritmo é O(mlogm).
20 Gráficos

A Kruskal sem Ordenação Explícita


Ler G = (N, M) e D = [dij] a matriz de pesos de G
Construir uma Heap Min, H = [hi], i = 1,2,..., m
Repita
Se T  h1 é um grafo acíclico então
T ← T  h1
Fim_Se O(mlogm)
Remove h1 de H
Até | T | = n
Escrever T {arestas da árvore geradora mínima}

Exercício no 4
O algoritmo pode ser formalizado como se segue. O algoritmo inicialmente encontra a árvore geradora
mínima T exclusivamente em função dos custos cij. Aos custos da árvore T é somado o maior gargalo
existente em suas arestas, obtendo-se o valor da árvore MinMax_MinSun associada. A partir dessa ár-
vore T inicial, o algoritmo desenvolve uma estratégia simples para tratar a existência dos gargalos pij.
Em cada iteração o algoritmo calcula uma árvore geradora mínima T exclusivamente em função dos
custos cij e soma a esses custos o maior gargalo presente nas arestas de T. Todavia, a árvore T é calculada
sobre um subgrafo B  G. Em cada iteração as arestas que possuem o mesmo valor do gargalo corrente
são sucessiva e cumulativamente eliminadas de G para formar o subgrafo B. O procedimento conexo(B)
verifica se a eliminação das arestas não tornou o subgrafo desconexo. Caso isso tenha acontecido, o
procedimento termina, retornando-se à árvore de menor custo obtida em todas as iterações que ante-
cederam a desconexão de B. A complexidade do algoritmo é determinada pelo número de vezes que o
procedimento Árvore Geradora(.) é executado. Considerando que existam até |k| diferentes gargalos, e
que esses |k| diferentes gargalos podem ser da O(m), então o procedimento pode ser realizado até |k|
vezes, ou seja, a complexidade do algoritmo é O(|k|mlogm) ou O(m2logm).

A Árvore Geradora MinMax_MinSum


Ler G = (N, M) e D = [d ] a matriz de custos de G e P = [p ] a matriz de pesos.
ij ij
B←G
Árvore Geradora (B, T*, d, p) // d é o custo da árvore e p o gargalo da árvore //
Z*← d + p
A← Gargalo (p) // retorna as arestas de B com peso igual a p //
B← B \ A
Enquanto conexo(B) Faça // conexo(.) determina se B é conexo //
Árvore Geradora (B, T, d, p)
Z←d+p
A← Gargalo (p)
B← B \ A
Se Z* > Z então
T*← T
Z*← Z
Fim_Se O(m2logm)
Fim_Enquanto
Escrever Z* e T*
100 EXERCÍCIOS RESOLVIDOS  Soluções 21

Os primeiros passos do algoritmo estão exemplificados na figura do exercício:

(1) Árvore geradora mínima em G em relação aos custos (2) Pesos e gargalo = 12
Valor = 3+1+1+1+1+2+2+3+1+4+1+2+3+1+2+12 = 40

(3) Matriz B – custos sem arestas de peso ≥12 (4) Matriz B – pesos

(5) Árvore na matriz B – custos (6) Matriz B – pesos e gargalo = 9


40 + 2(4 – 2) – 3(9 – 12) = 39
22 Gráficos

(7) Matriz B – custos sem arestas de peso ≥9 (8) Matriz B – pesos


Eliminação da aresta gargalo do grafo

(9) Árvore na matriz B – custos (10) Matriz B – pesos e gargalo = 5


39 + 3(4 – 1) – 4(9 – 5) = 38

(11) Matriz B – custos sem arestas de peso ≥5 (12) Nova árvore gargalo
4 + 2 + 1 + 4 + 1 + 3 + 2 + 1 + 1 + 1 + 4 + 4 + 4 + 4 + 5 + 4 = 47
100 EXERCÍCIOS RESOLVIDOS  Soluções 23

Exercício no 5
Pode-se fazer esta prova mostrando que um grafo conexo possui, no mínimo, n–1 arestas.
Considere o caso base onde n = 2 e m = 1. Este grafo é conexo, e para m < n–1, o grafo não é conexo. Grafos
com n > 2 são construídos iterativamente, incluindo-se um vértice de cada vez. Como o grafo é conexo, o
novo vértice adicionado ao grafo anterior entra com uma aresta que o liga a algum vértice existente no grafo.
Considere que a propriedade vale para G’ com n’ vértices e m’ arestas, ou seja, G’ é conexo com n’ vértices e
m’ = n’–1 arestas. Deve-se mostrar que a propriedade vale também para G com n = n’ + 1 vértices e m
arestas.
Tomando o grafo conexo G’ com n’ vértices, adicionamos mais um vértice v a G’, produzindo G” com n”
vértices, n” = n’ + 1. Como a entrada de v acarreta a entrada de uma nova aresta, ligando v a outro vértice
do grafo, m’’ = m’ + 1 = n’ –1 + 1. Como n’’ = n’ + 1, então m’’ = n’’ – 1.

Exercício no 6

Sabe-se que (Exercício Resolvido no 5 do Capítulo 1). No total uma árvore possui n – 1 arestas.
Portanto, o somatório dos graus dos vértices de uma árvore é 2(n – 1). Se todos os vértices tivessem grau 2,
o somatório dos graus seria 2n e o grafo seria um ciclo. Em consequência, pelo menos um vértice v possui
grau menor que 2. Se v possui grau 0, o somatório fica correto, entretanto, o grafo não é conexo, logo não é
uma árvore. Sendo o grau de v igual a 1, é necessário que outro vértice u também possua grau 1. Portanto, é
necessário que uma árvore possua, pelo menos, 2 vértices de grau 1, ou seja, 2 folhas.

Exercício no 7
1. O K2,3 possui 5 vértices, portanto, uma árvore geradora deste grafo possui 4 arestas. Como o grafo é bipar-
tido, o problema corresponde a dividir as 4 arestas pelos dois vértices do primeiro conjunto, por exemplo.
Isso corresponde a contar de quantas maneiras podemos somar 2 inteiros maiores que 0 tal que o resulta-
do seja 4. Existem duas maneiras: 1+3 e 2+2. Portanto, existem 2 árvores geradoras não isomorfas do K2,3
(Figuras 1 e 2 do exercício).

(1) (2)
2. Da mesma forma, o K2,99 possui 101 vértices, portanto uma árvore geradora deste grafo possui 100 arestas.
Como o grafo é bipartido, o problema corresponde a dividir as 100 arestas pelos dois vértices do primeiro
conjunto. Existem 50 maneiras de fazer isso, portanto, existem 50 árvores geradoras não isomorfas para o
K2,99.
3. Como o problema corresponde a particionar o número p–1 em inteiros x e y tais que x + y = p – 1, x,
y > 0, então o número de árvores isomorfas de K2,p é
24 Gráficos

Exercício no 8
O laço principal do algoritmo de Kruskal termina quando são obtidas n – 1 arestas. Em cada iteração, o al-
goritmo verifica que a aresta escolhida não forma ciclo com as arestas escolhidas anteriormente. Portanto, no
final, o conjunto T está composto com n – 1 arestas que não formam ciclo. O conjunto de arestas obtidas no
algoritmo induz um subgrafo de G acíclico com n – 1 arestas, o que, pela condição 4 do Teorema 3.1, define
uma árvore geradora de G.

Exercício no 9
Suponha que a aresta e = (x, y) foi removida de T1. Como existe um único caminho entre qualquer par de vér-
tices de T1, T1 – e é um grafo não conexo com duas componentes, tal que x está em uma componente e y está
na outra. Existe um caminho Px,y em T2, e existe aresta a pertencente ao caminho Px,y tal que:
i. a não está em T1.
Se toda aresta a de Px,y está em T1, então existe caminho entre x e y em T1. Absurdo!
ii. a possui um vértice terminal no conjunto de nós da componente de x e outro na componente de y.
Se não existe aresta a com esta característica, então T2 é não conexo. Absurdo!
A inclusão de a em T1 não cria ciclo e cria um caminho entre x e y unindo as duas componentes. Portanto o
grafo induzido pelo conjunto de arestas {M1 \ {e}}  {a} é uma árvore geradora de G.

Exercício no 10
Considere d(u,v) a distância entre u e v em T, w1 o vértice adjacente a v no caminho entre u e v e {w1,...,wk}
a lista de adjacentes a v em T. Se k > 1, então existe caminho entre u e wi, i = 2,...,k, passando por v tal que
d(u,wi) > d(u,v). Portanto, a maior distância entre u e um vértice v de T ocorre apenas quando o caminho entre
u e v não pode ser estendido, ou seja, quando k = 1.

Exercício no 11
Uma vez que todas as arestas já haviam sido consideradas anteriormente pelo algoritmo que construiu a árvo-
re geradora, é preciso considerar apenas a nova aresta (u,v) e as arestas da árvore. O algoritmo verifica o ciclo
elementar que seria formado com a adição da nova aresta à árvore T. A adição criaria um ciclo elementar
contendo (u,v). O ciclo é formado pelo caminho entre u e v em T mais a nova aresta. O algoritmo verifica
se a maior aresta do caminho entre u e v em T tem peso maior que a aresta (u,v). Se isto ocorrer, o algorit-
mo remove a aresta de maior peso no caminho entre u e v e inclui (u,v), formando a nova árvore geradora do
grafo. Caso contrário, a árvore T é também a árvore geradora do novo grafo.
O pseudocódigo do método principal é mostrado no algoritmo Nova AGM, que chama o procedimento de
Nova Aresta( ), passando o vértice u como parâmetro de entrada. A árvore T é representada por uma lista de
adjacências. É utilizada uma pilha P global. Cada elemento de P possui 3 campos: a, b e custo. Os campos
a e b são os vértices terminais da aresta de maior peso encontrada até a iteração corrente no caminho percor-
rido pelo algoritmo entre u e o vértice considerado na iteração corrente. O campo custo é o peso da aresta
designada pelos campos a e b. Ao definir P, a variável topo que aponta para o topo da pilha é iniciada com
0. O algoritmo Nova AGM marca o vértice u e chama Nova Aresta( ). O procedimento Nova Aresta( ) é uma
versão do algoritmo de busca em profundidade. Em cada chamada do procedimento são verificados os vérti-
ces adjacentes a x em T. Cada vez que um vértice w é atingido pela primeira vez na busca, ele é marcado e
é colocado na pilha o registro da maior aresta no caminho entre u e w. Quando o processamento de um
vértice x termina o registro correspondente a ele na pilha, é removido. Quando o vértice v é encontrado, no
100 EXERCÍCIOS RESOLVIDOS  Soluções 25

topo da pilha está o registro da maior aresta (P[topo].a, P[topo].b) no caminho entre u e v em T. Se k, o peso da
aresta (u,v), é menor que P[topo].custo, o peso da aresta (P[topo].a, P[topo].b), então o algoritmo remove
(P[topo].a, P[topo].b) da árvore e inclui (u,v). O algoritmo termina quando v é alcançado na busca.

A Nova AGM
Ler T = (N,M), u, v, k
Definir pilha P
marcar u
Nova Aresta (u)

A Procedimento Nova Aresta (x)


Enquanto existir w  Γ(x) Fazer
Se w não marcado
Se topo = 0 ou P[topo].custo < peso(x, w)
Empilha(peso(x,w), x, w)
Senão Empilha(P[topo].custo, P[topo].a, P[topo].b)
Fim_Se
Se w = v
Se P[topo].custo > k
T ← T\[(P[topo].a, P[topo].b)}  {(u, v)}
Custo(T) ← Custo(T) – P[topo].custo + k
Fim_Se
Termina // Termina o algoritmo
Senão Nova Aresta (w)
Fim_Se
Desempilha(P)
Fim_Se
Fim_Enquanto

Complexidade Nova AGM


Durante a busca, cada aresta é acessada, no máximo, 2 vezes. Como m = n – 1 (o grafo é uma árvore) existem no
máximo 2(n – 1) acessos às arestas durante a busca. As operações na pilha são realizadas em O(1). Quando o vértice
v é alcançado, o topo da pilha guarda a aresta de maior peso no caminho entre u e v na árvore. Como a árvore está
implementada com listas de adjacência, encontrar a aresta (a,b) equivale a encontrar o vértice b na lista de adja-
cência do vértice a e também o vértice a na lista de adjacência do vértice b. Isto é feito em O(n). Esta operação, se
necessária, é feita uma única vez. Portanto, o algoritmo obtém a nova árvore geradora em O(n).

O(n)

Exercício no 12
1. Algoritmo de Kruskal
Inicialmente, o algoritmo de Kruskal ordena as arestas em ordem crescente das distâncias (nenhuma aresta
possui o mesmo comprimento) e inclui, iterativamente, as arestas na árvore respeitando a ordenação. A
26 Gráficos

menor distância entre duas cidades na tabela é 298, correspondendo à aresta (NAT,REC) a qual é incluída
na árvore na primeira iteração do algoritmo (Figura 1 do exercício). As Figuras 2-5 mostram as inclusões
das arestas com pesos 408, 429, 439 e 537. A próxima aresta considerada pelo algoritmo é (SPO,BHO) com
peso 586. Entretanto, os vértices correspondentes às duas cidades pertencem à mesma componente conexa
e a inclusão da aresta criaria um ciclo. Portanto, a aresta é descartada (Figura 6). As arestas (POA,CTB) e
(BRA,BHO) com pesos 711 e 716, respectivamente, são incluídas (figuras 7-8). A Figura 9 mostra que as
próximas duas arestas consideradas pelo algoritmo são, também, descartadas por unirem vértices nas mes-
mas componentes conexas. Na Figura 10 é incluída a aresta (SAL,REC) com peso 897. A Figura 11 ilustra
a consideração das próximas 4 arestas na ordenação, as quais são descartadas por formarem ciclo. A aresta
(CBA,BRA) com peso 1133 é incluída (figura 12). Nas próximas duas iterações o algoritmo testa a inclusão
das arestas (SPO,BRA) e (RJO,BRA), as quais não são incluídas (figura 13). As duas componentes conexas
são unidas na 19a iteração do algoritmo com a inclusão da aresta (SAL,BHO) com peso 1372 (Figura 14).
Agora, apenas o vértice MAN não está na árvore. O algoritmo testará a inserção de 17 arestas antes de in-
cluir, finalmente, a aresta (MAN,CBA) na 18a iteração, completando a árvore. A árvore gerada pelo algorit-
mo possui peso 9297.

Mapa do Brasil com as cidades sede da Copa de 2014

(1) (2) (3)


100 EXERCÍCIOS RESOLVIDOS  Soluções 27

(4) (5) (6)

(7) (8) (9)

(10) (11) (12)


28 Gráficos

(13) (14) (15)

2. Algoritmo de Prim
O algoritmo parte de um vértice inicial, por exemplo, FOR (Figura 16), e inclui a menor aresta incidente ao
vértice, aresta (NAT,FOR) (Figura 17). O algoritmo inclui, iterativamente, um vértice que não está na árvore.
A escolha é feita dentre todos os vértices que não estão na árvore. É escolhido aquele que tem o menor peso
de conexão a um vértice que já está na árvore. As Figuras 18-27 mostram a sequência de inserção de arestas
realizada pelo algoritmo, sendo: (REC,NAT), (SAL,REC), (SAL,BHO), (RJO,BHO), (SPO,RJO), (SPO,CTB),
(POA,CTB), RJO,BHO), (CBA,BRA) e (MAN,CBA).

(16) (17) (18)

(19) (20) (21)


100 EXERCÍCIOS RESOLVIDOS  Soluções 29

(22) (23) (24)

(25) (26) (27)

(28) Solução final


30 Gráficos

Exercício no 13
Prova. Considere os vértices x, y e z em uma árvore e os conjuntos de vértices XY, XZ e YZ nos caminhos
x-y, x-z e y-z, respectivamente, sem considerar os vértices extremos.
Sabe-se que existe um único caminho entre cada par de vértices em uma árvore.

Caso 1: Um dos vértices está no caminho entre os outros dois.


Sem perda de generalidade, considere que y está em x–z.
Como y está em x-z, então XY  XZ e YZ  XZ.
Devemos mostrar que XY  YZ = {}.
A prova é feita por absurdo.
Considere que XY  YZ ≠ {}. Então existe, pelo menos, um vértice v que também é comum aos três caminhos.
Logo, v  XY e v  YZ. Então, partindo de x é possível alcançar v e partindo de v é possível alcançar z, sem
passar por y (y  XY e y  YZ).
Neste caso, existem dois caminhos entre x-z. Absurdo!

Caso 2: Nenhum dos três vértices está em um caminho entre os outros dois.
Então, existe pelo menos um vértice comum a cada par de conjuntos de vértices intermediários XY, XZ e YZ.
Caso contrário, teríamos, por exemplo, XY  YZ = {}, e não existiria caminho entre os vértices em XY e YZ.
Neste caso, o grafo não seria conexo. Absurdo!
Considere que {XY  XZ  YZ} = W, então |W| = 1.

Prova por absurdo


Suponha que |W| > 2. Então existem pelo menos 2 caminhos entre qualquer par de vértices, tal que os vértices
pertençam a conjuntos distintos. Portanto, existiria um ciclo. Absurdo!

Exercício no 14

Sabe-se que Como o grafo é uma árvore, então m = n – 1. Assim, é necessário somar o grau
de todos os vértices e ficar com uma expressão em função de x. A expressão é:

25(1) + 3(2) + 3(4) + 1(5) + 2(6) + 2x = 2(37 – 1)


2x = 72 – 60
Portanto, x = 6.

Exercícios Resolvidos do Capítulo 4


Exercício no 1
Um grafo ponderado em arestas e vértices G = (N,M,W), onde W = {w1, w2,..., wn} representa o peso asso-
ciados aos vértices de G, pode ser transformado em um grafo ponderado em arestas e direcionado G = (V,A)
com a operação exemplificada na figura que segue. Cada vértice k é substituído por um par de vértices k1 e
k2, e um arco ponderado ligando k1-k2 no valor de Wk o peso do vértice k. Qualquer aresta k–j é substituída
por um arco (k2–j1) cujo peso é associado ao respectivo peso da aresta do grafo não direcionado. A figura
do exercício exemplifica em (2) o modelo de substituição do grafo (1), onde os pesos são representados por
valores genéricos Wi, i  N.
100 EXERCÍCIOS RESOLVIDOS  Soluções 31

(1) Grafo (2) Modelo de substituição

Exercício no 2

A rede resposta ao exercício no 2 é apresentada na figura que se segue. Observe que as tarefas que não perten-
cem ao caminho crítico e em seu desenvolvimento não apresentam folga, como a cadeia de eventos 9-10-12,
podem ser realizadas mais tarde, em até 172 dias, ou seja, podem ser realizadas em um período de até 44 dias
além do mínimo previsto sem afetar o prazo final do casamento.
32 Gráficos

Exercício no 3

1. Um grafo é euleriano quando todos os seus vértices possuem grau par. Assim, Kn,m será euleriano quando
n e m forem pares.
2. Como em um grafo bipartido qualquer ciclo alterna vértices nos dois conjuntos de vértices, para que o
ciclo passe por todos os vértices apenas uma vez |n|=|m|.

Exercício no 4

O Caminho de Pascal
A figura do exercício exibe um exemplo de um caminho de Pascal válido sobre a matriz da figura (1). O conteúdo
da célula (1,1) é 1. Assim, o índice da nova posição do caminho é obtido de (1,1), e pode ser (1+1,1) = (2,1)
ou (1, 1+1) = (1,2). A Figura 1 mostra pela seta de movimento que a segunda posição do caminho escolhida é a
célula (2,1). A terceira posição, então, poderá ser (2 + 1,1) = (3,1) ou (2,1 + 1) = (2,2). Como mostrado na Figura
2 a posição escolhida foi (2,2). As Figuras (3) a (6) mostram as decisões que se seguem até que o caminho seja
completado. Observe que a tomada de uma decisão de movimento em determinada célula depende da compo-
sição do conteúdo e subsequentes tomadas de decisão nas células que se seguem para que o movimento possa
terminar exatamente na posição (n,n). Também é fácil observar que o problema pode não possuir qualquer
caminho viável, bastando que o conteúdo das células seja maior que o número de colunas ou linhas menos 1.

(1) Primeiro passo (2) Segundo passo

(3) Terceiro passo (4) Quarto passo

(5) Quinto passo (6) Sexto passo


100 EXERCÍCIOS RESOLVIDOS  Soluções 33

Exercício no 5

O algoritmo de Hierholzer pode ser implementado em O(m) se listas duplamente encadeadas forem utilizadas:
– Na implementação da lista de adjacência de cada vértice.
– Para implementar as cadeias C e H.
– Para implementar uma lista L que contém os vértices de C com grau maior que zero no grafo reduzido.

(1) Grafo G (2) Lista de adjacência de G


Figura 1 do exercício 5: Representação do grafo para o algoritmo de Hierholzer

O grafo é representado por uma lista de adjacência onde o i-ésimo elemento do vetor possui 3 campos:
um ponteiro para a lista de adjacência do vértice i, p1i, um ponteiro para a primeira ocorrência do vértice i na
cadeia C, p2i, e um ponteiro para a ocorrência do vértice i na lista L, p3i. Inicialmente, p2i e p3i estão aterrados
para todo i = 1,...,n. Na lista de cada vértice v, apontada por p1v, a aresta (v,w) é representada por um ele-
mento com 3 campos: a identificação do vértice terminal w e dois ponteiros, um para o elemento anterior e
outro para o elemento seguinte da lista. Se o grafo é não direcionado, cada elemento da lista do vértice v tem
mais um campo: um ponteiro para o elemento correspondente a v na lista de w. Isso faz com que a aresta
seja removida de forma eficiente nas listas de v e w quando (v,w) for inserida na cadeia. A representação é
ilustrada na Figura 1(2) para o grafo da Figura 1(1). A Figura 2(1) mostra uma cadeia inicial C = {1, 2, 3} e a
estrutura de dados resultante antes da entrada na primeira iteração do laço.

(1) Cadeia C (2) Estruturas de dados auxiliares


Figura 2 do exercício 5: Representação após a primeira iteração do algoritmo de Hierholzer
34 Gráficos

O primeiro vértice de L é escolhido para começar a cadeia H em cada iteração do algoritmo. Este vértice é recu-
perado em tempo constante. A união das cadeias no passo 6 do algoritmo também é feita em tempo constante.
Suponha que o vértice x é o primeiro vértice da lista H. Se p2x está aterrado, então H é incluída no final da lista C,
caso contrário, a lista H substitui a primeira ocorrência de x em C. Quando um vértice v tiver seu grau diminuído
para zero, durante a execução do algoritmo, a remoção deste vértice da lista L é feita em tempo constante, bastan-
do acessar a ocorrência de v em L através do ponteiro p3v. Cada aresta é removida uma vez e, em cada iteração do
laço, pelo menos duas arestas são removidas. Portanto, o algoritmo tem complexidade O(m).

Exercício no 6

Se um grafo G não é k-conexo, então existe pelo menos um par de vértices em G tal que o número de caminhos
disjuntos entre eles é, no máximo, k–1. Supondo que G não é 2-conexo, então existe pelo menos um par de
vértices u e v tal que o número de caminhos disjuntos entre eles é, no máximo, 1.
Portanto, não existe em G um ciclo que contenha u e v. Como, por definição, o grafo hamiltoniano contém um
ciclo que passa por todos os vértices, então um grafo que não é 2-conexo não é hamiltoniano.

Exercício no 7

a) Se existe um único caminho entre v e qualquer outro vértice de G, então o subgrafo de caminhos mais
curtos a partir de v é uma árvore. Caso contrário, é possível encontrar mais de um caminho entre v e u, u
N. Supondo que existam 2 caminhos entre v e u no subgrafo, uma das arestas incidentes em u em um dos
caminhos entre v e u pode ser removida do subgrafo sem que a distância entre v e u aumente.
b) Para mostrar que os conceitos não são equivalentes, será mostrado um exemplo de um grafo onde a árvore
geradora mínima e as árvores de caminho mais curto são diferentes. As Figuras 1(1) e 1(2) mostram o gra-
fo exemplo e uma árvore geradora mínima, respectivamente. As Figuras 1(3) e 1(4) mostram duas árvores
de caminho mais curto a partir de dois vértices diferentes do grafo exemplo.

(1) Grafo (2) Árvore geradora mínima

(3) Árvore de caminho mais curto a partir de v1 (4) Árvore de caminho mais curto a partir de v2
Figura 1 do exercício 7: Exemplo
100 EXERCÍCIOS RESOLVIDOS  Soluções 35

Exercício no 8
Dado G = (N,M), para qualquer S  N, não vazio, se G é hamiltoniano, então o grafo induzido pelo conjunto
de vértices N\S não contém mais do que |S| componentes. O grafo célula de abelha de Kirkman mostra um
conjunto S de vértices vermelhos com 6 vértices que, se removidos, resultam em um grafo com 7 componen-
tes, conforme a figura que se segue. Portanto, o grafo não é hamiltoniano.

Exercício no 9
Se existe caminho hamiltoniano em G, então existem vértices s e t tal que é possível construir um caminho
de s até t, passando por todos os demais vértices de G. Como G é acíclico, G possui pelo menos um vértice
com grau interno igual a 0, chamado
A Caminho Hamiltoniano de fonte. Se G possuir mais de uma
fonte, G não possui caminho hamil-
Ler G = (N,M) toniano, pois não é possível construir
c ← conta_fonte(G) um caminho entre as duas fontes.
Se c = 1 então De modo análogo, para que G pos-
s ← fonte(G) sua caminho hamiltoniano, G deve
Caminho ← {s} possuir apenas um vértice com
Fim_se grau externo 0, chamado de sumi-
Enquanto (c = 1) e (s ≠ nulo) Faça douro. O subgrafo induzido de G
c←0 pela remoção da fonte (do sumidou-
Para todo v  Γ+(s) Faça ro) deve possuir a mesma proprie-
grau_int(v) ← grau_int(v) – 1 dade, ou seja, possuir apenas uma
Se grau_int(v) = 0 então
fonte (um sumidouro).
fonte ← v
c←c+1 Baseado no que foi anteriormente
Fim_se exposto, é possível construir um al-
Se c = 1 então goritmo que, iterativamente, retire
s ← fonte a fonte s do grafo corrente e veri-
Caminho ← Caminho  {s} fique se resta apenas um vértice v
Fim_se com grau de entrada 0. Se existir
Fim_para mais de um vértice nesta condição,
Se |Γ+(s)| = 0 então s ← nulo
o algoritmo termina emitindo uma
Fim_enquanto
Se (c > 1) então
mensagem de que o grafo não pos-
Escreva “Não existe caminho hamiltoniano” sui caminho hamiltoniano. Caso
Senão contrário, v é assumido como a fonte
Escreva Caminho na próxima iteração do algoritmo. A
variável c guarda o número de fontes
36 Gráficos

do grafo. O valor de c para o grafo inicial pode ser


Complexidade calculado durante a leitura do grafo, bem como
a definição do único vértice fonte, caso ele exista.
Se o grafo for representado através de uma lista de adja-
Para fins didáticos, estes passos estão descritos
cências, o algoritmo é desenvolvido em O(m).
no algoritmo fora do procedimento de leitura. O
procedimento conta_fonte( ) retorna o número de
O(m) fontes no grafo G. Caso c = 1, o algoritmo iden-
Figura 1 do exercício 7: Complexidade do Algoritmo tifica a fonte s, a qual é incluída como o primeiro
vértice do caminho hamiltoniano, representado
na variável Caminho. O laço principal será repetido enquanto a condição de fonte única for verdadeira e ainda
existir vértice para ser incluído no caminho. A remoção da fonte acarreta a diminuição do grau interno de
todo os seus sucessores de uma unidade. Caso o grau interno de algum dos sucessores se torne 0, este vértice
é assumido como a fonte da próxima iteração. Se isto ocorrer para mais de um vértice, então o algoritmo ter-
mina. A nova fonte é incluída na solução.

Exercício no 10
1. Em um grafo de linha L(G) de um grafo G, cada aresta de G corresponde a um vértice de L(G), sendo
que dois vértices são adjacentes em L(G) se as arestas correspondentes forem adjacentes em G. Em um
grafo euleriano é possível construir uma cadeia fechada que passe por todas as arestas. Como as relações
de adjacência entre as arestas se preservam em L(G), então, seguindo a mesma sequência de arestas
produzidas pela cadeia euleriana em G nos vértices de L(G), é produzido um ciclo que passa por todos os
vértices uma única vez, sendo portanto um ciclo hamiltoniano.
2. A figura mostra um exemplo de um grafo de linha L(G) hamiltoniano, sendo o grafo G não euleriano.

(1) G (2) L(G)


Figura 1 do exercício 10: Exemplo

Exercício no 11
O quadro que se segue representa as restrições do exercício em um formato de diagrama de barras. A criação
de um grafo de intervalos foi abordada a partir dessa representação em capítulos anteriores. Considerando o
grafo direcionado G = (E,V) onde um arco (i, j) representa o ocorrência de uma ads na solução. O vértice i do
arco (i,j) representa o evento de implantação da ads na página web e o vértice j o evento de sua remoção. No
caso, não existirão arcos ligando eventos que possuem uma região em comum no diagrama de barras. Assim,
o vértice ai representa o início da propaganda i, caso essa ads seja implementada.
100 EXERCÍCIOS RESOLVIDOS  Soluções 37

Duração da Propaganda
Ads
1 2 3 4 5 6 7 8 9 10 11 12 13 14

a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
a13
a14

Considerando ainda o peso do arco (i,j) representando o valor recebido pela propaganda i qualquer que
seja o vértice j. Finalmente criando-se um vértice artificial início, que será ligado aos vértices eventos que não
possuem antecedentes por arcos (arcos (início, j) em magenta) não ponderados, e um vértice artificial fim
(arcos (i,fim) ), que será ligado por arcos ponderados no valor das propagandas dos eventos que não possuem
sucessores no grafo, é possível formular o problema através do grafo de intervalos que se segue. Observe que
o grafo proposto é um grafo em camadas, onde as camadas são representadas pelo dia de início das propagan-
das. A solução do problema é o caminho mais longo ligando o vértice início ao vértice fim. O grafo apresen-
tado não representa os valores das propagandas sobre os arcos para não congestionar a visualização do grafo.
Na solução do exercício esses valores são representados.
38 Gráficos

Modelo de representação e solução

Exercício no 12
Um grafo G = (V,E) é constituído da seguinte forma. O conjunto de vértices V = {ps,p1,...,pn,pt} mapeia o con-
junto dos n contêineres que serão empilhados, sendo dois vértices artificiais ps e pt. Se um contêiner i
pode ser empilhado sobre um contêiner j, então existe o arco (i,j) E. O vértice artificial ps é ligado com um
arco artificial (s,i) a todos os vértices que possuem somente arcos de saída. O vértice artificial pt é ligado com
um arco artificial (i,t) a todo vértice que possui somente arcos de entrada. O custo de um arco real é igual a–1.
O custo de um arco artificial é igual a zero. A solução do problema consiste em encontrar o caminho mais
curto entre s e t. Observa-se que o grafo formado não possui ciclos negativos.

Grafo do exercício com os arcos artificiais em magenta e sem os custos negativos


100 EXERCÍCIOS RESOLVIDOS  Soluções 39

Grafo com os valores dos parâmetros e caminho mais curto

Exercício no 13
A solução do exercício consiste em determinar o caminho mais curto entre um ponto na entrada da escavação
e um ponto ao final da escavação. Cada mudança de direção de escavação e de lote caracteriza a possibilidade
de mudança nos custos da escavação, de forma que é modelada pela criação de um vértice de transição, como
mostra a Figura 1 do exercício.

Figura 1 do exercício: Modelo de representação para o problema da escavação

O nível do início da escavação não causa impacto nos custos (pelo menos mediante o esquema informado),
assim os diferentes pontos iniciais são ligados a um vértice artificial s. Os diferentes pontos finais são
ligados a um vértice artificial t. Os custos de cada secção de escavação são obtidos pelo produto do custo
unitário da escavação no lote vezes o comprimento do caminho escavado dentro do lote. Dessa forma o
grafo da Figura 2 do exercício é obtido.
40 Gráficos

Figura 2 do exercício: Grafo dos custos de escavação pelas rotas traçadas

Finalmente a Figura 3 do exercício exibe a rota mais econômica.

Figura 3 do exercício: Rota mais econômica

Exercício no 14
Seja o grafo G = (N,M) organizado da seguinte forma:
O conjunto M de arestas tal que uma aresta xij represente o uso da opção de investimento i = 0,1,2,3 no projeto
j = 1,2,3,4. O conjunto de vértices N, organizado em j + 1 camadas com i vértices, onde na camada 0 do
grafo nenhuma decisão é tomada, e na camada j decide-se quanto investir no projeto j.
100 EXERCÍCIOS RESOLVIDOS  Soluções 41

Figura 1: Grafo de modelagem do problema de escolha de investimentos

O caminho mais longo no grafo da Figura 1 do exercício 14 é a solução do problema proposto, como mostra
a Figura 2. Ele indica que a melhor distribuição de investimento é uma unidade no projeto 4, uma unidade
no projeto 3 e uma unidade no projeto 2, obtendo-se um retorno de 9 unidades.

Figura 2: Caminho mais longo e a política de investimento ótimo


42 Gráficos

Exercício no 15
A Corrida do Calanguru
O grafo modelo será representado com quatro tipos de vértices: vértices de
entrada dos túneis, vértices representando os ninhos, vértices representan-
do o ponto de alça no corredor e vértices de passagem dos túneis represen-
tando pontos de mudança de bifurcação nas galerias. Os custos das arestas
do grafo representarão o tempo necessário para percorrer o trecho de túnel
associado. Os pesos sobre os vértices de alça marca o tempo necessário à
inundação da alça. As duas figuras que se seguem exemplificam um grafo
modelo e uma trilha do Calanguru.
Dado que se conheça a velocidade da inundação, é possível determinar o
tempo de enchimento das alças. Assim, a solução do problema é um cami-
nho entre qualquer vértice de entrada até qualquer vértice ninho, atenden-
do as janelas de tempo das alças do caminho.

Grafos dos corredores, ninhos e alças


100 EXERCÍCIOS RESOLVIDOS  Soluções 43

Corrida para a janela de tempo de 5 unidades

Exercício no 16

Grafo hipo-hamiltoniano
44 Gráficos

Exercício no 17

Um grafo grid 5 × 5 não é hamiltoniano, porque possui dimen-


sões ímpares. Observa-se que o grafo é bipartido, como mostra a
figura ao lado. Por ser bipartido, o grafo deve possuir ordem par
para ser hamiltoniano.
Os grafos grides n × n com n par são hamiltonianos pelo mesmo
motivo anteriormente citado.

Exercício no 18

Considerando um caminho maximal P:y → x em G. Então G# = (N#, M) com N# = N/{x} é um grafo conexo,
pois de outra forma haveria um vértice z tal que todos os caminhos de y para z visitassem x, o que exigiria
que P não fosse maximal. Em outras palavras, sempre é possível encontrar um vértice em G que seja o vértice
terminal de um caminho em G e que pode ser removido sem desconectar qualquer vértice desse caminho.

Exercício no 19

A Figura 1 exibe um caminho hamiltoniano para o grafo 1 do exercício, provando que o grafo é hamiltoniano.
No caso do grafo 2 do exercício, a Figura 2 exibe as arestas que devem fazer parte de qualquer ciclo que con-
tenha os vértices de grau 2 do grafo. Observe que essas arestas obrigatórias formam um ciclo que não passa
por todos os demais vértices brancos da figura, tornando impossível a formação de um ciclo hamiltoniano no
grafo 2.

(1) Ciclo hamiltoniano no grafo 1 (2) Subciclo obrigatório no grafo 2


100 EXERCÍCIOS RESOLVIDOS  Soluções 45

Exercícios Resolvidos do Capítulo 5

Exercício no 1

(1) Número de independência = 4 (2) Número de absorção = 6

(3) Cardinalidade da menor cob. de arestas = 5 (4) Cardinalidade do menor conjunto dom. = 3
46 Gráficos

Exercício no 2

2-Packing

Exercício no 3

(1) 2-fator (2) Partição em clique

(3) Cobertura de clique


100 EXERCÍCIOS RESOLVIDOS  Soluções 47

Exercício no 4
Primeiro é necessário mostrar que S é um conjunto independente de G se e somente se o conjunto S’ = N\S é
uma cobertura de vértices.
Por definição de conjunto independente, se dois vértices u e v  S, então (u,v)  M. Portanto, cada aresta
(i,j)  M possui, pelo menos, um vértice terminal em S’. Por definição, uma cobertura de vértices C é um
conjunto tal que toda aresta de M tem, pelo menos, um vértice terminal em C, condição cumprida por S’.
Agora suponha que S1 é um conjunto independente máximo, então α0 = |S1|. Tem-se que n –α0 ≥ β, logo
n ≥ α0 + β.
Suponha, também, que S2 é um conjunto de cobertura mínimo, então β = |S2|. Tem-se que n – β ≤ α0, logo
n ≤ α0 + β.
Portanto, n = α0 + β.

Exercício no 5
Suponha que M é um matching máximo em G, então α1 = |M| e 2α1 vértices de G são cobertos por α1 ares-
tas. Suponha que existam k vértices não saturados pelo matching M. Então, os k vértices são cobertos por
q = α – α1 arestas. Cada uma destas arestas possui um vértice terminal saturado em M, caso contrário M não
seria um matching máximo. Portanto, k = q.
Sabemos, que 2α1 + k = n. Substituindo k por q, tem-se que

2α1 + q = n
2α0 + α – α1 = n
α1 + α = n

Exercício no 6
Problemas reais complexos provavelmente são solucionados de forma aproximativa, mesmo mediante o
uso de modelos matemáticos exatos. Nesse sentido, a solução que se segue é apenas uma solução simplifi -
cada para o problema. A primeira simplificação necessária diz respeito ao espaço de alocação dos sensores
da segunda malha. O problema de localização dos sensores é um problema basicamente de localização
sobre R2. A presente solução vai reduzir essa localização a um conjunto de pontos discretos. Visando ma-
ximizar a área em comum dos sensores da segunda malha com os sensores da primeira e permitir que o
maior número possível de sensores da primeira malha seja coberto pelos sensores da segunda malha, serão
considerados somente como pontos viáveis de localização da segunda malha os pontos de interseção dos
raios de alcance dos sensores da primeira malha. Esses pontos são representados na Figura 1 do exercício
pelos vértices em amarelo. Os vértices em vermelho da figura representam as coordenadas dos sensores da
primeira malha. Na Figura 2 está representado o grafo de vizinhança entre os pontos viáveis de localização
da segunda malha e os sensores da primeira. Trata-se de um grafo bipartido. Nesse grafo uma aresta repre-
senta o fato de o ponto ocupado pelo sensor da segunda malha ser capaz de monitorar um dado sensor da
primeira malha. O grafo considera implicitamente que a recíproca será verdadeira, ou seja, um sensor loca-
lizado nesse ponto poderá monitorar a localização do sensor da primeira malha e associado pela aresta. No
grafo da Figura 2 a solução do problema será um conjunto de vértices amarelos que possui o maior número
possível de vizinhos no conjunto de vértices vermelhos. Caso nenhuma restrição exista limitando o número
de sensores da segunda malha, a solução do problema é um conjunto de vértices dominante.
48 Gráficos

Figura 1: Localização e alcance dos sensores da primeira malha

Figura 2: Grafo de vizinhança entre as malhas de sensoriamento

A Figura 3 apresenta, em azul, a localização que maximiza a área em comum entre 10 sensores da segunda
malha com os sensores da primeira malha.
100 EXERCÍCIOS RESOLVIDOS  Soluções 49

Figura 3: Solução para a segunda malha com 10 vértices

A Figura 4 exibe o resultado esperado com a localização dos 10 sensores sobre a primeira malha.
50 Gráficos

Exercício no 7
A figura do exercício mostra o grafo de incompatibilidade entre os animais e dois conjuntos independentes
disjuntos de cardinalidade máxima (azul e terra). Noé deve alojar cada conjunto em um dos dois espaços
disponíveis na Arca. Observa-se que existem três diferentes conjuntos independentes de vértices de cardi-
nalidade 3 (Ganso, Anu, Tigre – Águia, Rã, Hiena – Mico, Rã, Hiena) que podem se somar ao conjunto
independente de maior cardinalidade já identificado.

(1) Grafo de incompatibilidade (2) Dois conjuntos independentes

Exercício no 8
As informações das investigações estão resumidas no grafo que se segue. Uma aresta do grafo significa que
provavelmente o suspeito não está associado positivamente ao requisito de culpabilidade levantado pelas pe-
rícias e laboratório. Essa característica pode ser identificada através de um conjunto independente no grafo de
requisitos de culpabilidade, onde os vértices dos suspeitos são considerados como pertencendo a uma clique.
No caso, a principal suspeita é Ana, uma vez que é a única que possui um conjunto independente que conta
com vértices em todos os grupos de requisitos de culpabilidade. Se mais de um suspeito apresentasse um
conjunto independente associado equivalente, mesmo assim o modelo poderia guiar a investigação na direção
dos suspeitos mais prováveis.

(1) Grafo de não associação aos requisitos de culpabilidade (2) Conjunto independente associado a Ana
100 EXERCÍCIOS RESOLVIDOS  Soluções 51

Exercício no 9
Pelo Teorema de Dirac (Teorema 4.2), o grafo G é hamiltoniano. Portanto, existe um ciclo hamiltoniano par C
em G, C = x1 – x2–...–xq – x1, q = 2k. As arestas (x2j – 1 – x2j) de C, 1 ≤ j ≤ k formam um matching perfeito em G.

Exercício no 10
Este problema é conhecido como o problema do casamento estável. Ele pode ser modelado através de um
grafo bipartido direcionado completo G = (V1,V2,E,W), onde V1 representa o conjunto de n homens, V2 o de
n mulheres e W as preferências atribuídas aos arcos de E. O problema consiste em encontrar um matching M
no grafo subjacente de G tal que não exista h  V1 e m  V2, (h–m)  M, whm’ < whm e wmh’ < wmh, (h–m’)  M,
(m–h’)  M.
Um algoritmo com complexidade em tempo O(n2) foi apresentado por Gale e Shapley (1962), o qual é descrito
a seguir. O algoritmo faz uso das seguintes listas: MV1, MV2, Livre e C. O i-ésimo elemento da lista MV1
guarda o índice j da mulher comprometida com o homem i. De modo similar, o i-ésimo elemento da lista
MV2 guarda o índice j do homem comprometido com a mulher i. A lista Livre guarda os índices dos homens
livres e é controlada pelo contador c_livre. As preferências são expressas nas matrizes LV para os homens e LU
para mulheres. No caso dos homens, o elemento LV[i][j] guarda a mulher na j-ésima posição de preferência
do i-ésimo homem. No caso das mulheres, o elemento LU[i][j] guarda a ordem de preferência do homem j na
lista da mulher i. A lista C guarda para cada homem o índice da primeira mulher na sua lista de preferências
à qual o homem ainda não fez uma proposta.

A Casamento Estável
Dados n, matrizes LV e LU

Para i ← 1 até n
MV1[i] ← 0; MV2[i] ← 0; // inicialização das listas de casamento
Livre[i] ← i // lista de homens livres controlada pelo contador c_livre
C[i] ← 1
Fim_para
c_livre ← n
Enquanto c_livre > 0 Faça
Homem ← Livre[1] // a primeira mulher na lista de homem que não recebeu proposta
Mulher ← LV[Homem][C[Homem]]
Se MV2[Mulher] = 0
MV2[Mulher] ← Homem; MV1[Homem] ← Mulher
C[Homem] ← C[Homem] + 1
Livre[1] ← Livre[c_livre]
c_livre ← c_livre – 1
Senão
Aux ← MV2[Mulher]
Se LU[Mulher][Homem] > LU[Mulher][Aux]
MV2[Mulher] ← Homem; MV1[Homem] ← Mulher
C[Homem] ← C[Homem] + 1
Livre[1] ← Aux
Fim_se
Fim_se
Fim_enquanto
52 Gráficos

A execução do algoritmo casamento estável é exemplificada a seguir para um caso onde n = 4, com as listas de
preferências expressas nas matrizes LV e LU para homens e mulheres, respectivamente. Tomando a linha 1 da
matriz LV verifica-se que a mulher preferida pelo homem 1 é a 1 seguida da 2, da 3 e, em último lugar, da mulher
4. Tomando, agora, a linha 1 da matriz LU verifica-se que a mulher 1 prefere o homem 4 em primeiro lugar,
depois o 2, o 3 e, em último lugar, o homem 1.

O algoritmo inicia as listas de casamentos, MV1 = {0,0,0,0} e MV2 = {0,0,0,0}, que estão inicialmente vazias, e
a lista de homens disponíveis Livre = {1,2,3,4} com c_livre = 4. As variáveis de controle das listas de preferên-
cias dos homens está no vetor C = {1,1,1,1}, uma vez que nenhuma proposta foi feita.

1a iteração:

A variável Homem recebe valor 1, indicando que o primeiro homem fará uma proposta à primeira mulher
na sua lista de preferências à qual ele ainda não fez proposta. A variável Mulher recebe, portanto, o valor em
LV[1][1] = 1. A variável MV2[1] = 0 indicando que a mulher 1 ainda não tem um compromisso. Logo, o
algoritmo modifica as listas de casamento para MV1 = {1,0,0,0} e MV2 = {1,0,0,0}, indicando que existe
um compromisso entre o homem 1 e a mulher 1. O contador do homem 1 passa para 2, modificando a lista C
para {2,1,1,1}. O homem 1 é removido da lista Livre. Isto é feito em O(1) simplesmente copiando o último
elemento da lista para a posição 1 e decrescendo c_livre de 1 unidade. Depois disso a lista Livre torna-se
Livre = {4,2,3} e c_livre = 3. Como ainda existem homens na lista Livre, então o algoritmo continua.

2a iteração:

O homem 4 é agora considerado. A mulher na posição C[4] = 1 é a mulher 3, que também não está com-
prometida. As listas e variáveis de controle são modificadas como a seguir:
– MV1 = {1,0,0,3} e MV2 = {1,0,4,0}
– C = {2,1,1,2}
– Livre = {3,2} e c_livre = 2

3a iteração:

O próximo homem a ser considerado pelo algoritmo é o homem 3. A primeira preferência deste homem
é pela mulher 1, a qual já está comprometida. Portanto, o algoritmo entra no senão e a variável Aux recebe o
índice do homem que está atualmente comprometido com a mulher 1, sendo ele o homem 1 conforme a va-
riável MV2[Mulher]. O algoritmo testa, então, a preferência da mulher 1 entre os homens: 3 e 1. As variáveis
LU[1][3] = 3 e LU[1][1] = 4 mostram que o homem 3 é preferível em relação ao homem 1 para a mulher 1.
Assim o compromisso entre o homem 1 e a mulher 1 é desfeito e um novo compromisso entre o homem
3 e a mulher 1 é assumido. As listas e variáveis são mostradas abaixo:
– MV1 = {0,0,1,3} e MV2 = {3,0,4,0}
– C = {2,1,2,2}
– Livre = {1,2} e c_livre = 2
100 EXERCÍCIOS RESOLVIDOS  Soluções 53

4a iteração:

O algoritmo prossegue considerando o homem 1 novamente. Sua segunda preferência é pela mulher
2, que não está comprometida. Assim as listas são alteradas pelo algoritmo para:
– MV1 = {2,0,1,3} e MV2 = {3,1,4,0}
– C = {3,1,2,2}
– Livre = {2} e c_livre = 1

5a iteração:

O algoritmo prossegue considerando o homem 2, o qual tem preferência pela mulher 4, que está livre. Nesta
iteração as listas se tornam:
– MV1 = {2,4,1,3} e MV2 = {3,1,4,2}
– C = {3,2,2,2}
– Livre = { } e c_livre = 0

Como c_livre = 0, o algoritmo é encerrado produzindo o matching indicado pelos pares (homem, mulher) a
seguir: (1-2), (2-4), (3-1) e (4-3).

Exercício no 11
Suponha que o número de matchings perfeitos em um grafo K2n é dado pela função f(n). Se n = 1, então
f(1) = 1. Suponha que n = 2, então o grafo é o K4. O grau de cada vértice v do K4 é 3. Cada aresta incidente em
v entrará em 1 matching perfeito com os outros 2n – 2 vértices restantes do grafo. Portanto, f(2) = 3. De uma
forma geral, o número de matchings perfeitos em um grafo K2n é 2n – 1 (grau de cada vértice) vezes o número
de matchings perfeitos no grafo restante, o qual é completo e possui 2n – 2 vértices. Portanto, de modo geral,
f(n) = (2n – 1)f(n–1).
Temos, então, que f(n) = 1 3 5 7 ... (2n–1).

Assim,

Portanto, em um grafo K2n existem matchings perfeitos.

Exercício no 12
O grafo procurado denomina-se grafo de Turán. Para que um grafo de Turán não contenha uma clique
de tamanho r, o conjunto de vértices do grafo deve ser dividido em r + 1 conjuntos de vértices disjuntos de
tamanho tão próximos quanto for possível. O grafo deverá possuir (n mod r) subconjuntos de tamanho n/
r e r-(n mod r) de tamanho n/r. Trata-se de um grafo completo r-partido. Quando n é divisível por r ele é
regular. O primeiro grafo de Turán deve possuir seis vértices e não pode possuir uma K3. Nesse caso os vértices
são divididos em dois grupos (6 / 3) de vértices com três vértices em cada grupo – um grafo regular. A Figura
1(1) exemplifica o grafo procurado. Para o caso da clique K4 são três subconjuntos de vértices com dois vérti-
ces em cada subconjunto, como exemplifica a Figura 1(2).
54 Gráficos

(1) Turán (6,2) – 9 arestas (2) Turán (6,3) – 12 arestas

Exercício no 13

Exercício no 14
100 EXERCÍCIOS RESOLVIDOS  Soluções 55

Exercício no 15

Exercícios Resolvidos do Capítulo 6


Exercício no 1
Considerando um grafo G qualquer e a operação de produto
cartesiano com K2 (G…K2), o resultado desse produto cria um
grafo com dois subgrafos exatamente iguais a G (denomina-
dos aqui de G e GC) e ligados vértice a vértice, como mostra a
figura do exercício.
Observa-se que o grafo G, sendo não direcionado e conexo,
possui pelo menos um caminho entre qualquer par de vér-
tices. Como o produto cartesiano cria uma aresta entre cada
vértice de G e sua cópia associada em GC, no grafo formado to-
A ligação entre os dois caminhos maximais em G e
dos os vértices de G possuem uma aresta ligando ao seu vérti- GC é exibida pelas setas verdes.
ce imagem em GC. Portanto, qualquer caminho maximal em G
Figura 1 da solução do exercício:
pode ser ligado em suas duas extremidades ao seu respectivo Representação da vizinhança de blocos
caminho maximal em GC, formando um ciclo hamiltoniano.

Exercício no 2
56 Gráficos

Exercício no 3
Considerando cada torno mecânico modelado por um vértice fonte. Considerando também cada tarefa mo-
delada por um vértice sumidouro. Representando a possibilidade de o torno i realizar a tarefa j através
de um arco (i,j) – que ligará um vértice fonte a um vértice sumidouro. Em cada vértice fonte (torno) a rede
determina, obrigatoriamente, a entrada e saída de um fluxo de duas unidades, enquanto para os vértices su-
midouros (tarefas) obriga um fluxo de uma unidade. Cada possível alocação entre um torno e uma tarefa é
modelada por um arco ligando o vértice do torno com capacidade máxima de fluxo igual a uma unidade.

Figura 1 da solução: Modelo da rede

Figura 2 da solução: Solução de fluxo


100 EXERCÍCIOS RESOLVIDOS  Soluções 57

Exercício no 4
Considerando uma rede R = {V,E,F,U}. Sendo o conjunto V da rede composto por um vértice s fonte, um
vértice t, sumidouro, um conjunto de vértices D associados aos elementos do vetor de demanda e um conjunto
de vértices A, associado às estações de retransmissão. Sendo o conjunto E compostos por três tipos de arcos:
arcos ligando o vértice s aos vértices de demanda, com capacidade de fluxo igual a uma unidade, e limite in-
ferior de fluxo também igual a uma unidade. Arcos ligando os vértices de demanda às estações de repetição
dentro do alcance de comunicação e possuindo capacidade de fluxo igual a 1. Arcos ligando os vértices de
demanda ao vértice t com capacidade máxima de fluxo igual a três unidades (o valor de k). Na rede da figura
do exercício o fluxo máximo representa uma solução do problema.

Figura solução do exercício no 4

Exercício no 5
Por facilidade a transformação será exemplificada sobre o vértice 2 da rede.

(1) Rede tradicional (2) Rede com capacidade do vértice modelada


58 Gráficos

Em consequência da introdução da restrição de capacidade nos vértices, o fluxo máximo na rede é alterados,
como mostram as figuras do problema.

Solução do fluxo do exercício 5 (fluxo = 26)

Fluxo do exercício 5 sem as restrições de fluxo nos vértices (fluxo = 36)

Exercício no 6
Os blocos estruturais do asteroide devem ser unidos de forma a constituírem um único corpo, todavia isso
não está garantido no mapa de localização geológica. Para que os blocos constituam uma unidade física
devem ser vizinhos e possuir uma superfície em comum. Observe que alguns blocos possuem uma diagonal
em comum, como os blocos 7-8 e 10-11 da Figura 1 da solução do exercício, o que não caracteriza continui-
100 EXERCÍCIOS RESOLVIDOS  Soluções 59

dade estrutural. De forma semelhante ao exercício 15 do Capítulo 1, a Figura 1(1) do exercício mostra como
a disposição geométrica desses blocos pode ser analisada, destacando-se as sobreposições dos blocos que ga-
rantem a continuidade física entre blocos vizinhos. A figura 1(2) exibe como é possível modelar da vizinhança
física entre os blocos através de um grafo. Observe que não existe um sentido para a condição de vizinhança,
uma vez que não existe um sentido hierárquico a ser considerado para configurar a continuidade física, dife-
rentemente do que ocorria no exercício resolvido no 15 do Capítulo 1.

(1) Vizinhança do bloco 3 na camada 3 (2) Representação da vizinhança de blocos


Figura 1 da solução do exercício: Representação da vizinhança de blocos

(1) Grafo de alcançabilidade (2) Rede solução do problema


Figura 2 da solução do exercício: Grafo de alcançabilidade e solução do problema
60 Gráficos

Exercício no 7
A designação de aeronaves aos voos, no caso proposto, provavelmente envolve vários outros fatores não cita-
dos. Todavia, problemas complexos podem ser aproximados rápida e eficientemente através de modelos relati-
vamente simples. Observe que as duas principais vantagens da modelagem proposta é permitir eficientemente
que soluções viáveis sejam alcançadas e que outras restrições do problema sejam eventualmente consideradas
pelo usuário do modelo.
Os vértices da rede de fluxo proposta serão constituídos da seguinte forma: cada cidade será representada
através de dois vértices na rede. Ao primeiro vértice serão ligados os arcos de entrada da cidade. Ao segundo
vértice estarão conectados os arcos de entrada. Os dois vértices serão conectados através de um arco no sen-
tido da entrada para saída com capacidade de fluxo igual a 1 e fluxo também igual a 1. Todas as cidades onde
um voo se inicia são ligadas ao vértice s vértice fonte através de um arco no sentido de s para o vértice
da cidade com capacidade de fluxo igual a 1 unidade. Todas as cidades em que um voo se encerra são
ligadas ao vértice t com um arco no sentido da cidade para t com capacidade de fluxo igual a 1. A Figura 1
da solução do exercício exemplifica a modelagem dos vértices.

Figura 1: Modelagem dos vértices da rede e sua ligação com s e t

A primeira interconexão entre os voos é realizada entre os vértices finais de um voo, com os vértices
iniciais de qualquer voo que tenha por mesma origem a cidade do vértice final do voo. Essa interconexão
permite que um avião seja utilizado em dois voos que se sucedam, o primeiro terminando e segundo inician-
do na mesma cidade. O arco de interconexão possui capacidade de fluxo igual a 1 e fluxo igual a 0. A figura
que se segue exemplifica esse tipo de conexão.

Figura 2: Conexão de término e início de rotas

Com base nas interconexões entre rotas é possível organizar uma rede de fluxo que poderá responder sobre a
possibilidade de atender aos voos com 10 aviões, e determinar onde esses aviões deverão estar localizados para
que isso seja possível. A rede exibida na Figura 3 permite redesenhar o arranjo entre rotas destacando o fluxo
e solucionando o pedido, conforme a Figura 4.
100 EXERCÍCIOS RESOLVIDOS  Soluções 61

Figura 3: Rede de conexão entre rotas

Figura 4: Voos encadeados


62 Gráficos

Para atender a demanda dos voos são necessários 4 aviões no Rio de Janeiro, 3 em São Paulo e 1 em Fortaleza.
A segunda interconexão é realizada entre quaisquer vértices da rede que se antecedam no tempo. Essa intercone-
xão permite que um dado avião, que iniciou sua rota cumprindo a sequência de visitas previstas para um dado
voo, assuma a sequência de visitas de outro voo. No caso, a única exigência é que os dois aviões visitem a mesma
cidade e que o voo de continuidade ocorra em tempo posterior a chegada do avião que o vai assumir.

Conexão entre cidades da rota

Exercício no 8
O problema pode ser modelado da seguinte forma: todo falecido é um vértice fonte ou de passagem. Todo
vivo é um vértice sumidouro. Os arcos que ligam dos vértices sumidouros fracionam a capacidade de fluxo
nas porcentagens previstas pela lei de herança. A figura do exercício exemplifica o fracionamento do fluxo
de um vértice fonte e de um vértice sumidouro ou de passagem. O vértice 6 falece e o os vértices 3 e 2 já são
falecidos. 2 e 3 são os pais de 6. Como o pai (vértice 3) é falecido, o avô herda em seu lugar (supostamente os
demais ascendentes estão mortos).

Figura 1: Fracionamento da capacidade dos arcos da rede

Com base no modelo anteriormente descrito, a situação do problema admite a seguinte representação:
100 EXERCÍCIOS RESOLVIDOS  Soluções 63

Morte de 19
Observa-se que a linha de herança sempre se esgota quando encontra um parente vivo. Com a morte de 19 o
indivíduo 9 recebe 250 mil reais. A morte de 9, conforme mostra a figura associada, faz X herdar 125 mil
reais e redistribui o recurso para os parentes vivos da filha 2 de X.

Morte de 9

Todavia a morte de X redistribui a herança para todos os parentes vivos, como mostra a figura que se segue.
64 Gráficos

Morte de X

A herança final dos indivíduos 11, 13 e 22 é obtida pela soma das três distribuições anteriormente exibidas e
encontra-se resumida na figura total da herança. 11 recebe 531.000 reais, 13 recebe 31.200 reais e 22 recebe
30.080 reais.

Total da herança

Em Bralásia quanto mais longevos forem os ancestrais, quanto mais disseminadas serão as heranças na família.
100 EXERCÍCIOS RESOLVIDOS  Soluções 65

Exercícios Resolvidos do Capítulo 7


Exercício no 1
Um dos algoritmos mais simples para a solução heurística do problema da coloração é proposta por Welsh
& Powell (1967), constituindo-se, basicamente, em um algoritmo guloso baseado na coloração dos vértices
do grafo em conformidade com o grau desses vértices. O algoritmo é apresentado no quadro Welsh & Po-
well. O funcionamento do algoritmo é exemplificado no mesmo grafo do exemplo do algoritmo DSATUR,
Figura 7.34.

A Welsh & Powell (1967)


1 Ler G = (N, M) A complexidade do algoritmo
de Welsh & Powell é pela veri-
2 C1 = ... = Cn = 
ficação das cores dos vértices
3 Ordenar os vértices {x1, ..., xn} de modo que d(xi) ≥ d(xi + 1) adjacentes ao vértice que deverá
ser ordenado.
4 Para i ← até n faça

5 k ← min { j | Γ (xi)  Cj = }

6 Ck = Ck  { xi }
O(n2)
7 Fim_para

Heurístico

(1) Ordenação inicial e coloração do primeiro vértice (2) Coloração do segundo vértice
Figura 2 da solução do exercício 1: Passos do algoritmo

Observa-se que o algoritmo depende da ordenação inicial, e pode haver mais de uma ordenação válida para a
instância. No caso seria também possível uma ordenação como: x9, x5, x2, x1, x4, x7, x3, x8, x6, x10.
66 Gráficos

(3) Coloração do terceiro vértice (4) Coloração do quarto vértice

(5) Coloração do quinto vértice (6) Coloração do sexto vértice

(7) Coloração do sétimo vértice (8) Coloração final


Figura 3 da solução do exercício 1: Passos do algoritmo
100 EXERCÍCIOS RESOLVIDOS  Soluções 67

Exercício no 2

(1) Primeira coloração (2) Segunda coloração (3) Terceira coloração

Exercício no 3
O grafo de incompatibilidade dos animais da arca está abaixo transcrito e a solução por coloração.

(1) Grafo de incompatibilidade (2) Coloração do grafo de incompatibilidade

Cada cor representa uma baia. Por exemplo, na baia associada à cor 1 são alojados: tatu, sabiá e urso.

Exercício no 4
68 Gráficos

Exercício no 5

Exercício no 6

Exercício no 7
100 EXERCÍCIOS RESOLVIDOS  Soluções 69

Exercício no 8
Seja um grafo G = (N,M) planar, onde N = {x1,x2,...,xn} e M = {(xi,xj), xi,xj  N}. Como se conhece (Capítulo 1
– Lema 1.1) Supondo que exista um vértice no grafo com d(xi) ≥ 5 para todo xi  N, então a
soma dos graus desse grafo será no mínimo 6n, ou seja, 2m ≥ 6n. Como se conhece também (Capítulo1 – Teo-
rema 1.6) em todo grafo planar m ≤ 3n – 6 ou seja 2m ≤ 6n – 12.
Como consequência da aplicação do Lema 1.1 e Teorema 1.6 aos grafos planares, se eles possuírem sempre
todos os vértices com grau maior ou igual a 5, será necessário que 6n ≤ 2m ≤ 6n–12, o que é impossível.

Exercício no 9

O grafo resultante da união dos dois grafos de vizinhanças (am-


bos planares) representa o conjunto de todas as vizinhanças que
deverão ser evitadas na solução. A coloração do grafo é apresen-
tada na figura. São necessárias somente seis cores para atender a
distribuição das instalações.
Para a questão 1, uma solução viável é representada por qualquer
coloração desse grafo com menos de oito cores, uma vez que três
cores de escolas são consideradas iguais e as demais podem ser
diferentes. Adicionalmente, as três escolas com cores iguais não
podem ser vizinhas, ou seja, deverá ser possível atribuir uma
mesma cor a pelo menos três vértices distintos. Isso acontece
para o caso da cor 6, como mostra a coloração ao lado.
Para a questão 2 é necessário que exista um conjunto independente
de cores de cardinalidade três (vértices de cor 6) e, adicionalmente,
mais pelo menos um outro conjunto independente de cardinali-
dade 2. Isso acontece em relação aos vértices de cor 1 ou de cor 2.

Exercício no 10
Considerando que João, Antônio e Pedro, bem como Pameiras, Grêmio e Internacional são representados por
vértices em um grafo. Considerando que existe uma aresta entre uma pessoa e um time quando existe uma
incompatibilidade entre essa pessoa e o respectivo time. Considerando ainda que existem arestas entre os
vértices que representam os três torcedores para modelar o fato de que cada um torce para um time diferente
e não pode ser associado a uma mesma cor. Consequentemente, é possível, a partir do enunciado, traçar o
grafo de relações da Figura 1 que se segue. Nesse grafo uma coloração própria reúne em cada classe de cor os
times e seus torcedores, como mostra a Figura 2. A aresta João x torcedor do grêmio decorre do fato de que
João visita Pedro, que, por sua vez, não recebe visita de torcedor do Grêmio.

(1) Grafo de relações (2) Coloração própria


70 Gráficos

Exercício no 11

Considere a classe de grafos bipartidos G = (N,M), N = A  B, A  B = , A = {a1,...,an}, B = {b1,...,bn},


M = {(ai,bj) | i ≠ j}.
Os graus de todos os vértices são iguais a n–1. Portanto, o algoritmo de Welsh e Powell pode ser aplicado a G
considerando a sequência: a1, b1, a2, b2, a3, b3,..., an, bn. Neste caso, a coloração produzida pelo algoritmo atribui
cor i a cada par de vértices ai, bi, como ilustrado na figura abaixo, produzindo uma coloração de G com n cores.

Portanto, , mostrando que a heurística de Welsh e Powell tem

desempenho arbitrariamente ruim. Esta classe de grafos foi sugerida por Johnson (1973).

Exercício no 12

Exercício no 13
Uma coloração com χ(G) = 4 cores é exibida para o grafo da Figura 1(1) na Figura 1(2). Qualquer que seja
v o vértice removido, o número cromático do grafo resultante após remoção do vértice G é decrescido em 1
unidade, χ(G-v) = 3 cores. Entretanto, se a aresta pontilhada da Figura 2(1) for removida, o número cro-
mático do grafo resultante após a remoção da aresta permanecerá 4, como ilustrado na Figura 2(2).
100 EXERCÍCIOS RESOLVIDOS  Soluções 71

(1) (2)
Figura 1

(1) (2)
Figura 2

Exercício no 14
O grafo abaixo resume os testemunhos dos professores. Um arco de A para B significa que A afirma ter visto
B. Observando-se o grafo, verifica-se que realmente alguém está mentido, uma vez que grafos de intervalo
não possuem ciclos de tamanho 4.
72 Gráficos

É possível observar o problema no esquema que se segue. Estão envolvidos os professores Alberto, Beto, Ida e
Denis. Os intervalos de tempo na biblioteca relativos aos professores Alberto, Beto e Denis não permitem que
a professora Ida possa ter estado na biblioteca.

Não seria possível aos professores Beto e Denis verem Ida e Alberto simultaneamente sem que Ida observas-
se Alberto ou Alberto observasse Ida, uma vez que Beto e Denis não se observaram mutuamente.
Existem quatro ciclos de quatro pessoas:

{A, B, I, D} {A, D, I, E} {A, D, C, E}

Um dos quatro no ciclo {A, B, I, D}, Alberto, Beto, Ida e Denis, está mentindo. Com isso sabe-se que Eduar-
do e Cristina falam a verdade.
Um dos quatro professore no ciclo {A, D, C, E}, Alberto, Denis, Cristina e Eduardo, está mentindo. Com isso
sabe-se que Beto e Ida falam a verdade.
Um dos quatro professores do ciclo {A, D, I, E} estão mentindo. Com isso sabe-se que Beto e Cristina
falam a verdade.
Restam como suspeitos Denis e Alberto.
Se Alberto é o mentiroso e Denis fala a verdade {A, B, I, D}, continua sendo um ciclo inviável, como se
pode observar na figura que se segue.

Grafo com ciclo de comprimento 4

Portanto, o mentiroso é Denis.


100 EXERCÍCIOS RESOLVIDOS  Soluções 73

Exercício no 15

Grafo do 1o conjunto de intervalos Grafo do 2o conjunto de intervalos

Exercícios Resolvidos do Capítulo 8


Exercício no 1
O modelo proposto é uma simplificação do problema e considera o grafo G = (N,M). O conjunto de vértices
N é composto pelos subconjuntos N1  N2 =N, onde o subconjunto N1 representa os pontos heterogêneos da
superfície e o subconjunto N2 representa uma malha de pontos convenientemente distribuída pela superfície
de forma a bem representar como as tensões se distribuem pela superfície. O conjunto M representa o custo
de ligação entre qualquer par de vértices adjacentes do conjunto N, entendido esse custo como a energia ne-
cessária para a criação de uma fratura ligando exclusivamente o par de pontos em questão.

(1) Grafo de representação (2) Ligação parcial entre os pontos heterogêneos


74 Gráficos

(3) Floresta de Steiner para uma dada energia (4) Uma fratura

A solução do problema de fratura para uma dada tensão atuante é formada por uma floresta de árvores
de Steiner, cuja soma dos custos é igual à energia atuante. A energia necessária para o colapso de uma superfí-
cie com duas bordas livres, como a do exemplo proposto, é o custo da árvore de Steiner em grupamento, em
que os vértices de cada borda pertencem a um grupamento.

Exercício no 2

(1) AGM (2) Poda

(3) Árvore de Steiner


100 EXERCÍCIOS RESOLVIDOS  Soluções 75

Exercícios Resolvidos do Capítulo 9


Exercício no 1

1-2-3-4-5-6 – Custo 83 1-3-2-4-5-6 – Custo 85 1-2-4-3-5-6 – Custo 85

1-2-3-5-4-6 – Custo 68 1-2-3-4-6-5 – Custo 62 Resumo das configurações iniciais

Soluções para a vizinhança shift

Resultado da aplicação da heurística – Valor do ciclo no rótulo dos vértices


76 Gráficos

Exercício no 2
100 EXERCÍCIOS RESOLVIDOS  Soluções 77

Referências
Gale, D. & Shapley, L. S. (1962). College Admissions and the Stability of Marriage. American Mathematical Monthly
69:9-14.
Johnson, D. S. (1973). Approximation algorithms for combinatorial problems. In: Proceedings of STOC ‘73 Procee-
dings of the Fifth Annual ACM Symposium on Theory of Computing 38-49.

S-ar putea să vă placă și