Marco Goldbarg and Elizabeth Goldbarg (Auth.) - Grafos (2012)

707 Pages • 189,602 Words • PDF • 144.2 MB
Uploaded at 2021-09-24 15:59

This document was submitted by our user and they confirm that they have the consent to share it. Assuming that you are writer or own the copyright of this document, report to us by using this DMCA report button.


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 [email protected] 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 originados 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 [email protected], 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:

Algoritmos em grafos

Otimização combinatória e problemas do mundo real

Facilitação ao acesso à informação

Focos

Ancoragem para a 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 trabalho. 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 conceitos são fichados. Isso permite ao leitor confrontar imediatamente o conceito abordado com outros assemelhados, esclarecendo eventuais dúvidas. A Figura 2 exemplifica a apresentação dos conceitos correlacionados.

Grafo Completo Um grafo G é dito completo se existe uma aresta associada a cada par de 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

Conceito principal

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.

Grafo Clique – Kn

Kn

Conceitos 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 completos 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 sentido 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 decomposiçã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 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 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

π

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?

4a Questão

π

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?

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 observaçõ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 disponibilizado, 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. Algoritmos 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-Coloraçã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 Supergrafos. 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, componentes 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

CAPÍTULO 1  Conceitos básicos

1

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 conjunto. 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. É també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 representadas 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 ordenados. 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 direcionados, 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ímbolos 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 esquema 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 diferentes 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 distribuiçã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 times 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 sistema 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 dependem 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 linguagem 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 conjunto 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 representaçã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 ligando 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értices (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

(4) Reflexivo

(2) Pseudografo

(5) Buquê

(3) Trivial

(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 hipergrafos possuem várias aplicações práticas, dentre elas a computação gráfica (Bretto, 2004).

Figura 1.9 Exemplo de hipergrafo

8

Grafos

Grafo Rotulado Um grafo G=(N,M) é rotulado se existem atribuições associadas a suas arestas ou vértices (tanto numéricas como alfabéticas).

Figura 1.10 Exemplos de rotulação

Grafo Ponderado Um grafo G=(N,M) é ponderado se existem valores numéricos (pesos) associados às suas arestas ou vértices.

Um grafo pode conter informações associadas tanto aos seus vértices como às suas arestas. Algumas dessas informações podem ser descritas junto aos seus elementos associados. As anotações que permitem distinguir 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 ponderados. 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 ponderado em vértices nos valores numéricos sublinhados. Quando nada for dito, entende-se que o grafo é ponderado somente em arestas. Nesta figura, a rotulação dos vértices é realizada através de letras, e a ponderação dos vértices é representada por um número sublinhado. Em determinadas circunstâncias, o sentido da relação definida pelas arestas do grafo pode ser importante. Por exemplo, em um grafo em que os vértices representam pessoas e uma aresta i-j existe se a pessoa 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 direcionado é 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 distinçã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 Denomina-se ordem de G a cardinalidade de seu conjunto de vértices – |N|.

Tamanho de um Grafo Denomina-se tamanho de G a cardinalidade de seu conjunto de arestas – |M|.

A Figura 1.13 exemplifica o cálculo da ordem e do tamanho de um grafo G. O grafo (1) é de ordem 5 e de tamanho 8; o grafo (2) é de ordem 4 e tamanho 4. 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

Grafos Finitos e Infinitos Um grafo é dito finito quando possui um número finito de vértice e de arestas. É dito infinito em caso contrário.

Figura 1.14 Exemplos de grafos finitos e infinitos

(x)

Adjacência de Vértices

Dois vértices i e j são vizinhos ou adjacentes quando existe uma aresta que liga i a j ou vice-versa.

N(x) O conjunto de vértices vizinhos do vértice i será denominado Γ(i ). Alguns autores também utilizam a notação N(i ) para representar a vizinhança do vértice i.

–(x) Sucessores e Antecessores

A Figura 1.14 exemplifica o conceito de grafos finitos e infinitos. O grafo (1) é infinito, e o elemento ilimitado desse grafo é representado no trecho pontilhado. Todos os grafos anteriormente abordados no presente texto são grafos finitos. Um grafo é uma estrutura adequada para a representação topológica de formas de conexão. Existem duas formas específicas de entender vizinhança entre vértices e arestas, uma para o caso dos grafos direcionados e outra para os não direcionados.

+(x)

A noção de vizinhança de vértices é associada a grafos não orientados

A Figura 1.15(2) exemplifica os vértices adjacentes ao vértice 3 da Figura 1.15(1). A Figura 1.16 exemplifica o conjunto de antecessores do vértice 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 sucessores 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 fecho 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 ˆ –(x), é denominado Fecho Transitivo do Vértice x. O conjunto de vértices alcançáveis a partir de 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 figura 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 independentemente de considerações sobre os vértices 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.

Sucessores e Antecessores Em um grafo G=(N,M), não ponderado, o comprimento de um caminho é o número de arestas desse caminho. Em um grafo G=(N,M), ponderado, o comprimento de um caminho é a soma dos pesos das arestas desse caminho.

Um caminho entre os vértices “a” e “b” será denotado por a-b, por Pa-b ou por Pi. O caminho da Figura 1.22(1) percorre os vértices 1-6-4-3-2-5, passando pelas arestas a1, a2, a3, a4 e a6.

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.

Distância entre Vértices

d(xi,xj)

A distância entre um par de vértices xi e xj, denotada por d(xi,xj), corresponde ao caminho de menor comprimento capaz de ligar xi a xj. No caso de o caminho não existir, então d(xi,xj) = ∞.

A Figura 1.23 exibe o caminho A-H ressaltado pelas linhas mais espessas, que representa a menor distância entre os vértices A e H. O comprimento do menor caminho 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)

Índice ou número de Wiener de um vértice G = (N,M) é a soma das distâncias entre todos os pares de vértices xi, xj  N. Ele é definido como

A Figura 1.20(1) exibe um grafo não ponderado cujo número de Wiener é 14. A soma das distâncias do vértice 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 posteriormente 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 distâ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 Trata-se de uma cadeia em G que, passando por todas as arestas de G, as visita apenas uma vez.

Caminho Hamiltoniano Trata-se de um caminho em G que, passando por todos os vértices de G, os visita apenas uma vez.

Em Teoria dos Grafos existem muitos problemas associados à solução de caminhos. As cadeias eulerianas e os caminhos hamiltonianos estão entre os mais tradicionais desses problemas.

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) mostram 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 sequência das arestas no caminho. Figura 1.26 Caminhos eulerianos

CAPÍTULO 1  Conceitos básicos

Ciclo Em um grafo G, um ciclo é um caminho fechado.

Grafo Ciclo Um grafo ciclo (Cn) é um grafo com n vértices formado por apenas um ciclo passando por todos os vértices.

17

Quando o grafo G é orientado, alguns autores denominam circuito a sequência de arcos distintos que repete somente o primeiro e último nó 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 relativos à 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 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, eulerianos ou hamiltonianos.

Cadeia Euleriana Fechada/Ciclo Euleriano É uma cadeia euleriana que inicia e termina em um mesmo vértice.

Ciclo Hamiltoniano Trata-se de um caminho hamiltoniano fechado.

Em grafos orientados, os percursos fechados hamiltonianos são denominados circuitos hamiltonianos e os percursos eulerianos são ditos cadeias fechadas / direcionadas 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, seguindo 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.35 Exemplos de cálculo de cintura e circunferência

Figura 1.34 Grafo exemplo

CAPÍTULO 1  Conceitos básicos

Excentricidade – Ex(v)

21

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 excentricidade 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)

O grau d(xi ) (ou valência) de um vértice xi em um grafo não direcionado é igual ao número de arestas incidentes no vértice.

(G)

Valor do grau máximo no grafo G.

(G)

Valor do grau mínimo no grafo G.

Quando todos os vértices de um grafo possuem grau finito, o grafo é dito localmente finito.

A Figura 1.38(1) exemplifica o cálculo dos graus de um vértice 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 A relação entre o número de arestas e vértices, muitas vezes denominada densidade de G, pode ser medida pela razão ε(G), tal que:

Na fórmula ao lado, dM(G) é denominada média dos graus de 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 teorema 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.

Teorema 1.1 Todo grafo G com mais de uma aresta possui um subgrafo H(G), onde:

δ (H) > ε (H) ≥ ε (G)

Lema 1.1 O somatório dos graus dos vértices de um grafo é igual a 2m, onde m representa o número de arestas do grafo.

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

Em um grafo não direcionado, uma sequência de graus é uma sequência monotônica não decrescente dos graus dos vértices. 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 a Figura 1.39. A soma dos elementos de uma sequência de graus de ordem n é: 0,2,4,6,...,n(n-1).

24

Grafos

Grafo Par Um grafo G é dito par se todos os seus vértices possuírem grau par.

Um grafo com todos os vértices 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 orientaçã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.

Folhas da Árvore ou Vértices Terminais Em uma árvore, um vértice com grau 1 é denominado folha ou vértice terminal.

Vértices Extremos Quando o número de vértices terminais de um grafo é 2, é usual denominá-los vértices extremos de G.

O vértice inicial e o vértice final de qualquer caminho são os vértices extremos do caminho.

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.

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

Figura 1.43 Grafo exemplo

26

Grafos

Ns  = N e Ms = M Subgrafo parcial

Ns  N e Ms  M Subgrafo próprio

Ns  = N e Ms  M Subgrafo parcial próprio

Ns = N e Ms  M Subgrafo parcial próprio

Figura 1.44 Resumo das propriedades de pertinência de grafos

Um grafo é subgrafo parcial dele mesmo.

Um critério alternativo para classificar a formação de subgrafos considera a forma de sua indução: induzido por vértices ou induzido por arestas.

Subgrafo Induzido por Arestas Um subgrafo de G pode ser obtido por um subconjunto de arestas e seus respectivos vértices. Nesse caso será denominado induzido por arestas.

Subgrafo Induzido por Vértices Um subgrafo de G pode ser obtido por um subconjunto de vértices e suas respectivas arestas. Nesse caso será denominado induzido por vértices.

Subgrafo Gerador G = (Np ,Ap ) é um subgrafo gerador de G quando Np = N e Ap  A, ou seja, subgrafo gerador é um subgrafo parcial de G.

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 obrigatoriamente 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

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

Subgrafo formado

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 é formado 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 retirada 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 Se G´ é um subgrafo de G, então G também pode ser denominado um supergrafo de G´.

Um supergrafo é qualquer grafo que pode derivar um grafo 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 Um subgrafo G’ de G é dito maximal com respeito à propriedade τ se G’ possui a propriedade τ e não é um subgrafo próprio de nenhum outro subgrafo de G que possua a mesma propriedade τ.

Maximal deve ser distinto de máximo. Maximal é condição 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.

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).

Grafos conexos possuem apenas uma componente conexa.

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 A conectividade ou conexidade em vértices de um grafo conexo de G é o menor número de vértices cuja remoção resulta em um grafo desconexo ou em um grafo trivial.

(G)

Conexidade ou Conectividade em Arestas A conectividade ou conexidade em arestas de um grafo conexo de G é dada pelo menor número de arestas cuja remoção resulta na desconexão de G.

(G)

Figura 1.50 Conexidade em vértices

As Figuras 1.50(2) e (3) exemplificam remoções de vértices que resultam na desconexão do grafo da Figura 1.50(1). Nesse exemplo, tem-se  (G) = 1. A conexidade em vértices é também denominada conexidade do grafo. As Figuras 1.51(2) e (3) exemplificam possibilidades distintas de desconexão do grafo da Figura 1.51(1). Para o exemplo  (G) = 2.

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 um conjunto de desconexão minimal em vértices ou corte em vértiO conjunto minimal de vértices cuja remoção ocasiona a desconexão de G é ces do grafo da Figura 1.53(1). denominado conjunto de desconexão. A Figura 1.53(3) exemplifica o caso em que a remoção de um vérO conjunto minimal de arestas cuja remoção ocasiona a desconexão de G é tice não resulta na desconexão do denominado conjunto aresta desconectante. grafo da Figura 1.53(1). As Figuras 1.54(2) e 1.54(3) Corte 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 forde 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 menor número de arestas, caracUm conjunto de articulação de G é um conjunto de vértices cuja remoção terizando, portanto, duas formas resulta na desconexão de G. diferentes de desconexão do grafo 1.54(1). Ponte O vértice 4 do grafo da FiguUma ponte de G é uma aresta cuja remoção resulta na desconexão de G. ra 1.53(1) é um ponto de articulaçã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.

Conjuntos de Desconexão

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 O conjunto minimal de vértices cuja remoção torna G desconexo e composto por duas componentes conexas.

Cortes em Arestas O conjunto minimal de arestas cuja remoção torna G desconexo e composto por duas componentes conexas.

Matriz de Corte

Caso o conjunto de vértices ou arestas removido de G produza mais de duas componentes conexas será denominado conjunto de desconexão ou conjunto separador, como anteriormente definido.

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) exemplificam os possíveis cortes do grafo da Figura 1.55(1). A Figura 1.57 exibe a matriz de corte associada ao grafo da Figura 1.55(1).

Figura 1.55 Grafo G

CAPÍTULO 1  Conceitos básicos

(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 colunas da matriz.

Figura 1.58 Grafo G

33

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 por uma aresta. Um subgrafo de G é um bloco quando: 1. for não separável – não pode ser tornado desconexo pela eliminação de um vértice; 2. for maximal em G.

Figura 1.60 Blocos de um grafo G

A Figura 1.60(2) exemplifica os blocos do grafo da Figura 1.60(1). Neste exemplo, o bloco B é formado por uma aresta isolada.

CAPÍTULO 1  Conceitos básicos

Rank de um Grafo – r

35

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álculo do rank do grafo.

r=n–c

Figura 1.61 Cálculo do rank de um grafo G

Nulidade de um Grafo – r Nulidade L de um grafo G com m arestas, n vértices e c componentes conexas, é definida como:

L=m−n+c=m−r

L

Número Ciclomático – g Em um grafo G, o número ciclomático ou rank de ciclos, γ, é o menor número de arestas que devem ser removidas de G para que o mesmo não apresente ciclos. O invariante pode ser calculado pela expressão que se segue:

γ = m − n +1

Figura 1.62 Cálculo da nulidade de um grafo G

g

A Figura 1.62 exemplifica o cálculo da nulidade. O número ciclomático de um grafo conexo pode ser interpretado também como o número de arestas que devem ser removidas de um grafo para que o mesmo seja reduzido a uma árvore. A Figura 1.63(2) exemplifica a remoção de três arestas do grafo da Figura 1.63(1). Uma vez que m = 8 e n = 6,  = 3 para o grafo da Figura 1.63(1).

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 propriedades notáveis ou em indicativo para seu emprego em modelagem.

Grafo Bipartido Um grafo G = (N,M) é dito bipartido quando seu conjunto de vértices N pode ser dividido em dois conjuntos N1 e N2 tais que N1  N2 =  e N1  N2 = N e somente existem arestas em G ligando algum vértice de N1 com algum vértice de N2 e vice-versa.

As Figuras 1.64(1)-(3) apresentam exemplos de grafos bipartidos em que os conjuntos de vértices são {1,3,5} e {2,4,6}. A Figura 1.65 apresenta dois 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 segundo determinado critério. Um critério comum empregado em partições é o da não adjacência. Um grafo bipartido é 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 Um grafo G é dito completo se existe uma aresta associada a cada par de 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

Kp,q

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.

Grafo Clique – Kn

Kn

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

A Figura 1.66(1) exemplifica quatro grafos completos. As Figuras 1.66(2) e (3) exemplificam grafos bipartidos completos. A Figura 1.67 exibe uma família de cliques do grafo G. No presente texto o termo clique será considerado feminino, e o grafo clique será denominado “uma clique”. Ressalte-se que o conceito de clique embute a necessidade de um supergrafo.

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, tal que nenhum par de grafos completos 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).

(*) Grafos interseção são definidos no Capítulo 7.

Clique não é conceitualmente um sinônimo para grafo completo, porque se refere a 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|

Chamando de Gn um grafo que contém n vértices, considere inicialmente 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: Prova 1 do teorema 1.3: Por indução matemática.

CAPÍTULO 1  Conceitos básicos

39

„

Número de arestas de

Considerando que o número de arestas de um grafo completo 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:

Prova 2 do teorema 1.3: Pela combinação de vértices.

„

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. 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 somatório dos graus é n(n-1). Como cada aresta incide em dois vértices, o número m das arestas de G é: Prova 3 do teorema 1.3: Por contagem.

„

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 é denominado 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}.

Teorema 1.4 Todo torneio irredutível contém um caminho hamiltoniano.

Grafo Regular Um grafo G é dito regular de grau r ou r regular se cada vértice em G possuir grau r.

Figura 1.68 Torneio

Um grafo regular com grau três é denominado cúbico. Um grafo regular com grau quatro é denominado quartic.

A Figura 1.69 exibe três conhecidos grafos regulares. Os grafos de Petersen e Frucht são 3-regulares 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.

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:

Prova:

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 Um grafo G é dito planar se seus vértices e arestas podem ser imersos em R tal que suas arestas não se cortem/cruzem.

2

Em outras palavras, G é planar se admite uma representação no plano de modo que nela não existe cruzamento de arestas.

A Figura 1.70(3) exibe um grafo explicitamente planar, enquanto a Figura 1.70(4) exibe um grafo implicitamente 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)

Cross

O número de cruzamentos de arestas, Cross(G), é o menor número de cruzamentos de arestas possíveis no traçado de um grafo G.

A Figura 1.71(2) apresenta a configuração de cruzamento ótimo de arestas do grafo da Figura 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 quatro 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

1.5 Operações com Grafos e Estruturas Parciais Isomorfisco Os grafos G1 e G2 são ditos isomorfos se é possível estabelecer uma correspondê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 analiticamente 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.

43

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 conectados 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 feitos 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 homeomorfos ao grafo da Figura 1.76(1) e entre si, ressaltando-se as operações de homeomorfismo que os ligam.

(2) Fusão 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 denominados 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 Um grafo G é planar se e somente se não possui subgrafo homeomorfo ao K5 ou ao K3,3 – Teorema de Kuratowski.

O Teorema de Kuratowski é demonstrado 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 Um grafo G é planar se e somente se não possui K5 ou ao K3,3 como minor.

O Teorema 1.9 é demonstrado em (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 seguinte 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

Sendo G1 = (N1, M1) e G2 = (N2, M2) dois grafos disjuntos em vértices, sua união disjunta (N1  N2 = ) resulta no grafo Gu = (Nu, Mu) com Nu = N1  N2 e Mu = M1  M2 (Harary, 1972).

Soma Disjunta de Grafos

A união de dois grafos disjuntos resulta em um grafo desconexo, portanto não necessita obrigatoriamente de rotulação.

Gs

Sendo G1 = (N1, M1) e G2 = (N2, M2) dois grafos disjuntos em vértices, sua Soma Disjunta resulta no grafo Gs = (Ns, Ms) onde Ns = N1  N2 e Ms = M1  M2, sendo M3 o conjunto de todas as arestas que podem ser traçadas entre os conjuntos de vértices N1 e N2 (Harary, 1972).

A operação de soma disjunta, pelo motivo anterior, não necessita 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 semelhante, 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

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

Soma de Grafos

G+

G+ = (N+, M+) é um grafo soma de G1 = (N1, M1) e G2 = (N2, M2) quando: M+ = (M1  M2) e N+ = (N1  N2).

A soma em anel exige grafos rotulados.

A soma de grafos só pode ser definida como proposta se G 1 e G2 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 semelhante, 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

Gd = (N,M) é um grafo diferença de G1 = (N1, M1) e G2 = (N2, M2) quando N = N1 = N2 e M = M1\M2. (*) Esse grafo exige que M1  M2.

A diferença de grafos somente pode ser realizada se o grafo G1 contiver todas as 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 =  e Mc  M = U, onde U representa o conjunto de arestas de um grafo completo com n vértices.

Grafo Complementar

Gco

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.

Grafo complementar e Grafo complemento se distinguem em função do referencial de sua soma.

50

Grafos

A Figura 1.86(2) exibe o grafo complemento do grafo da Figura 1.86(1). O grafo completo, referencial da formaçã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 operação G/vw consiste em acrescentar a aresta (v,w) a G.

A Figura 1.88(2) exibe uma adição de arestas sobre o grafo da Figura 1.88(1).

A adição de arestas é também denominada de join.

CAPÍTULO 1  Conceitos básicos

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

Operação de União Total de Grafos

+

Sendo G1 = (N1,M1) e G2 = (N2,M2) dois grafos rotulados, sua união total resulta no grafo Gut = (Nut, Mut) tal que:

O símbolo  indica a operação de união de conjuntos múltiplos (multisets ou bags).

+

Nut = N1  N2 e Mut = M1  M2 (Swamy & Thulasiraman, 1981)

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

A união total pode resultar em multigrafos.

51

Grafos

52

Produto Cartesiano de Grafos

X

G A formalização da operação de produto cartesiano pode ser encontrada em Beineke & Wilson (2004).

Dados os grafos G1 = (N1,M1) e G2 = (N2,M2), N1 = {u1,...,ur}, N2 = {v1,...,vs}, o produto cartesiano de G1 e G2, é o grafo X

G = (NX, MX) onde NX = (N1xN2), produto cartesiano dos conjuntos N1 e N2, Nx = {w1,...,wz}, z = r x s, e existe aresta (wk,wc)  Mx, wk = [ui,vj] e wc = [ua,vb], se: 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 grafos 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, computacionalmente 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 Uma matriz A = [aij ] quadrada de ordem n é denominada matriz de adjacência de G = (N,M) quando:

aij =1, se (i,j)M aij = 0 em caso contrário.

A matriz de adjacência ocupa O(n2) posições de memória.

As Figuras 1.91 e 1.92 apresentam exemplos de matrizes de adjacências para grafos não direcionados e direcionados, 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 Figura 1.92 Matriz de adjacência de grafo direcionado

(2) Matriz de adjacência de G

54

Grafos

Matriz de Incidência Uma matriz A = [aki] de dimensão m × n é denominada matriz de incidência de um grafo G = (N,M) quando:

aki = +1, se a aresta uk tem origem no vértice i aki = –1, se i é o vértice destino da aresta uk aki = 0, se a aresta uk não incide no vértice i

A matriz de incidência ocupa O(nm) posições de memória.

As Figuras 1.93 e 1.94 apresentam exemplos de matrizes de incidência para grafos não direcionados e direcionados, 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 Figura 1.94 Matriz de incidência de um grafo direcionado

(2) Matriz de incidência

CAPÍTULO 1  Conceitos básicos

Lista de Adjacência A lista de adjacência é composta por um vetor V de dimensão n. Cada elemento de V contém dois campos: a identificação de um vértice e um ponteiro para uma lista encadeada contendo os vizinhos do vértice correspondente.

55

A lista de adjacência ocupa O(n+m) posições de 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 direcionados, 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 Neste tipo de representação são utilizados dois vetores, V e W, com dimensões n e m, respectivamente. Cada elemento i do vetor V registra o grau do vértice 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 1, os elementos W[V[1]+1] até W[V[1]+V[2]] correspondem aos vizinhos do vértice 2, e daí por diante. Generalizando, dado um vértice j > 1, seus adjacentes encontram-se em W[V[1]+...+V[j-1] +1] a W[V[1]+...+V[j-1]+V[j]].

A representação vetorial ocupa O(m+n) posições de memória.

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 recuperar eficientemente as listas de arcos que chegam ou saem de um vértice é 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.

Representação em Estrela Direta São utilizadas duas listas de tamanho m+1 referentes aos arcos e uma lista 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 o vértice inicial e o vértice final do arco correspondente. A posição m+1 é somente uma posição de referência. Na terceira lista, chamada pont, o elemento i contém o menor índice da lista de arcos que saem do vértice i. Caso não existam arcos saindo do vértice i, o elemento pont[i] corresponde ao índice do primeiro arco que sai do i+1-ésimo vértice. Para efeito de consistência da estrutura,

Figura 1.97 Grafo G

A representação em estrela direta ocupa O(m+n) posições de memória.

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értice. 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

(1) Grafo direcionado G

57

(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 elementos 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 chegam a determinado vértice.

Representação em Estrela Reversa São utilizadas duas listas de tamanho m+1 referentes aos arcos e uma lista 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 o vértice inicial e o vértice final do arco correspondente. A posição m+1 é somente uma posição de referência. Na terceira lista, chamada rpont, o elemento i contém o menor índice da lista de arcos que chegam ao vértice i. Caso não existam arcos chegando ao vértice i, o elemento pont[i] corresponde ao índice do primeiro arco que chega ao i+1-ésimo vértice. Para efeito de consistência da

A representação em estrela reversa ocupa O(m+n) posições de memória.

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 chegam 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értice. 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 o vértice inicial e o vértice final do arco correspondente. A posição m+1 é somente uma posição de referência. Na terceira lista, pont, o elemento i contém o menor índice da lista de arcos que saem do vértice i. Caso não existam arcos saindo do vértice i, o elemento pont[i] corresponde ao índice do primeiro arco que chega ao i+1-ésimo vértice. A quarta lista, Traço, contém os índices dos 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 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-

A representação em estrela direta-reversa ocupa O(m+n) posições de memória.

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 primeiras 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 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

Busca Genérica

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 Figura 1.102 Grafo labirinto

(2) Grafo do 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, percorrendo 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 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

Busca em Profundidade 1

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 procedimento 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), respectivamente, 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 algoritmo. 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 algoritmo 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 mostrado 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 procedimentos 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 Largura. É 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 restantes 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} (1) Inclusão de 1

Q = {2} (2) Aresta (1,2)

Q = {2,3} (3) Aresta (1,3)

Q = {3} (4) Aresta (2,3)

Q = {4} (5) Aresta (3,4)

Q = {4,5} (6) Aresta (3,5)

Q = {4,5,6} (7) Aresta (3,6)

Q = {4,5,6,7} (8) Aresta (3,7)

Q = {5,6,7} (9) Aresta (4,5)

Figura 1.110 Busca em largura em grafo não direcionado

68

Grafos

Busca em Largura

Complexidade

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 comprimentos 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 Grafos nominados em virtude de seu traçado ter a aparência de um objeto do mundo real. O objetivo dos nomes é facilitar a comunicação.

A Figura 1.112 exemplifica os mais conhecidos grafos com apelidos 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 de qualquer vértice de grau dois, ou “topo” da pirâmide, cresce em função de 2h, 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

A Figura 1.113 apresenta três grafos pirâmides.

(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értice de grau 1 chamado ferrão. O ferrão é conectado a um vértice de grau 2, denominado 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.

A Figura 1.114 apresenta um grafo escorpião.

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

Grafo Linha (Line Graph)

L(G)

Um grafo linha é denotado por L(G) e representa a adjacência entre as arestas do grafo G. Dado um grafo G, o grafo linha L(G) é obtido a partir de G da seguinte forma: 1. Cada vértice de L(G) representa uma aresta em G. 2. Dois vértices de L(G) são adjacentes se e somente suas arestas correspondentes compartilham um mesmo vértice em G, ou seja, são adjacentes em G.

(1) Grafo G

(2) Vértices associados às arestas

As Figuras 1.115(2)-(4) apresentam os passos de formação de um grafo linha L(G) a partir do grafo G da Figura 1.115(1). Reconhecer que um suposto grafo L(G) é grafo linha de um algum grafo G é

NP-Completo

(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 emparelhamento 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 induzido 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értices, 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 cruzamento 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

1) 2) 3) 4) 5)

G2

G3 = Soma em anel de G1 e G2. G4 = Grafo soma de G1 e G2. G5 = Grafo Interseção de G1 e G2. G6 = Complemento de G1. 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 incidê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 profundidade 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 grafo 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 necessariamente 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 mesmo 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 direcionado 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âmetro, 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

Grafos do exercício 1.60

G2

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

Conjunto 2

Conjunto 3

Conjunto 4

Conjunto 5 Grafos do exercício 1.66

83

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 adjacê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

(1) Grafo G

(2) Ns=N e AS=A

(3) NS=N e AS  A

(4) NSN e AS  A

85

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 é designada 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 excentricidade 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 produzidas 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 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 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, formule, 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 autocomplementar 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: . 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 destacam-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, localizaçã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 aplicaçõ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 posiçõ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 considerados 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

C

E B

B D

D

G

F

A

A (1) Cenário

(2) Ponto obstáculo

E

C B D

G

F A (3) Visibilidade do ponto A

E

C B D F A

(4) Grafo de visibilidade Figura 2.1 Formação de um grafo de visibilidade

G

93

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 considerando-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).

r

(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

(1) Discos com tamanho variável

95

(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 Figura 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 movimentos 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, permitindo 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 caminhos) 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 / decisõ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 Decisão  Configuração 

Figura 2.5 Evolução de um grafo de estados

3

5

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 pacote 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 BL

A

Margem inicial antes do movimento

Margem inicial após o movimento

O BL

A

L

BLOA

OA

BO A

L B

BL LA

O BO



LA

(1) A solução do problema

Transporte na canoa (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 LO

L

BOL

BO

O BL

BA

BA LA BO

BLOA

BA

B

BLA

BL

BL

O

BOA

BO

BA

A BL

OA

BLA

Retorno sem sentido. 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 L

BO

BA

BOL BL

O

LA

B BLA

BLA B

BA BO

BL

BO



BO

Volta

Volta

L BO

BLOA BL BO

Volta

BL

BOA BA

A

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

O

BOL

B

BO BO



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. Portanto, 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 7 8 4 6 5

1 2 3 8 4 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 Direita

Esquerda

2

3 1 2 3 7 8 4 6 5

1 2 3 7 4 6 8 5

5

1 2 3 8 4 7 6 5

7

6 1 2 3 7 4 6 8 5

1 2 3 7 8 4 6 5 Direita

Esquerda Abaixo

4

Abaixo

8

Abaixo

1 3 7 2 4 6 8 5

Figura 2.10 Grafo para modelar os movimentos do 8-Puzzle

1 2 3 7 4 6 8 5

Abaixo

1 2 3 7 8 6 5 4

9

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 tabuleiro 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á resultar 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 Direita

Esquerda Abaixo

Posição = 6 Movimentos = 2

1 2 3 7 8 4 6 5

1 2 3 7 4 6 8 5

1 2 3 7 8 4 6 5

Posição = 4 Movimentos = 4

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 desenvolvimento 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

1

1 2 3 8 4 7 6 5

1 2 3 7 8 4 6 5

2

1 2 3 7 8 4 6 5

Posição = 6 Movimentos = 2

3

1 2 3 8 4 7 6 5

Posição = 7 Movimentos = 1

4

2 3 1 8 4 7 6 5

Posição = 6 Movimentos = 2

5

101

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 matemá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 resultado 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értice 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 sequê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 oponentes. 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 que minimiza o ganho

Vértice do jogador que maximiza o 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á possí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

Min

4

4

20

-1

13

5

-1

-7

2

-7

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

2

6

Por exemplo, para o vértice circular em que são disponíveis os valores 4, 20 e 13 (o vértice circular mais a esquerda do grafo), o jogador de minimização optará por 4, minimizando o valor possível da jogada.

104

Grafos

Max 4

4

20

-1

13

De modo semelhante, optará por –1 e –7 nas outras duas decisões. Após ser preenchido o nível do jogador de minimização, o jogador de maximização examinará as opções 4, –1 e –7 e escolherá a de valor 4, encerrando-se o cálculo do valor final do jogo.

4

5

-7

-1

2

-7

2

6

(3) Jogador de maximização faz sua escolha 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 preenchidas. 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

Figura 2.15 Configurações associadas aos vértices

x

x

x x

x

x

x

x

x

x x

x

x x

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 permitam 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 primeira 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 o x x o o

x x o x x o o

Min(1,-1)=-1

x x o o x x o o

x x o x x o o o

1

-1

x o x x o x o

Min(0,-1)=-1

x o x o x x o o 0

Min(0,1)=0

x x o x x o o o

x o o x x o x o

x o o x x o x o

-1

0

1

x x o o x x o x o

x o x o x x o x o

x o x o x x o x o

x x o o x x o x o

1

0

0

1

Figura 2.16 Desenvolvimento parcial do jogo da velha

Grafos

106

3-0=3

2-3=-1 * 2-1 =1

2-0 = 2 4-0=4

2-2=0

2-2=0

(1) Critério do maximizador

3-2=1

(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

Min x o 3-2=1

x o

3-3=0

x -1

x

1

x o

3-2=1

x o

3-3=0

x

o x

4-3=1

4-2=2

o

o x

3-4=-1

-2

o x 2-3=-1 Figura 2.18 Vértices avaliados nas duas primeiras jogadas

x

o

3-3=-0

x

o

2-2=-0

x

o x o

2-2=-0

2-4=-2

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. Considerando 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.

3

4

1

2

2

1

4

3

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ência total possui 244 configurações, mas 8 tipos de configurações são indistintas. Qualquer uma das faces restantes pode iniciar o processo e a coluna pode sofrer uma rotação, sendo quatro colunas (4  2). Portanto existem um total 4 24 = 41.472 diferentes configurações a examinar. de: 8 Claramente, as faces dos quatro cubos devem possuir uma composição de cores que permita a solução do problema. 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 2

4

1 2

3 4

3

3 1

4 1

1

1 3

2 2

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 facilitar 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

F3

F2

F1

F1 F3 F2

F2

(1) Faces opostas

(2) Aresta 1

2

4

3

1

A

2

4

B

B 2

(8) Arestas de B

3

1

3 1

1

(7) Cubo B

C

1

1

2

(6) Arestas de A

3

3 B

3

2

(5) Cubo A

3

3

4

1 A

(4) Aresta 3

4

A

1 2

4

(3) Aresta 2

3

1

F3

C

2

4

4 C

4

2

(9) Cubo C

(10) Arestas de C

D

2 2

3 C

3 D

A

C B

1

4 D

A

A

B D

C

2

(13) Grafo final Figura 2.21 Construção do grafo para o problema da insanidade instantânea

D D

(11) Cubo D

B

4

1 2

(12) Arestas de D

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, resultado 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

A B

1

4

D

D C

4

1 A

C

2

2

(1) Ciclo 1

(2) Ciclo 2

3

3 A

1 1

D

4

4 D

(3) Parte superior e inferior dos cubos A e D

A

2

2

(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 Figuras 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 computacional 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

4

1

3

3

3

2

1

2

1

5

3

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

z

3

4

y

3

y

3

x

x

2

1

(2) Girando os cubos 1 e 3

1

1

4

2

2

1

3

5

1

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 Figura 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 dados que possa representar os cubos e as posições relativas de suas faces e cores. Também será indispensável determinar 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 3

2

3

4

5

3

4

1

5

4

1

2

2 (1) Representação bidimensional das faces

4 3

5

(2) Grafo associado ao cubo e suas faces

2 4

3

1

1

5

3

2

4 5

2

3

1

4

5

2

2

3

4

1

Cor 1

Cor 1

Cor 2

Cor 2

5

(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 representado 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 Verdadeiro 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 é encerrado. 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 relaçõ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.

2

1

7

3 5

4

6

8 9

12 11 17 18

10

14 13

15 27

20

19

24

26

29

28

30

16

21 22

25

23

Figura 2.26 Rede de comunicação entre os personagens de Hamlet, obra de Shakespeare 1 - 2nd Gravedigger 2 - Gravedigger 3 - Lord 4 - 1st Player 5 - Rosencrantz 6 - Guildenstern

7 - Cornelius 8 - Voltemand 9 - Messenger 10 - Messenger 11 - Marcellus 12 - Ghost

13 - Hamlet 14 - Claudius 15 - Queen 16 - Gentleman 17 - Bernardo 18 - Francisco

19 - Osric 20 - Horatio 21 - Gentleman 22 - Sailor 23 - Ambassadors 24 - Fortinbras

Mapa dos personagens

25 - Norwegian Captain 26 - Laerts 27 - Ophelia 28 - Priest 29 - Polonius 30 - Reynaldo

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 primeiras 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 exatamente 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 2143 2413 4231 4321 3412 3142 1324 1342

1342 3124 3214 2341 2431 4213 4123 1432 1423

1423 4132 4312 3421 3241 2314 2134 1243 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 aproximado de um sino grande para completar seu movimento pendular natural. Os tangedores podem tocar sequências 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 sequê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

2134

2143

2413

1243

1234 3214

4213

3241

1324

3124

3142

4231

1423

1342 1432

4123

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

2134

2143

2413

1243

1234 3214

4213

3241

1324

3124

1342 1432

3142

4231

1423

4123

4132

3412

4312

3421

4321

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

2341

2431 2314

2134

2143

2413

1243

1234 3214

4213

3241

1324

3124

3142

4231

1423

1342 1432

4123

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 setembro 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 cortadas 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 distribuiçã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 problema. 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 desconexo 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 movimentos 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.

A

Denominando os três pinos que recebem os discos movimentados por 1, 2 e 3, e representando o movimento do disco do topo da pilha do pino 1 para o topo da pilha do pino 2 por 12. O quadro Hanói apresenta um algoritmo recursivo para a solução desse problema. A chamada Hanói(n,1,2,3) se refere a n discos que tem como origem o pino 1, como destino ao pino 2 tendo o pino 3 como intermediário. A chamada Hanói(n,3,2,1) se refere a n discos que tem como origem o pino 3, como destino ao pino 1 tendo o pino 2 como intermediário.

Hanoi

Hanoi (n, 1, 2, 1) Se (n = 1) então 1  2; Senão Hanoi (n – 1, 1, 3, 2); 12 Hanoi (n – 1, 3, 2, 1); Fim_Senão

Exato Quadro: Hanói

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 diferente 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.

Pino do Prato A

(1,1,1)

Pino do Prato B Pino do Prato C

(.....,... ..,.....)

A

B

C

x

(1) Vetor de representação do posicionamento dos pratos

y

z

(2) Vetor de posicionamento no início do desafio

(1,1,2) A

B

y

(3) Movimento de x para y

C

A

C

x

(1,3,2)

z

1

2

(4) Movimento de x para z

B

3

120

Grafos

(1,1,1) 1

2

B A

B C

A

C

(1,1,3)

(1,1,2)

1

3

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,2,3)

(1,3,2)

(1,1,2)

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

(1,2,1)

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

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

(2,2,1)

(2,1,2)

(3,2,1)

(3,2,3)

(3,3,1)

(3,1,3)

(3,3,3)

(2,2,2) (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,3)

(1,1,2)

(1,2,3)

(1,3,2)

(1,1,2)

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

(1,2,1)

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

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

(2,2,1)

(2,1,2)

(3,2,3)

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

(3,1,3)

(3,3,3)

(2,2,2) (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 embora. 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 demais 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 desonestos 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: somente 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 extravirgem 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 presidente 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

C H

1

H

H

H

H

C

C

H

H

H

Cl H

2

C

C Cl

H

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 atravessar 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 índices 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 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 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étima 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

Bruno

(B)

LP – EE

Thais

(T)

Jair

Professor

Disciplinas

Iran

(I)

LP – SO – RA

SD – SO – RA

Regivan

(R)

CO – IA

(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 disponibilidade 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

1o Horário

M,E,J, R,I

M,E,J, R,I

M,E,J, R,I

M,E,J, R,I

M,E,J, R,I

M,E,J, R,I

M,E,J T,F,A

T,F,A

2o Horário

Todos

M,E,J D,B

Todos

M,E,J D,B

Todos

M,E,J T,F,A

Todos

M,E,J T,F,A

3o Horário

T,F,A, D,B

T,F,A, D,B

T,F,A, D,B

T,F,A, D,B

T,F,A, D,B

T,F,A, D,B

R,I D,B

R,I D,B

4o Horário

R,I D,B

Todos

R,I D,B

Todos

R,I D,B

Todos

R,I D,B

Todos

5o Horário

M,E,J I,D

M,E,J I,D

I,D T,A

I,D T,A

I,D T,A

M,E,J T.A

M,E,J F.A

M,E,J 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 M 1o Horário

4o Horário

T

M

PO M

Dia 3 T

M

Dia 4 T

M

PO M ST D

2o Horário 3o Horário

Dia 2

ST D

LP I

LP I EE B

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

EE B

T

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 todas 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 xadrez: 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 localizados 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 K

E

I 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 figura, 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 identifying 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.

Grafo Estrela Um grafo G com n vértices é denominado estrela quando G é uma árvore que possui um vértice de grau n–1 e os demais vértices com grau 1.

Um subgrafo conexo e acíclico de um grafo é denominado subárvore.

(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

Teorema 3.1 As seguintes proposições são equivalentes para um grafo G: 1. 2. 3. 4. 5.

G é uma árvore. Existe exatamente um caminho entre cada par de vértices de G. G é conexo e m = n – 1. G é acíclico e m = n – 1. 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 Em um grafo G o número de subgrafos árvores com n vértices e com grau especificado k, é igual a:

Teorema 3.3 (Fórmula de Caley) O número de árvores distintas em um grafo completo com n vértices é nn–2.

A Figura 3.2 apresenta 11 diferentes árvores geradoras do grafo ressaltado com o número 1. O conceito de árvore geradora será visto a seguir.

Uma demonstração do Teorema 3.2 pode ser encontrada em Dimakopoulos (2000).

Uma demonstração da fórmula de Caley pode ser encontrada em Shukla & India (2009).

131

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 Uma árvore geradora de um grafo G é um subgrafo gerador conexo e acíclico.

Como consequência das 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 geradora em G é um subgrafo acíclico e gerador.

Coárvore Geradora – CoT O grafo complementar de uma árvore geradora em relação a um grafo G é denominado coárvore geradora.

Uma coárvore geradora não é 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 geradora 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 árvore geradora mínima (TMin) é a árvore geradora de menor custo, dentre todas as possíveis em G.

A determinação da AGM pode ser feita em tempo

polinomial

O custo de uma árvore geradora T de um grafo ponderado G é dado pelo somatório dos custos das arestas de T.

Árvore Geradora Máxima – AGMa

A determinação da AGMa pode ser feita em tempo

TMax

Trata-se da árvore geradora de maior custo em G.

polinomial

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

Em um grafo G = (N, M ) ponderado em arestas, o problema da k-ésima melhor á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.

Garey & Johnson (1979) provam que o problema da k-ésima melhor AGM é

NP-Difícil

138

Grafos

Encontrar uma AGGM em um grafo sem características particulares é

Árvore Geradora de Grau Mínimo – AGGM É uma árvore geradora desenvolvida em um grafo não ponderado e possuindo o menor grau máximo possível.

TGMin Árvore Geradora Mínima com Mínimo Grau A AGMMG é a árvore geradora mínima de um grafo ponderado a qual possui o menor grau máximo possível. Min TAGM

Árvore Geradora de Grau Restrito – AGM-GR Considerando um grafo G e um inteiro positivo k, é uma árvore geradora de G tal que o máximo grau de seus vértices seja menor ou igual a k. k

TG

NP-Difícil Encontrar uma AGMMG em um grafo sem características particulares é

NP-Difícil Decidir se existe uma AGM-GR para um dado k é

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 determinar 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) apresentam 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 minimize 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 Árvore geradora isomorfa é uma árvore que representa, através de diferentes traçados, uma mesma árvore em G.

TISO

A verificação de que duas árvores são isomorfas pode ser feita em tempo

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

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

A determinação da árvore geradora MinMax_MinSum pode ser realizada em tempo

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

(1) Custos associados às arestas do grafo G

(2) Pesos associados às arestas do Grafo G

(3) Árvore geradora em G

(4) Custo das arestas para a árvore em G

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

(6) Avaliação MinMax_MinSum = 10

141

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 Considerando um grafo G, Tf é uma árvore geradora de G tal que possui o maior número possível de folhas.

AGNMF

A aproximação da solução AGNMF pertence à classe

Apx-Completo

Árvore Ger. com no Máximo k Folhas A AGkF é uma variante do problema AGNMF, onde o objetivo é localizar em um grafo G uma árvore geradora com no máximo k folhas

AGkF

A determinação de uma 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

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

Árvore Ger. Mínima 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

(1) Grafo G Figura 3.15 Árvore de mínimo diâmetro

NP-Difícil

NP-Difícil A determinação da AGM limitada em diâmetro é

NP-Difícil

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

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

O caso da determinação da árvore geradora de mínimo diâmetro em grafo com arestas com pesos idênticos é

polinomial

A Figura 3.16(1) mostra um grafo exemplo. Por comparação, a árvore geradora mínima de G é exibida na Figura 3.16(2), ao lado da árvore geradora de mínimo diâmetro na Figura 3.16(3). Na Figura 3.16(5) é exibida a árvore de mínimo diâmetro do grafo da Figura 3.16(4). O maior grau da árvore da Figura 3.16 é 4. A Figura 3.16(5) é equivalente a uma árvore de 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), resultando 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 ótimo. 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 operadores 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 árvore geradora duplamente limitada é uma árvore geradora com um custo menor ou igual a k e diâmetro menor ou igual a d.

Tdk

A determinação da AGM duplamente limitada é

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.

TC Árvore Geradora 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] C

NP-Difícil (Garey & Johnson, 1979).

A determinação da AG k compacta é

NP-Difícil

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 caminhos 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 árvore 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, desenvolve-se a matriz de distância da árvore geradora mínima. A soma de todos os menores caminhos 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 Figura 2.18(6), a árvore geradora mínima será uma árvore geradora 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

Árvore Geradora Mínima k-hop

k-hop

Árvore geradora mínima k-hop é aquela de menor custo total, tal que, definindose uma raiz r, o caminho mais longo entre r e uma folha tenha no máximo k arestas. Também denominada árvore geradora mínima com caminhos de comprimento limitado (Oh et al., 1997).

A determinação da AGM k-hop é

NP-Difícil

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 de n vértices de determinada rede R = (N, M), onde N representa o conjunto 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 é atribuído um peso bi não negativo, sendo que a central representada pelo vértice 0, também chamado de raiz, possui b0 = 0. Um custo cij é atribuído a cada aresta i-j  M. Dada uma restrição de capacidade Q, o problema consiste em encontrar a árvore geradora mínima de R tal que a soma dos pesos dos vértices em cada subárvore da raiz não exceda a capacidade Q.

NP-Difícil Se bi = 1 para todo vértice i, i = 1,...,n, então o problema se reduz a encontrar a árvore geradora mínima tal que as subárvores da raiz possuam no máximo 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 Figura 3.20 Árvores mínimas capacitadas

(2) Tcap = 18, Q = 2

(3)Tcap = 14, Q = 3

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 Dados um grafo G = (N,M) e uma família de cortes C = {C1,C2,...,Cq}, a árvore 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 é dado por |MT  Ci|.

A determinação da AGCM é

NP-Difícil

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 geradoras 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 Sendo um conjunto S de pontos no plano constituído por pontos de duas cores R e B, a árvore geradora mínima bicolorida é aquela desenvolvida de forma a unir todos os pontos de S por arestas, ligando sempre vértices dos conjuntos R e B sem que duas arestas jamais se cruzem.

O problema foi proposto por Grantson (2005). Borgelt et al. (2009) provam ser NP-Difícil e propõem um 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 mais, ou ainda, a árvore em que todos os vértices estão à distância máxima de uma aresta de um caminho principal (Harary & Schwenk, 1973).

Árvore Geradora Mínima Taturana É a árvore á taturana t t geradora d de d menor custo t de d um grafo f G.

O problema de determinar se um grafo possui uma árvore geradora taturana é

NP-Completo Tan & Zang (2007).

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 O número de árvores taturana em um grafo não rotulado de n vértices é:

Denomina-se árvore lagosta (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á alguns 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çoamento 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

O(mlog n)

Boru˚ vka (1926)

União de conjuntos disjuntos

Kruskal (1956)

União de conjuntos disjuntos e heapO(mlog n) sort

Prim (1957)

Seleção de arestas

Johnson (1975)

Algoritmo de Prim implementado O(nd logd n + mlogd n) com d-Heap

Yao (1975)

Algoritmo de Boru˚ vka implementado O(mlog log n) utilizando heaps e seleção

Cheriton & Tarjan (1976)

Algoritmo de Boru˚ vka com fila duplamente ligada, heap e união de con- O(mlog log n) juntos disjuntos

Gabow et al. (1986)

Heap de Fibonacci com pacotes e O(mlog (m, n)) união de conjuntos disjuntos

Fredman & Tarjan (1987)

Algoritmo de Prim implementado O(n log n + m) com heap de Fibonacci

Fredman & Tarjan (1987)

Algoritmo de Boru˚ vka implementado O(m (m, n)) com heap de Fibonacci

Karger (1993)

Aleatorização

Karger et al. (1995)

Aleatorização, recursão e verificação O(m) de tempo linear

(b)

Chazelle (1997)

Heap com particularidades de moviO(m(m,n) log(m,n)) mentação (soft heap)

(c)

Pettie (1999)

Divisão do problema em subproblemas e procedimentos de retração e O(m(m,n)) extensão

Chazelle (2000a)

Aperfeiçoamento da técnica em soft O(m(m,n)log(m,n) ) heap

Pettie (1999)

Divisão do problema em subproblemas e procedimentos de retração e extensão

O(m(m,n))

Chazelle (2000a)

Aperfeiçoamento da técnica em soft heap

O(m(m,n)log(m,n) )

Chazelle (2000b)

Aperfeiçoamento da técnica em soft heap

O(m(m, n))

O(n2)

(a)

O(n log n + m)

152

Grafos

Pettie & Ramachandran (2002)

Aperfeiçoamento do trabalho Pettie (1999)

Entre Ω(m) e O(m(m,n))

(d)

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) = se a > 0 e b = 0 A(a – 1,1) 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 eficiente 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 computada 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

A

153

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 apresentada 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 complexidade 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 é representado 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 geradora. No exemplo das Figuras 3.26(a) e (b), o vértice 1 é o selecionado.

CAPÍTULO 3  Árvores

A

155

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. Arestas (1,2) e (1,3) são coloridas de verde

(3) A menor aresta verde é colorida de azul e inserida na solução

(4) Vértice 2 escolhido para ser examinado z=4 aresta (2,4) colorida de verde z=5 aresta (2,5) colorida de verde

(5) z=3 aresta (1,3) colorida de vermelho z=3 aresta (2,3) colorida de azul

(6) Vértice 3 escolhido para ser examinado z=5 aresta (3,5) colorida de verde z=5 aresta (2,5) colorida de vermelho

(7) Dentre as arestas verdes alguma menor, (3,5) por exemplo, é colorida de azul (e incluída na solução)

Figura 3.26 Desenvolvimento do algoritmo Prim colorido – 1a parte

CAPÍTULO 3  Árvores

(8) Vértice 5 escolhido é para ser examinado z = 6 aresta (5,6) colorida de verde

(9) z = 4 aresta (5,4) colorida de verde z = 4 aresta (2,4) colorida de vermelho

(10) Dentre as arestas verdes, a menor (5,4) é colorida de azul e incluída na solução

(11) Vértice 4 é escolhido para exame z = 6 aresta (4,6) colorida de vermelho Aresta (5,6) colorida de azul i = n–1 e Fim

157

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 algoritmo 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 Figura 3.27 Desenvolvimento do algoritmo de Kruskal – 2a parte

(8) Inserção da quinta aresta em T

CAPÍTULO 3  Árvores

Complexidade

159

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, demonstrando que elas podem ser diferentes.

(1) Prim – iniciando pelo vértice 1 e com a sequência (1-3),(1-2), (2-5), (5-8), (5-6), (6-7), (6-9), (7-10), (7,4) Figura 3.28 A questão Prim x Kruskal

(2) Kruskal – com a sequência (1-3), (6-7), (5-8), (5-6), (6-9), (9-10), (4-6), (2-5), (1-2)

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 u ˚ 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 condiçã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

(1) Grafo exemplo para o ° algoritmo de Boruvka

(2) Inicialização – formação da floresta

(3) Primeira iteração

(4) Segunda iteração – formação da árvore

Figura 3.29 Execução do algoritmo de Borůvka

161

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 u ˚ 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 em m 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 Uma árvore binária é um grafo vazio ou possui um vértice especial r chamado raiz, e 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

Em uma árvore binária estendida, todos os vértices internos são pais de dois filhos.

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. Considerando 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

i=0

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 decodificaçã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 caminho 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 algoritmo 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 localizada 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 implementaçã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últiplos 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 possibilidade. 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 terminais 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 concentradores 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 consiste 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 plataforma, 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 solução.

►Exemplo 5: Otimização de Sistemas com Grau de Incerteza

CAPÍTULO 3  Árvores

O Problema Árvore Geradora Mínima Robusta

169

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 modelos e problemas.

Grafo de Halin Um grafo de Halin é um grafo planar construído a partir de uma imersão planar de uma árvore T com n ≥ 4 vértices tal que não existe vértice de grau dois em T, conectando-se todas as folhas de T em um ciclo que passa em torno de T, ligando suas folhas sem passar pelos demais vértices da árvore – vértices internos.

A Figura 3.38(1) mostra a imersão planar de uma árvore com 6 vértices, sendo 4 deles folhas em um ciclo com 4 vértices resultando em um grafo de Halin. A Figura 3.38(2) exibe um grafo de Halin com n = 4.

Grafos

170

(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 Um grafo G = (N,M) é uma quase-árvore quando para algum v  N o subgrafo induzido pelo conjunto de vértices N1 = N \ {v } é uma árvore.

(1) Grafo quase-árvore (v =3 ou v =1)

A Figura 3.39(1) exibe um grafo quase-árvore, e identifica os vértices que, removidos, reduzem o grafo quase-árvore a uma árvore, como mostrado na Figura 3.39(2).

(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

 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

171

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 entre 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. Formalize 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 funcionamento desse algoritmo no grafo da figura que se segue.

Grafo dos custos – cij

Grafos do exercício 4

Grafo dos pesos – pij

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), Fortaleza (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 árvore 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 caminhos 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 desconexã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 desconexo? 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 algoritmo 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. Aplique 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 caminhos 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 algoritmo 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 exercício exibe uma solução do problema.

178

Grafos

(2) Uma árvore 4-hop

(1) Grafo

Grafos do exercício 3.33

3.34: Considerando uma árvore T=(N,M), o seguinte algoritmo é proposto para determinar o seu centro. O presente 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. Estabeleç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).

(2) Uma árvore 4-hop

(1) Grafo

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 geradora. 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 estabelecida. 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 arborescê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 exatidã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 Transactions 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 intelligent 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 Experimental 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 bichromatic 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 tcheco 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 witnesses 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. Department 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 algorithms. 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 Research 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-andprice for the capacitated minimum spanning tree problem. In: Proceedings of the International Network Optimization 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 spanning 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 campos 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 formulations. 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 architecture. 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 computational biology. Algorithmica 24(1):1-13. Hero, A. O., Ma, B., Michel, O. & Gorman, J. (2002). Applications of entropic spanning graphs. IEEE Signal Processing Magazine 19:85-95. Ho, J-M., Lee, D. T., Chang, C.-H. & Wong, E C. K. (1991). Minimum diameter spanning trees and related problems. 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. International 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 aggregation 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

CAPÍTULO 4  Caminhos

185

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 à possibilidade 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-conexidade generaliza o conceito de conexidade forte. Uma sequência de graus Vértices Fortemente Conectados é 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 seVértices Fracamente Conectados quência {2,2,2} é 2-conexa. Os grafos direcionados Conceito exclusivo de grafos direcionados. Dois vértices i e j estão fracamente conecdas Figuras 4.1(1) e (2) são tados em um grafo direcionado G, se existe apenas um caminho direcionado de i para conexos. Entretanto, apej ou de j para i em G. 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 forteUm grafo direcionado G conexo é dito fracamente conexo quando existe pelo menos mente conectados. um par de vértices i e j em G tal que o número de caminhos entre i e j é menor que 1. No grafo da Figura 4.1(2) não existe caminho direcionado do vértice 5 para qualquer vértice do grafo.

(1) Grafo fortemente conexo Figura 4.1 Conexidade de grafos direcionados

(2) Grafo fracamente conexo

CAPÍTULO 4  Caminhos

k-Conexidade Um grafo é dito k-conexo quando nele existem pelo menos k caminhos disjuntos em vértices ligando cada par de vértices. Um grafo dito 2-conexo é um grafo fortemente conexo e vice-versa.

Grafo k-Aresta-Conexo Um grafo é dito k-aresta-conexo se é necessário remover pelo menos k arestas para desconectar G.

Grafo k-Vértice-Conexo Um grafo é dito k-vértice-conexo se é necessário remover pelo menos k vértices para desconectar G.

(1) Grafo 3-conexo

(2) Caminhos entre os vértices 3 e 2

(3) 3-desconexão em vértices

187

Os termos k-aresta-conexo e k-vértice-conexo estão em uso crescente na literatura, substituindo, em não raras ocasiões, os termos conexo ou k-conexo. A Figura 4.2(1) exemplifica um grafo 3-conexo. A Figura 4.2(2) exibe 3 caminhos distintos entre os vértices 2 e 3. As Figuras 4.2(3) e (4) mostram a equivalência do conceito de k-conexidade com os conceitos de k-vértice conexidade e k-aresta conexidade.

(4) 3-desconexão em arestas

Figura 4.2 Grafo 3-conexo ou 3-aresta conexo / 3-vértice conexo

Integridade de um Grafo G

I(G)

Onde m(G-S) denota a máxima ordem de uma componente de G \ S. I(G) é dita a integridade do grafo G.

Honestidade de um Grafo G

I'(G) Onde m(G-S) denota a máxima ordem de uma componente de G \ S. Um grafo é dito honesto se |I´(G) |=n, a ordem de G.

Para o conjunto de vértices do grafo da Figura 4.3(1), se S={1} (Figura 4.3(2)), então m(G-S)=1. A integridade I(G) do grafo G é 1+1=2, uma vez que as oito componentes conexas remanescentes em G-S possuem ordem 1, como mostra a Figura 4.3(3). Por outro lado, a integridade em arestas é sempre igual a n, uma vez que a remoção de uma aresta causa a redução de um vértice na 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

(2) I'(G)={2+7}=9

(3) I'(G)={3+6}=9

Figura 4.3 Integridade de um grafo

(1) I'(G)={1+8}=9 Figura 4.4 Honestidade de um grafo

Grafo r-Tenaz Um grafo G é dito r-tenaz para um dado número real r, se para todo inteiro k>1 G não pode ser dividido em k diferentes componentes conexas pela remoção de menos de rk vértices (Chvátal, 1973).

Um grafo é tenaz na medida em que o número de componentes formadas pela remoção de um conjunto de vértices é no máximo tão grande quanto o número de vértices 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 componentes. 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

(1) Remoção de 1 vértice

(2) Remoção de 2 vértices

189

(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 Hamiltoniano, é 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

(3) 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

(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 maximal 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 conexos 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 antecessores 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 antecessor 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 fortemente 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á exibida 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 determina 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) apresentam 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 algoritmo 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) ilustram a execução do algoritmo Warshall A 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 iteSe T[j,i] = 1 ração i = 2, T não se modifica, Para k ← 1,...,n Faça uma vez que o conjunto de anTjk = Tjk OR Tik tecessores do vértice 2 é vazio. Fim_Para A matriz T também não é moFim _Para dificada na iteração i = 3, uma Fim _Para vez que as arestas que seriam adicionadas nesta iteração já se encontram no grafo correspondente 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).

A=

(1) Grafo G

T=

0

0

0

1

0

1

0

1

0

1

1

0

0

0

1

0

0

0

0

1

0

0

0

0

0

(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

1

0

0

0

1

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

T=

(3) Matriz T após i = 1, 2, 3 Figura 4.11 Aplicação do algoritmo de Warshall

(4) Matriz T após i = 4, 5

(5) Fecho transitivo de G

CAPÍTULO 4  Caminhos

Complexidade

195

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 que acumula o menor número de arestas entre os referidos vértices.

Caminho mais Curto – Grafo Ponderado 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 caminhos existentes entre v e w.

(1) Grafo não ponderado Figura 4.12 Caminho mais curto em grafo não ponderado

A determinação do caminho mais curto entre qualquer par de vértices de G em um grafo não ponderado ou ponderado (ambos os casos) é

Polinomial

(2) Caminho mais curto entre v e w

196

Grafos

(1) Grafo ponderado

(2) Caminhos mais curto entre v e w

Figura 4.13 Caminho mais curto em grafo ponderado

NP-Difícil

Caminho mais Longo 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 maior número de arestas entre os referidos vértices (grafo não ponderado).

Demonstração em Karger et al. (1997). Zhang & Li (2007) relatam algoritmos 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 Figura 4.14 Caminhos mais longos

(2) Caminho mais longo do grafo ponderado

CAPÍTULO 4  Caminhos

Caminho mais Curto com Custos nos Vértices

197

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 possível dentre todos os caminhos existentes entre i e j.

(ver exercício solucionado no 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 Dois caminhos v-w são ditos disjuntos em arestas quando não possuem aresta em comum.

Partição de G em Caminhos Disjuntos Dado um grafo G=(N,M), uma partição de G em caminhos disjuntos em vértices é um conjunto de caminhos P1 = (N1, M1), ..., Pr = (Nr , Mr) em G, tais que N1 ...  Nr = N e Ni  Nj = para quaisquer i, j, i  j, 1  i,j  r.

Os dois conceitos presentemente descritos dão base a importantes problemas da Teoria dos Grafos e da Otimização Combinatória. Alguns desses problemas serão abordados no atual tópico.

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

(4) Partição em caminhos disjuntos

(2) Caminho 1

(3) Caminho 2

(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 problema 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 problema 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 direcionados 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) apresentam 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), Bellman (1958)

Técnica de rotulação FIFO

O(mn)

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)

Träff & Zaroliagis (1996)

Algoritmo paralelo para caminho mais curto em grafo planar

O( (n2ε+n1-ε) logn)***

Henzinger et al. (1997)

Caminho mais curto em grafos planares

O(n3/4 L logn)****

Pettie & Ramachandran (2005)

Aperfeiçoamento da abordagem de Thorup (1990) – em bucket-heap

O(m + n log log n)

* A constante C é um limite superior para o peso das arestas. ** D é a soma dos pesos das arestas. *** 0 (lik + lkj ) lij ← (lik + lkj ) Fim_Se Fim_Para Fim_Para Fim_Para

Floyd-Warshall

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 é considerado 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 = 2 , l32 = min { l32 ; (l31 + l12) } = 4 j = 3 , l33 = min { l33 ; (l31 + l13) } = ∞

j = 4 , l34 = min { l34 ; (l31 + l14) } = 2 ←

j = 5 , l35 = min { l35 ; (l31 + l15) } = ∞ 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

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)

213

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, telefonia 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 simultaneamente 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

Figura 4.32 Rotulação das três primeiras camadas de G

3a x 4a camadas

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

Figura 4.34 Grafo direcionado

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 Figura 4.35. Para tal, são introduzidos vértices artificiais que permitem criar novas camadas que separem ligações entre supostos vértices de uma mesma camada – ligações 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értices 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 homenagem, 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 Figura 4.37 O jogo de Hamilton

(2) Uma solução do jogo

(3) Um ciclo hamiltoniano

CAPÍTULO 4  Caminhos

217

Modernamente, a primeira menção conhecida do problema é devida a Hassler Whitney, em 1934, em um seminá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.

Grafo semi-hamiltoniano

Claramente, um grafo hamiltoniano é também semihamiltoniano.

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 caminho da Figura 4.39(3) mostra que os grafos das Figuras 4.39(1) e (2) são semi-hamiltonianos.

(1) Grafo hamiltoniano Figura 4.39 Grafo semi-hamiltoniano

(2) Grafo não hamiltoniano

(3) Caminho 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 para todo x  N, é hamiltoniano. (Dirac, 1952)

Um grafo G = (N,M) de ordem n onde Max{d(u), d(v)} ≥ n/2 para algum u,v  N com d(u,v) = 2 é hamiltoniano. (Fan, 1984)

Teorema 4.3 (Harary) Todo grafo hamiltoniano é 2-conexo. (Harary, 1972)

Teorema 4.4 (Teorema de Ore) Uma condição suficiente para que um grafo G seja hamiltoniano é que a soma dos graus de cada par de vértices não adjacentes seja no mínimo n. (Ore, 1961)

Teorema 4.5 (Bondy & Chvátal) Em um grafo G de ordem maior ou igual a três, se u e v são dois vértices não adjacentes em G com d(u) + d(v) ≥ n, então G é hamiltoniano se e somente se G  {(u,v) } for hamiltoniano. (Bondy & Chvátal, 1976)

Teorema 4.7 (Faudree) 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 não adjacentes é hamiltoniano. (Faudree et al., 1989)

Teorema 4.8 (Flandrin) Um grafo G = (N,M) 2-conexo de ordem n onde d(u)+d(v)+d(w)≥n+ |N(u)  N(v)  N(w)| para todo conjunto independente u,v,w, é hamiltoniano. (Flandrin et al., 1991)

Teorema 4.9 (Flandrin) 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 xadrez, passar obrigatoriamente uma única vez em todas as casas do tabuleiro, 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 tabuleiro de xadrez através dos movimentos de saltos do cavalo.

(1) Movimentos possíveis do cavalo

(3) Movimento

(4) Enumeração

(2) Um passeio do cavalo

(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 xadrez, 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 passeio 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 século XVIII

(2) Modelo de representação

Figura 4.42 Esquema do problema das 7 pontes de Königsberg – século XVIII

(3) Multigrafo associado ao modelo

CAPÍTULO 4  Caminhos

221

Semelhantemente às questões levantadas sobre o cavalo do jogo do xadrez, a questão dos habitantes de Königsberg 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 delimitadas 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 XXI

(3) Multigrafo associado ao modelo

(2) Modelo de representação

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, continua 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. Surpreendentemente, 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.

Grafo semieuleriano

Um caminho euleriano em G não necessita ser fechado – começar e terminar no mesmo 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, produzindo a cadeia C. No final, C contém a cadeia euleriana fechada de G.

A 1 2 3 4 5 6 7 8 9 10 11

Hierholzer

Ler os dados de G=(N,M) Escolher um vértice v qualquer de G Construir uma cadeia fechada C, a partir de v, percorrendo as arestas de G de forma aleatória. M1 ← M \ C; K ← (N, M1) // retira de G as arestas de C // Enquanto M1 ≠  Fazer Escolher v tal que d(v) > 0 em K e v  C Construir uma cadeia fechada H, a partir de v, percorrendo as arestas de K de forma aleatória. M1 ← M1\ H C←HC H← Fim do Enquanto 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 é escolhido. 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

(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.

227

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értices 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 O caminho mais curto com janelas de tempo é o menor caminho entre um par de vértices v e w, que atende as condições do rótulo [tmin, tmax] para cada um dos vértices visitados.

Decidir se existe um caminho de comprimento k que atende as condições dos rótulos é

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 percorrer 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 Figura 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értices 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

(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

229

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 vértices inclua obrigatoriamente outros vértices, denominados vértices de passagem

polinomial

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) mostram, respectivamente, os caminhos mais curtos sem e com o vértice 3 obrigatório.

(1) Grafo G

(2) Caminho mais curto tradicional = 10 Figura 4.50 Caminho mais curto com vértices de passagem obrigatória

(3) Caminho mais curto restrito = 11

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 é realizado 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 durante o trajeto, passando por tantos pontos de reabastecimento quantos se fizerem

polinomial

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 antes 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 grafo. 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 Trata-se do caminho que minimiza a soma das k maiores arestas pertencentes ao caminho.

O problema é

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 Figuras 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 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 v e w tal que o valor dos pesos não ultrapasse um limite k.

O problema é

NP-Difícil

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

Figura 4.53 Caminhos mais curtos restritos em peso

(3) Caminho=4 / Peso=2

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 e w.

polinomial

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 Trata-se de um problema de caminho mais curto onde os vértices / arestas possuem presença incerta no grafo.

O problema é estudado por Jaillet (1992); Krasikov & 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 desenvolvidos 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 & Steiglitz (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 carteiro chinês em grafos não orientados eulerianos reduz-se à determinação do ciclo euleriano. (3) Segunda parte da solução Figura 4.55 Uma solução do carteiro chinês

(4) Terceira parte da solução

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 algum 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 citados, 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

O Problema do Carteiro Rural

235

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 comprimento 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 propõ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) descrevem 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 possui 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, é equivalente 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.

(1) Um grafo de correlações. Figura 4.58 Exemplo de balanceamento de aletas em turbina a jato

(2) Uma alocação de aletas na turbina: 7-6-1-5-2-10-3-4-11-9-12-8-7

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 integraçã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 pesquisado 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 problema 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.

(1) Fragmentos de DNA conhecidos

(2) Posições não emparelhadas nos fragmentos: f1 → f4 =3 e f4 → f1=2

(3) Posições não emparelhadas nos fragmentos: f1  f3 =1 e f1  f2=2

(4) Posições não emparelhadas nos fragmentos: 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 comprimento 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úmeras 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 equipamento 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 chegam 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 processo 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 solda. 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 alojado 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 perfuraçã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 celestes 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 Engineering, em Houston, e da Brigham Young University otimizaram 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 cronológica das sepulturas é necessário encontrar a sequência que minimize a perturbação de diversidade entre as sepulturas. 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 visualizaçã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

Duração

Anterior

Posterior

A

Comprar tábuas

Discrição

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 instantâ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 é també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 caminho 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 tempo 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

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 redistribuições dos meios no planejamento. A construção de uma rede PERT/CPM será exemplificada em um projeto de planejamento de um casamento. As atividades necessárias estão relacionadas na Tabela 4.3.

243

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 associados 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 prazos 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 tombamentos 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 tabuleiro 3 x 3

(2) Um caminho hamiltoniano do dado

(3) Um ciclo hamiltoniano do dado

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 qualquer 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 comprimento 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

(3) Ciclo 3

(2) Grafo pancíclico

(4) Ciclo 4

(6) Ciclo 6

(5) Ciclo 5

(7) Ciclo 7

Figura 4.72 Grafo pancíclico

Grafo Ore Trata-se de um grafo G em que a soma dos graus dos vértices não adjacentes é maior que o número de vértices para todos subconjuntos de vértices não adjacentes (Skiena 1990, p. 197).

Os grafos Ore são sempre Hamiltonianos e esses ciclos podem ser construídos em tempo polinomial (Bondy & Chvátal, 1976). A Figura 4.73 exemplifica três grafos Ore.

CAPÍTULO 4  Caminhos

(1)

(2)

249

(3)

Figura 4.73 Grafos Ore

Grafo D-Distância

X(D)

A Figura 4.74 exemplifica um grafo unidistância.

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 possuem 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

Grafo Anel

Figura 4.75 Grafo de Pappus

Abaixo, exemplo de um grafo anel.

A

Um grafo é denominado anel (An) se cada bloco de G, exceto uma ponte ou um vértice, 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, exibido 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, contém 2d vértices e é regular de grau d.

Um grafo G é dito hipercubo – Qd quando é obtido segundo o seguinte produto cartesiano:

Grafo k-Cubo Um grafo k-cubo é aquele cujos vértices representam uma k enumeração binária exaustiva e as arestas uma relação de vizinhança trivial entre as configurações.

A Figura 4.77(1) exemplifica um grafo hipercubo Q3 e um 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 seguintes sólidos: 1. Tetraedro 2. Cubo 3. Octaedro 4. Icosaedro 5. Dodecaedro

A Figura 4.78 exemplifica grafos platônicos.

252

Grafos

(1) Tetraedro

(2) Cubo

(4) Icosaedro

(3) Octaedro

(5) Dodecaedro

Figura 4.78 Grafos platônicos

Grafo Poliédrico Um grafo é dito n-poliédrico ou c-net se é um grafo planar 3-conexo de n vértices.

(1) 6-roda Figura 4.79 Grafos poliédricos

(2) 5-roda

A Figura 4.79 exemplifica três grafos poliédricos.

(3) Tetraedro

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

Y

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 vértices do isomorfismo.

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.

(1) Grafo prisma Y3 (ou Y3,2)

A Figura 4.80(1) exibe um grafo prisma Y3 – que possui 6 vértices. Quando o produto cartesiano é efetuado entre os grafos Cn e Pm, (conforme notação do Capítulo 1 – Cn  Pm), o prisma é notado Yn,m. A Figura 4.80(2) exibe o prisma Y3,3.

(2) Grafo prisma Y3,3

Figura 4.80 Grafos prisma

Grafo Grade

Gn,k,r

O grafo grade, Gm,n, é também denominado grafo reticulado e resulta do produto de dois grafos caminho com m e n vértices, respectivamente. O conceito de grafo grade pode ser estendido para um produto cartesiano m x n x k...x s.

A Figura 4.81 exibe um grafo grade G3,3, formado pelo produto de dois caminhos de três vértices. Se um dos caminhos do produto cartesiano fosse substituído por um ciclo, o grafo grade seria transformado 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

Ln

O grafo escada Ln é obtido pelo produto cartesiano dos grafos K2  Pn.

(1) L2 Figura 4.82 Grafos escada

(2) L3

A Figura 4.82 exibe três grafos escada. O grafo é citado em Hosoya & Harary (1993).

(3) L4

CAPÍTULO 4  Caminhos

Grafo Livro

255

Bn

A Figura 4.83 exibe três grafos livros.

O grafo livro Bn é obtido pelo produto cartesiano entre os grafos estrela Sn+1 e o grafo caminho de comprimento dois Bn = Sn+1  P2.

O grafo é citado em Gallian (2007).

(1) B3

(2) B4

(3) B5

Figura 4.83 Grafos livro

Grafos de Knödel

W,n

São grafos regulares de ordem par n e com grau máximo , 1≤  ≤ Îlog2(n)˚

A Figura 4.84 exibe dois grafos de Knödel.

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 É um grafo 3-regular obtido de C8 – grafo ciclo com 8 vértices, pela adição de uma aresta unindo vértices diametralmente opostos no ciclo.

A Figura 4.84(1) exibe uma escada de Mobius, que é também um grafo de Knödel W3,8.

256

Grafos

(1) Grafo de Knödel – W3,8 (também escada de Möbius)

(2) Grafo de Knödel – W4,16

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 = 2,...,n-1, xi é adjacente a x1, xi-1 e xi+1. O vértice e xn é adjacente a x1, xn-1 e x2.

Grafo Engrenagem É o grafo obtido pela inserção de um vértice entre cada par de vértices adjacentes no perímetro de um grafo roda. O grafo possui 2n+1 vértices e 3n arestas.

(1) Roda W7 Figura 4.85 Grafos roda e engrenagem

A Figura 4.85(2) mostra um grafo engrenagem. O grafo engrenagem pode ser considerado um grafo roda bipartido (Brandstädt et al., 1987).

(2) 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á ˇcek)

Um prisma obtido sobre qualquer grafo cúbico 3-conexo é hamiltoniano. (Paulraja,1993)

Todo grafo 7-conexo livre de subgrafos garra é hamiltoniano. (Ryjá ˇcek,1997)

Teorema 4.14 (Li)

Teorema 4.16 (Flandrin)

Todo grafo 6-conexo livre de subgrafos garra com pelo menos 33 vértices de grau 6 é hamiltoniano. (Li et al.,1996)

Se G = (N,M) é conexo com D(G) ≤ n, então G † Cn é hamiltoniano. (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).

Grafos

258

                                             

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 & Christiansen, 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 problema 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 hamiltoniano 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 diferente 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 retorno 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 completamente 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 corredores 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 subgrafo 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 distância é estritamente maior que n/2 (no grafo não ponderado, a distância entre um par de vértices v e w corresponde 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 é també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 afirmaçã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 obrigató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 complexidade 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 algoritmo 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 algoritmo 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 algoritmo 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 determinar 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 caminho 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 escavados 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 circuitos 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 entre 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ância 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 empilhadeira fará obrigatoriamente a entrega de um item em cada corredor do armazém, programe o passeio da empilhadeira 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

(1) Grafo 1

271

(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)

(d)

(c)

(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 fundamental 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 cidade 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-hamiltonianos. 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 hamiltoniano; 2) possua um caminho hamiltoniano e nenhum caminho euleriano; 3) não possua caminhos hamiltonianos 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 pavimentadas e que existem ladrilhos 2 x 1 (com uma quadrícula preta e uma branca) disponíveis para pavimentar 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 problema 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 compromisso 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

(7) Rota 6 – percurso horário

(8) Rota 7 – integração – 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 1

Rota 5 GIG

Rota 2

Rota 7 GIG

GRU

Rota 3

CNF

Rota 4

NAT

Rota 5

GIG

Rota 6

FOR

Rota 7

Rota 6

REC

REC

GRU

SSA

GRU

BSB

GIG

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 determine 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 capacidade 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 sempre 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 caminhõ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.

Grafos

282

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

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

0

10

5

10

13

8

15

16

10

3

9

4

3

3

5

0

4

5

10

10

20

21

17

4

20

10

12

9

8

0

4

9

5

14

13

10

5

13

10

10

9

9

0

5

3

10

9

7

7

15

11

14

13

12

0

4

7

4

4

10

8

7

11

12

13

0

6

6

4

6

3

2

5

7

9

0

2

2

11

4

5

7

9

12

0

4

15

7

7

12

13

17

0

9

4

3

6

9

14

0

10

7

7

5

2

0

4

4

8

11

0

3

5

8

0

4

7

0

4

11 12 13 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 deslocamento 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 antipodal 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 antipodais se possuem a distância máxima em Ck.

Duas arestas e1 e e2 são ditas antipodais em um ciclo Ck se 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 antipodal se Min{dG(x1),dG(x2)}=k/2 para todos pares de vértices antipodais pertencentes ao ciclo Ck.

Um ciclo par Ck em um grafo G é dito ciclo aresta antipodal se Min{wG(e1),wG(e2)}=2 para quaisquer duas arestas 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 Genome. 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 Statistical 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 Schindler Elevator Corporation. Interfaces 33(1):67-79. Bland, R. E. & Shallcross, D. F. (1987). Large Traveling Salesman Problem Arising from Experiments in X-ray Crystallography: 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. Transportation 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 Quarterly 23:151-163. Castellano, M. & Bornstein, C. T. (1989). Problema de Roteamento de Auditores. Resumos do XXII Simpósio Brasileiro 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 Windows. 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 Algorithms 21(2):331-357. Corberán, A., Martí, R. & Sanchis, J. M. (2002). A GRASP heuristic for the mixed Chinese postman problem. European 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 Problem, 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 Programação de Veículos com Múltiplos Tipos de Veículos. Escola Politécnica, Universidade do Estado de São Paulo. Disponí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. Proceedings 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):10311034. 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:257261. 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 Algorithms. Journal of the Association Computing Machinery 34:596-615. Feremans, C., Labb, M. & Laporte, G. (2003). Generalized network design problems. European Journal of Operational 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. International 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 Computer 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 Administration, 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 Mathematics 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 Efficient 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. Transportation 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. Lecture Notes in Computer Science 709:421-432. Karp, R. M. (1972). Reducibility among combinatorial problems. In: Complexity of Computer Computations, Miller, 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 Sciences 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 Programming 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. Computers & 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 Intersatellite 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 Cutting. 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 Requirements. 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 Problem. 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 Malaysian 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. Transportation 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:257267. Pape, U. (1974). Implementation and Efficiency of Moore Algorithms for the Shortest Root Problems. Mathematical 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 Application 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 Shortes 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 Methodology 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 Canadian 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:213222. 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 Scheduling 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 (IRREGULAR-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 Deliveries. 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. European 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: Proceedings 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: Occasional Papers II(1):1-42.

capítulo

CAPÍTULO 5  Subconjuntos de vértices e arestas

293

294

Grafos

5.1 Coberturas Cobertura de Vértices



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ˆ . 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 é expresso por b(G):

Encontrar uma cobertura de vértices em um grafo sem características particulares é

NP-Difícil

O invariante b(G) é denominado também número de absorção.

b Cobertura de Arestas



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 Ê. 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 com Vértices Ponderados Dados um grafo G e uma função de ponderação dos vértices de G, o problema da cobertura com vértices ponderados ou capacitados em G consiste em encontrar um subconjunto de vértices de G que constituam uma cobertura de vértices em G e, para todos os vértices da cobertura, a soma de seus pesos seja

Encontrar uma cobertura de arestas em um grafo sem características particulares é

polinomial

A cobertura mínima de arestas pode ser pode ser solucionada em (Micali & Vazirani, 1980)

Encontrar uma cobertura com vértices ponderados em um grafo sem caracterí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

(1) Grafo G

(2) Cobertura C1 = {3}

(4) Grafo G

295

(3) Cobertura C2 = {1,2,4,5}

(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 Figura 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értices. 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

Cobertura em Caminhos de G Uma cobertura em caminhos em G é um conjunto de caminhos disjuntos em vértices – sem vértices em comum – que passam por todos os vértices de G.

Cobertura em Ciclos de G Uma cobertura em ciclos em G é um conjunto de ciclos disjuntos em vértices – sem vértices em comum – que passam por todos os vértices de G.

Cobertura em L-Ciclos Uma cobertura em L-ciclos é uma cobertura em que o comprimento de cada ciclo está no conjunto L.

Cobertura em k-Ciclos Trata-se de um caso especial de L-ciclos. Uma cobertura é dita k-ciclos quando o comprimento de cada ciclo deve ser de pelo menos k. Se k = n, então tem-se o ciclo hamiltoniano.

297

No caso de grafos direcionados L  {2,3,...} e a cobertura em k-ciclos, k = 2 é polinomial (Ahuja et al., 1993). Para k ≥ 3 o problema em grafos direcionados é NP-completo (Garey & Johnson, 1979). No caso de grafos não direcionados, L  {3,4,...}. Nesses grafos, a cobertura em k-ciclos, k = 3 pode ser solucionada em tempo polinomial (Edmonds, 1965). Hartivgsen (1984) apresenta algoritmos polinomiais para os problemas com k  =  4,5. Vornberger (1980) mostra que o problema em grafos não direcionados é NP-completo para k > 5.

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 removidas 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 Figura 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).

Cobertura Mínima em Caminhos de G Determinar a menor coleção possível de caminhos disjuntos que percorra todos os vértices de G. O problema também é denominado de particionamento no menor número de caminhos disjuntos em vértices.

A determinação de uma cobertura mínima em caminhos em um grafo G é

NP-Difícil

A Figura 5.4 ressalta que uma cobertura mínima em caminhos em um grafo hamiltoniano é um caminho hamiltoniano. Golumbic (1980) demonstra que o problema é NP-Difícil. Bui et al. (1987) e Plaisted (1990) apresentam heurísticas para o problema, e Jin & Li (2006) abordam o problema das k-coberturas em grafos cactos.

(1) Grafo G Figura 5.4 Cobertura em caminhos em um grafo hamiltoniano

(2) Uma cobertura em caminhos

CAPÍTULO 5  Subconjuntos de vértices e arestas

Partição em Caminhos k-longos O problema da cobertura mínima com caminhos disjuntos com no máximo k vértices – partição k-longa – consiste em, dado um grafo G, determinar a cardinalidade mínima da coleção de caminhos disjuntos em vértices com no máximo k vértices que particionam G.

299

Encontrar uma partição k-longa em um grafo G é

NP-Difícil

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

Cobertura Parcial Máxima 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.

Determinar uma cobertura parcial máxima em 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 algoritmo primal-dual e 2-aproximado com complexidade em tempo de O(nlogn+m).

Cobertura Conexa de Vértices O problema consiste em determinar uma cobertura de vértices que induz um subgrafo conexo em G.

Determinar uma cobertura conexa de vértices mínima 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 induzidos 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

(1) Grafo G

(2) Subgrafo induzido pela cobertura C1

(3) Subgrafo induzido pela cobertura C2

(4) Subgrafo induzido pela cobertura C3

301

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) Uma t-cobertura total de vértices (ou arestas) é uma cobertura S de G tal que cada subgrafo conexo induzido por S possui pelo menos t vértices (arestas).

Número t-Cobertura Total O número de t-cobertura total é a cardinalidade da menor t-cobertura total.

O conceito de t-cobertura total de vértices e arestas é apresentado por Fernau & Manlove  (2009), generalizando o clássico conceito de cobertura de vértices (arestas). Os invariantes são notados por α0,t(G) 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 Um subconjunto N’N de tamanho t é denominado T-clique se ele induz um subgrafo completo.

w(G)

Existem O(3n/3) cliques maximais distintas em um grafo com n vértices. (Moon & Moser, 1965)

Clique Maximal e Máxima U clique Uma li é maximal i l se não ã for f subgrafo b f próprio ó i de d nenhuma h outra. Uma clique é dita máxima se não houver outra clique em G com cardinalidade maior.

w(G)

A determinação da clique máxima é um problema

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

(4) Clique 3-5-6

(5) Clique 4-5-6

303

(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) analisam 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 Uma cobertura de clique de um grafo G é um conjunto de subgrafos completos de G que contém cada aresta de G pelo menos uma vez.

Número Cobertura de Clique

cc(G)

O número de cobertura de cliques – cc(G) é a cardinalidade da menor cobertura de cliques de G.

Cobertura de Cliques Mínima

Determinar uma cobertura de clique mínima em um grafo G é

NP-Difícil Decidir se um grafo G tem uma partição em k cliques é:

NP-Completo

Uma cobertura de cliques é dita mínima quando possui sua cardinalidade igual a cc(G). ( )

Partição em Cliques 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 alguma clique.

Número de Partição de Cliques

cp(G)

O número de partição de cliques – cp(G) é a cardinalidade da menor partição de cliques de G.

Partição de Cliques Mínima Uma partição de cliques é dita mínima quando possui sua cardinalidade igual

(1) Grafo G Figura 5.9 Cobertura de cliques

Uma partição de cliques mínima não contém cliques de comprimento 1. Observar que a partição em cliques e cobertura de cliques são conceitos muito próximos, todavia distintos. Na cobertura de cliques uma aresta de G pode ser incluída em mais de uma clique, o que não ocorre na partição. A Figura 5.9(2) apresenta uma cobertura de cliques do grafo da Figura 5.9(1). Observe a repetição da inclusão das arestas 3-4 e 8-3, por exemplo.

(2) Cobertura de cliques

CAPÍTULO 5  Subconjuntos de vértices e arestas

(1) Grafo G

305

(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 – cobertura 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 cobertura, 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 dominante quando para todo x  N existe w  Dˆ tal que x  Γ(w) ou x  Dˆ . O conjunto de todos os conjuntos dominantes de vértices do grafo G é notado por Dˆ (G). Como o conjunto N é uma solução trivial do problema, a noção de conjunto dominante é minimal e pode ser expressa pelo parâmetro b0(G).

b0

Determinar o conjunto dominante de mínima cardinalidade em um grafo G sem características particulares é

NP-Difícil

As Figuras 5.11(2) e (3) exibem conjuntos dominantes do grafo da Figura 5.11(1). No caso, o conjunto domiˆ As Figuras 5.11(3) e (4) exibem uma comparação nante de mínima cardinalidade corresponde ao conjunto D. entre um conjunto dominante e uma cobertura de vértices para o grafo da Figura 5.11(1). Observar em azul as ˆ 1. arestas não cobertas pelo conjunto dominante D

(2) Conjunto Dˆ 1 = {a,d}

(1) Grafo G

(4) Cobertura

(3) Conjunto Dˆ 2 = {f}

(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 desconexos (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 dominantes 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, existe o arco (v,w). O escore de v é o número de vértices dominados por v. O in-escore de v é o número de vértices que dominam v.

Um torneio é um grafo direcionado cujo grafo subjacente é completo. Em um torneio existe um arco entre cada par de 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 domina 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 utilizando 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 em um arco.

Vértices rei O vértice 3 da Figura 5.14(1) é um imperador.

CAPÍTULO 5  Subconjuntos de vértices e arestas

309

Conjunto Independente Dados um grafo G = (N,M) e um conjunto I  N, I é dito um conjunto independente ou um conjunto de estabilidade de G quando para todo x  N e s  I, se x  Γ(s), então x  I. Alguns autores denotam o conjunto de todos os conjuntos 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).

a0

Um grafo G é dito bem coberto se todo conjunto independente maximal de G possui a mesma cardinalidade. Determinar o número de estabilidade de um grafo é

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 Denomina-se k-packing de G um conjunto υ de vértices tal que todo par de vértices u, v  υ tem distância d(u,v) > k. O conjunto de todos os k-packings de G é denotado por PK(G). A noção de k-packing é maximal e pode ser expressa pelo parâmetro b1(G).

b1

Um conjunto independente de um grafo G é um 1-packing de G. Para todo k-packing, k > 1, se dois vértices u e v  υ, então Γ(u)  Γ(v) = . Determinar um k-packing maximal em G é

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 Dado um grafo G = (N,M), um emparelhamento em G – ou matching em G, é definido pelo conjunto E de arestas tal que nenhum vértice de G seja incidente em mais de uma aresta de E. O conjunto de todos os emparelhamentos de G será denotado por E(G). Como um conjunto vazio de arestas é um emparelhamento trivial, a noção de emparelhamento é maximal e pode ser expressa pelo parâmetro a1(G).

O conceito análogo à propriedade de boa cobertura considerado em relação às arestas é denominado equimatchable ou bem emparelhado. Um grafo é dito bem 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

(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

311

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 redes

O(n2,5) – grafos bipartidos

Gabow (1976)

Evitando a contração explícita de ciclos ímpares no algoritmo de Edmonds (1965)

O(n3)

Lawler (1976)

Evitando a contração explícita de ciclos ímpares no algoritmo de Edmonds (1965)

O(n3)

Micali & Vazirani (1980)

Minimização do caminho aumentante e uma técnica especial de rotulação

O(mn0,5)

Papadimitriou & Steiglitz (1982)

Expansão e contração de “blossoms” e rotulação de caminhos aumentantes

O(n4) e O(n3)

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 (Kotzig, 1955)

O(mlog4n) e para grafos planares O(nlogn)

Tabela 5.1 (2): Algoritmos para solução do matching em grafos Algoritmos Aproximativos Trabalho Iri et al. (1981)

Técnica Utilizada

Complexidade

Bartholdi III & Platzman (1982)

Vários algoritmos de aproximação linear – aplicados na elaboração de mapas de Tokio Curvas de Sierpinski e Hilbert

Avis (1983) Iri et al. (1983)

Revisão de vários algoritmos Curvas de Hilbert / enquadramento espiral

O(n) O(nlogn) – tempo esperado linear (vários) 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 emparelhadas.

Considerando o emparelhamento mostrado na Figura 5.17(6) do grafo G da Figura 5.17(4), um caminho alternante 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 emparelhamento 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 apresentado 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.

Grafos

314

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).

Edmonds

A 1 2 3 4

Ler G = (N, M) Determinar um emparelhamento E. Encontrar um caminho aumentante P em G em relação a E. Se um caminho aumentante foi encontrado, expanda o emparelhamento e volte ao passo 2. 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 aumento 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 saturado 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 é encontrado, 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 descendente é 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 é emparelhado (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 blossom. 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 lista 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 procedimento 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

(13) Blossom X3

(14) Grafo reduzido por X2

317

(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 soma dos custos de suas arestas é mínima.

Polinomial

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 triangular. 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 Um k-fator de um grafo G = (N,M) é um subgrafo gerador k-regular de G.

Decidir se um grafo possui um 3-fator é

NP-Completo Um grafo é (k,r)-fator-crítico se a remoção de algum conjunto de r de vértices resultta em um grafo k-fator.

O 2-fator é uma coleção dos 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

(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

319

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 Decomposição de G em subgrafos H Diz-se que o grafo G possui uma H-decomposição, onde H é um subgrafo de G, quando existe um conjunto L de grafos isomorfos a H em que cada aresta de G aparece exatamente em um membro do conjunto L.

Dor & Tarsi (1997) provam que a decomposição de um grafo G em subgrafos é NP-completo. 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áximo divisor comum dos vértices de G (grafo de linha de G).

Decomposição de G em árvore

A largura da árvore de decomposição é dada por max{|Xi|, i  I } – 1.

Dado um grafo G = (N, M) não direcionado, uma decomposição em árvore de G é um par ({Xi | i  I}, T), onde cada Xi é um subconjunto de N denominado "bag", e T é uma árvore com os elementos de I como vértices. Em uma decomposição em árvore do grafo G as seguintes propriedades devem ser verificadas:

A largura arbórea (treewidth) do grafo G é o menor inteiro k para o qual G possui uma árvore de decomposição com largura k.

1. UiI Xi = N 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.

Decidir se um grafo G tem uma decomposição em árvore com largura k é

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 Figura 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 árvore. 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

(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

323

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

Conjunto Estável

A

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 primeiro 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 ilustradas 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

(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

5.7 Algoritmo para Cobertura de Vértice

O(m+nlogn)

325

326

Grafos

Com uma pequena alteração no algoritmo do quadro Conjunto Estável é possível elaborar um algoritmo construtivo para o problema da cobertura de vértices. O algoritmo está descrito no quadro Cobertura de Vértices.

Cobertura de Vértices

A 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

(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)

327

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 exemplo 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, admitindo 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 separadamente 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) demonstraram 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 hospedada. 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. Basicamente, 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 fisicamente 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 mesma 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) exemplifica 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 Grafo Sanduíche Dados um grafo G1 =(N1,M1) e um grafo G2 =(N2,M2), onde G2 é um supergrafo de G1. Um grafo G3 é dito sanduíche de G1 e G2 em relação à propriedade p se M1  M3  M2.

A Figura 5.46(3) exibe um grafo sanduíche dos grafos das Figuras 5.46(1) e (2) em relação à propriedade de planaridade. Os grafos sanduíche possuem várias 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 Um grafo k-potência de G, denotado por Gk, é um supergrafo de G formado pela adição de uma aresta entre todos os pares de vértices de G que possuem distância pelo menos igual a k.

(1) Grafo G

(2) Grafo 3-potência

A Figura 5.47(2) exibe o grafo potência 3 do grafo da Figura 5.47(1). A Figura 5.47(3) exibe o grafo 2-potência ou quadrático de G.

(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 Denominado subgrafo aresta-removido o subgrafo obtido pela remoção de 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.

A Figura 5.48(2) exemplifica o deck do grafo da Figura 5.48(1).

CAPÍTULO 5  Subconjuntos de vértices e arestas

(1) Grafo G

341

(2) Deck de G

Figura 5.48 Grafo deck

Grafo Reconstrução Qualquer grafo H com o mesmo deck de G é denominado uma reconstrução de G. Se toda reconstrução de G é isomórfica com G, G é denominado reconstrutível.

(1) Grafo G

A Figura 5.49(2) apresenta um exemplo de um grafo reconstrução do grafo da Figura 5.49(1). Associado ao problema da reconstrução, enuncia-se a conjectura que se segue à Figura 5.49.

(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

(G)

Dado um grafo não direcionado G, κ(G), o grafo simplex de G possui um vértice para cada clique de G e existe uma aresta entre dois vértices de κ(G), se as cliques correspondentes forem comparáveis e diferirem em no máximo um vértice. Duas cliques C1 e C2 são comparáveis se C1  C2 ou C2  C1.

Uma clique de ordem n + 1 é chamada por alguns autores de n-simplex. O conceito vem da Geometria, onde um n-simplex é definido como um politopo 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, mostrado 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 ordem 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

(4) 3-cliques Figura 5.50 Simplex de um grafo

(2) 0-clique e 1-cliques

(3) 2-cliques

(5) κ(G)

CAPÍTULO 5  Subconjuntos de vértices e arestas

Grafo Split (Grafo Dividido) Um grafo não direcionado G = (N,M) é dito split quando existe uma partição nos vértices de G tal que N = S  K, S  K =  e, adicionalmente, S é um conjunto independente e K forma uma clique em G.

(1) Grafo split

343

A Figura 5.51 apresenta um grafo split (conhecido também como grafo dividido) destacando os conjuntos S e K.

(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 Um grafo G = (N, M) é um grafo probe de uma família de grafos de G se o conjunto de vértices de G pode ser particionado em um conjunto P de vértices denominados vértices probe, e um conjunto independente S de vértices denominados não probe, tal que G pode ser incorporado em um grafo G, adicionando arestas entre vértices certos de S.

O grafo é dito probe se: 1. O conjunto S é independente em G. 2. O conjunto de arestas M  (P × N).

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

Um grafo é dito extremal (EG) se é o maior grafo de ordem n que não contém um dado grafo G como subgrafo (Goodman, 1959).

Grafo de Turán É um grafo extremal que não contém Kp como subgrafo.

(1) Grafo G

(2) Um grafo extremal de G

A Figura 5.53(2) exibe um grafo extremal do grafo da Figura 5.53(1). A Figura 5.53(3) exibe um grafo de Turán para K4.

(3) Um grafo Turán p = 4

Figura 5.53 Grafo extremal e de Turán

Grafo Gaiola Um grafo é denominado grafo (v, g)- gaiola quando é o menor grafo v-regular que possui cintura g.

A Figura 5.54 apresenta dois grafos gaiola completos.

CAPÍTULO 5  Subconjuntos de vértices e arestas

(1) K4 – (3,3)-gaiola

345

(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 (3,5)-Gaiola

(2) Grafo de Heawood (3,6)-Gaiola

(3) Grafo de Robertson Wegner (5,5) Gaiola – 30 vértices

(4) Grafo de Foster (5,5) Gaiola

(5) Grafo de Meringer (5,5) Gaiola

(6) Grafo de Wong (5,5) Gaiola

Grafos

346

(7) Grafo de Tutte-Coxeter (3,8) Gaiola

(8) Grafo de McGee (3,7) gaiola

(9) Grafo de Balban (3,10) gaiola com 70 vértices

Figura 5.55 Grafos gaiola

Grafo Circular É um grafo obtido pela interseção de cordas no interior de um círculo. Cada corda é representada por um vértice. Cada interseção é representada por uma

(1) Cordas no círculo

A Figura 5.56 exemplifica a formação de um grafo circular.

(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

              

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

347

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 decidiu 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 paraquedas é 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 representada 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 empregará 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 trabalhar 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 grupo 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 maximiza 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

Águia

Galo

Mico

X

X

Paca

Tigre

Ema

Anu

Cotia

Ganso

Preá

Lebre

X

X

X

X

X



Bode

X Galo

X Mico

X Tigre

X X Ema

X X

X X

X X X

Anu

Hiena

X X X

Cotia Ganso

X X X X

X Preá Lebre

X Rã Bode

Exercício no 8

X Hiena

Grafos

352

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. 2. 3. 4. 5. 6. 7.

estava no jardim momentos antes do crime. comeu bolo antes de atirar na vítima. usava um relógio analógico. gosta de jogar cartas. gosta de animais. usava roupas sintéticas no momento do crime. 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 laborató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 perguntou 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 preferê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 subgrafo 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.

Conjunto Conector Mínimo U conector Ct* de Um d um grafo f G = (N (N,M) M) é mínimo í i se não ã existe i outro conector Ct  M tal que |Ct| < |Ct*|.

Conjunto Conector Mínimal Um conector Ct# de um grafo G = (N,M) é mínimal se não existe outro conector Ct  M tal que Ct  Ct#.

Prove também: 1. que um conjunto conector mínimo é sempre uma árvore e uma árvore é sempre um conector mínimo. 2. que um conector minimal é também mínimo.

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:

5.6: 5.7:

5.8: 5.9:

1. G possua um conjunto independente de tamanho a. 2. Possua exatamente k componentes. 3. Seja desconexo. Para um grafo G = (N, M), prove que: χ(G) + χ(G)  |N| +1. 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. Demonstre que um grafo bipartido k-regular, k 1, pode ser decomposto em k emparelhamentos perfeitos em G. 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 dependê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 determinar 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 coordenação e distribuição de vacina. O objetivo do plano é determinar quais postos primários serão usados també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 escaninhos 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 escaninho 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

7:00

*



8:00

*

*

9:00

*

10:00

03

04

05

06

07

08

09

10



*





*





*



*





*





*

*





*



*



*

*

*







*

*



*

*

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 chamada. 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 unidade 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 elemento 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 livremente 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 quadrada 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 geometria 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 intercaladamente 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 permitirá 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ículas, 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 qualquer 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 escolhas 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 aliení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 tirantes

(c) Uma solução viável

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, considerando 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 reservas. 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

04

10

4

16

21

20

05

15

5

17

15

8

06

18

9

18

15

10

07

13

7

19

17

16

08

14

6

20

22

20

09

18

8

21

21

10

10

21

18

22

22

11

11

14

10

23

22

10

12

18

15

24

25

10

Defesa

Meio-campo

Ataque

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 esquema 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 calor. 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 sentidos – 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 anteriormente; 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 integraçã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 Journal 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: Proceedings 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 Communication 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 Systems 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 Journal 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

CAPÍTULO 6  Fluxo em redes

367

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 Uma rede R = (V,E,F,U) é definida como um grafo direcionado G = (V,E) atravessado por um fluxo. O fluxo F pode ser representado por F = {f1, f2,..., fm} circulando pelos m arcos da rede ou por F = {f(i,j)}, (i,j)  m. O conjunto U = {u(i,j)}, (i,j)  m é o conjunto dos limites de fluxo associados aos arcos de E.

f(s,t) Fonte

u(s,t)

s

Sumidouro

t

A distribuição dos produtos de uma rede não é realizada obrigatoriamente de um ponto de produção a um ponto de demanda, permitindo-se que pontos intermediários, tais como depósitos ou centros de concentração e distribuição, sejam utilizados. As interligações podem possuir restrições de capacidade de tráfego e custos variados. Os arcos de uma rede podem ser sempre considerados 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. O fluxo do conjunto X para o conjunto Y, sendo denotado como f(X,Y), pode ser obtido pela expressão:

Considerando a rede da Figura 6.1(1) com X = {x1,x2} e Y = {x4,x5}. As Figuras (3) e (4) exemplificam 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 exemplifica 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

(3) f(X,Y) = f(x1,x4) + f(x1,x5)

369

(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 artificial 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: 1. É conservativo 2. Atende as seguintes condições:

u(i,j)  u(i,j), u(i,j) ≤ fij ≤ u(i,j), 0 ≤ u(i,j) ≤ u(i,j)

i,j  N tal que: fij  F

A Figura 6.7(2) exemplifica um fluxo viável para a rede da Figura 6.7(1). Os valores dos rótulos marcam o valor do fluxo mínimo e máximo no arco. Os valores em vermelho são os fluxos associados.

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 Dantzig (1951) Ford & Fulkerson (1956) Dinitz (1970) Edmonsds & Karp (1972) Dinitz (1973); Gabow (1985) Karzanov (1974) Cherkassky (1977) Malhotra et al. (1978) Galil & Naamad (1980) Shiloach & Vishkin (1982) Sleator & Tarjan (1983) Goldberg & Tarjan (1986)

Técnica utilizada SIMPLEX Caminhos de aumento de fluxo Fluxo forçado em uma rede em camadas Caminhos de aumento de fluxo Técnicas de escala e redução de resíduos Fluxo forçado em uma rede em camadas Fluxo forçado em uma rede com procedimentos de re-rotulação Fluxo forçado em uma rede em camadas Path compression Programação paralela com n processadores Estrutura de dados dinâmica Push-Relabel Method

Goldberg & Tarjan (1987); (1988)

Highest Label FIFO Algorithm Lowest Label

Ahuja & Orlin (1989)

Original Excess-scaling

Ahuja et al. (1989)

Dynamic Trees and Scaling Factor

Cheriyan & Hagerup (1989)

Algoritmo Aleatorizado

Cheriyan et al. (1990)

Incremental Excess-scaling

Alon (1990)

Permutações Pseudoaleatórias

Complexidade 2

O(n mU) O(mnU) O(nm2) e O(mn2) O(nm2) e O(m2logU) O(mnlogU) O(n3)

O(n3) O(|m| |n|Iog2n) O(n2log(n)) O(mnlogn) O(mnlog(n2/m)

O(n3) O(n2m) O(mn+n2logU)

E(nm+n2log2n)

O(mn+n8/3logn)

Stack-scaling Ahuja et al. (1991)

Wave-scaling King et al. (1992)

Versão determinística do algoritmo de Cheriyan et al. (1990)

O(nm + n2+ε)

CAPÍTULO 6  Fluxo em redes

Tabela 6.1 (2): Algoritmos para determinação de fluxo máximo em redes

Trabalho

Técnica Utilizada

Complexidade

Phillips & Westbrook (1993)

Algoritmo baseado na melhoria do algoritmo de King et al (1992) usando a técnica de node kill game.

O(mnlogm/nn+n2log2+εn)

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

373

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. 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 na rede da Figura 6.9(1).

Capacidade de um Corte s-t

A Figura 6.9(2) exemplifica um corte s-t com X = {s,1,2} e X = {3,4,t}.

É o somatório dos limites dos fluxos associados aos arcos do corte. É definida de X para X. As expressões que seguem calculam a capacidade de um corte s-t.

A capacidade do corte assinalado é: 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 fluxo líquido através do corte s-t é o resultado do balanço do fluxo de X para Y e de Y para X, conforme a expressão abaixo: fL = f(X, Y) – f(Y, X) A capacidade líquida do corte s-t é o resultado do balanço de capacidades dos arcos do corte, conforme a expressão abaixo: uL = u(X, Y) – u(Y, X)

O conceito de fluxo máximo em uma rede está associado ao conceito de fluxo líquido máximo e capacidade líquida máxima de um corte em uma rede R. Como é possível a existência de diferentes cortes s-t em uma rede, o fluxo máximo está associado ao corte de menor capacidade líquida 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 podem 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 Um grafo de aumento de fluxo G = (Vf ,Ef ) possui somente arcos simples sendo construído da seguinte forma:

A Figura 6.11 exemplifica um grafo de aumento de fluxo, as folgas ξ(x, y) e ξ(x, y) e os arcos utilizáveis. A rede do grafo 6.11(1) é tomada por base do exemplo. Os rótulos marcam a capacidade mínima e máxima dos arcos.

1. (x, y)  Ef se (x, y)  E e f (x, y) < u(x, y) 2. (y, x)  Ef se (y, x)  E e f (x, y) > u(x, y)

Folga de um Arco

A Figura 6.11(2) rotula somente o fluxo f = 8 unidades.

Uma folga do arco (x, y) é obtida da seguinte forma: 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 Dados dois vértices x e y, sendo x rotulado e y não rotulado, um arco a é utilizável em duas situações: a = (x,y), dito arco direto, ou a = (y,x), dito arco reverso. Observe que esse conceito diz respeito ao funcionamento dos algoritmos de

A Figura 6.11(4) exemplifica o grafo de aumento de fluxo associado ao fluxo de 8 unidades da Figura 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 sequê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 algoritmo 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, respectivamente, 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 processamento 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

(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

379

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 mostrado 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 rotulaçã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, alternadamente, 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 encontrar 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áximo F&F

CAPÍTULO 6  Fluxo em redes

Complexidade

381

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értices 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 modificaçã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 modificado é 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 encontrados 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 caminho_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 mesmo 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 escoadas 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úmero 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, podendo 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 é removido 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 complexidade 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. Considerando 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 chegam 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 é mostrado 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 é desconectada. 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

(1) Fluxo na rede R no início da 2a iteração

387

(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 é realizada 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 atualizados é 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)

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.

O(n3)

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 resolvido 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. É construí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 descrito 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,

Circulação

A 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 vértice i  V. ■

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 transporte é 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 demanda 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, respectivamente, 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

Aproveitamento de Capacidade Carga

393

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 capacidade 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.

Grafos

394

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

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).

395

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 hamiltoniano. 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 associada à 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 3 operações

Peça 2 1 operação

Peça 3 1 operação

Peça 4 1 operação

Peça 5 2 operações

Torno 1

X

X

X

X

Torno 2

X

X

X

Torno 3

X

X

X

X

Torno 4

X

X

X

X X

Exercício no 4 Uma operadora de telefonia celular deseja otimizar o atendimento de seus clientes sobre a rede de retransmissores 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 compare 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 – alternativas 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, ascendentes 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 casal, 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çada (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:

6.2:

Definindo um arco v-w de uma rede R como vital se, quando removido da rede, ocasiona o maior decréscimo 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. 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 capacidade 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

6.3: 6.4:

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. 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. 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 mundial, os embaixadores de um mesmo país nunca devem sentar-se na mesma mesa. No jantar estarão presentes 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:

6.9:

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. 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 demanda 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 estudo, 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 fluidos 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 mesmo 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 viabilidade 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, determine 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 conservativo. 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 malha 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 associados 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 suporta 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á realmente 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 bipartido 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 associada 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 determinar 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 considerado. 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 proposto 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 =  Escrever M*

Por Fluxo Máximo

Grafo de aplicação

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 trecho 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:175219. 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 Processing 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 Computing 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,118123. Cheriyan, J., Hagerup, T. & Mehlhorn, K. (1990). Can a maximum flow be computed in O(nm) time In: Proceedings 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.). Activity 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 Systems 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 replenishment. 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 construction. Ecological modeling 208:49-55. Feng, H., Liu, Z., Xiab, C. H. & Zhang, L. (2007). Load shedding and distributed resource control of stream processing 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:399404. Gabow, H. N. (1985). Scaling algorithms for network problems. Journal of Computer and system Sciences 31:148168. 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 Symposium 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 Symposium 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, Operations 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 Communication 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 Geometry 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 ACMSIAM 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 Computer 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 Process. 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. Metallurgist 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. Computers and Electrical Engineering 33:285–298. Peters, B. & McGinnis, L. F. (2000). Modeling and analysis of the product assignment problem in single stage electronic 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 performance 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. Reading, 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. International 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. Production Economics 102:317-332. Zhang, T., Jain, S. & Loguinov, D. (2009). Towards experimental evaluation of explicit congestion control. Computer Networks 53:1027-1039.

capítulo

CAPÍTULO 7  Coloração e grafos perfeitos

415

Grafos

416

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 cromático igual ao tamanho de sua maior clique.

(1) Grafo 1

Grafo Buraco e Anti-Buraco 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 antiburacos í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 grafos buracos.

(3) Grafo 3

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:

Para todo subgrafo induzido G⬘ de G tem-se

χ(G⬘) = w(G⬘) e a(G⬘) = k(G⬘)

Nos grafos perfeitos os problemas de coloração, clique máxima e máximo conjunto independente podem ser solucionados em tempo polinomial.

CAPÍTULO 7  Coloração e grafos perfeitos

Grafos Fracamente Perfeitos Os grafos em que χ(G) = w(G) são chamados de fracamente perfeitos.

417

Os grafos fracamente perfeitos também são denominados trivialmente perfeitos. As Figuras 7.3(1)(3) exemplificam grafos perfeitos e fracamente perfeitos. As Figuras 7.3(4)-(6) exibem grafos não perfeitos.

(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 é perfeito é um problema

Polinomial Algumas famílias de grafos perfeitos são apresentadas no quadro ao lado.

Famílias de Grafos Perfeitos – Grafos bipartidos e grafos de linha de grafos bipartidos – Grafos intervalares e grafos cordais – Grafos de comparabilidade – Grafos de Meynies (definição no Capítulo 6) – Grafos split (definição no Capítulo 6) – Co-grafos

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.

Número Cromático

(G)

É o menor número de cores que pode ser utilizado para uma coloração própria de um grafo G. É notado como χ(G).

Em uma coloração própria todos os vértices adjacentes do grafo possuem cores diferentes.

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

(1) Grafo G

419

(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á relacionado 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)

Grafos

420

Alguns limites simples para o número cromático de um grafo são:

Teorema 7.5 Para um grafo G, tem-se que χ(G) ≤ D(G) + 1.

Teorema 7.6 Para um grafo G, tem-se que χ(G) ≥ ω(G).



(G) denota o máximo grau do grafo G.

(G) denota o tamanho da 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 algoritmos 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 Um homomorfismo elementar em um grafo é a contração de dois vértices não adjacentes (Harary, 1972, pg 143). Um homomorfismo em G é uma sequência de homomorfismos elementares.

G⬘ = Φ(G) é dita imagem homomórfica de G. Um homomorfismo é completo 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

Homomorfismo Máximo Dados um grafo G = (NG ,MG) e um grafo alvo H = (NH ,MH), o problema consiste em determinar um mapeamento ϕ : NG → NH que maximize o número de arestas de G que são mapeadas pelas arestas de H.

Encontrar um homomorfismo máximo em um grafo G é

NP-Difícil

Homomorfismo de Mínimo Custo Dados grafos G = (NG , MG) e H = (NH ,MH), o mapeamento anteriormente definido 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 mínimo custo é aquele que acumula a menor soma dos custos associados ao mapeamento de um homomorfismo máximo.

Determinar um homomorfismo de mínimo custo em um grafo Gé

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 para quaisquer duas cores da p-coloração existem dois vértices vizinhos coloridos com tais cores no grafo G.

Número Acromático

Determinar a maior coloração completa de um grafo é

NP-Difícil

(G)

A maior ordem de um homomorfismo completo é um invariante de um grafo, dito número acromático Ψ(G).

(1) Grafo G1

(2) Grafo G2

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értices vizinhos coloridos com as cores 2 e 4. Observa-se que a coloração exibida pelo grafo G1 da Figura 7.8(1) é induzida por um homomorfismo completo, onde os vértices coloridos com a cor 2 estariam contraídos. Conforme a Figura 7.8(2) mostra, a contração dos vértices 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 Figura 7.9 Número acromático

(2) Contração 5/6

(3) Contração (5/6)/4

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 harmoniosa em um grafo G é

Número Cromático Harmonioso É o número mínimo de cores necessário à uma coloração harmoniosa em G.

Coloração Exata Uma coloração exata é uma coloração própria em que cada par de cores aparece exatamente uma vez em cada par de vértices adjacentes em G.

NP-Difícil Uma coloração exata é uma coloração harmoniosa e completa.

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 completa. 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.

Grafo Crítico 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 vértice-crítico se (G) > (G-v), qualquer que seja o vértice v G. 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

(3) Remoção de vértice I χ(G) = 3 Figura 7.11 Grafo G crítico

(2) Remoção de vértice E – χ(G) = 3

(4) Remoção de aresta E χ(G) = 3

(5) Remoção de aresta I χ(G) = 3

CAPÍTULO 7  Coloração e grafos perfeitos

425

Teorema 7.7 Todo grafo completo é crítico.

Coloração Forte Dado um conjunto de partições disjuntas (onde os conjuntos não possuem vértices em comum) em vértices de G com cardinalidade k, uma coloração forte de G é uma coloração própria em que cada cor aparece exatamente uma vez em cada possível partição.

Coloração Fraca É uma coloração não própria de G em que cada vértice é adjacente a pelo menos um vértice de cor diferente.

Número Cromático Forte

S(G)

É o número mínimo de cores necessário à uma coloração forte em G.

O número cromático forte foi sugerido por Alon (1988) e Fellows (1990). Alon (1992) demonstra várias propriedades deste invariante.

Uma 2-coloração fraca determina uma partição nos vértices de G em dois conjuntos dominantes. Todo grafo possui uma 2-coloração fraca.

Schmidt-Pruzan et al. (1985) abordam 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 Sχ(G) > D(G) e Sχ(G) ≤ 3 D(G) – 1 (Haxell, 2004)

Uma k-coloração fraca em um hipergrafo é uma coloração de vértices tal que não existam arestas monocromáticas

As Figuras 7.12(2)-(11) exibem dez partições de vértices do grafo da Figura 7.12(1) e suas colorações associadas. 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 Figura 7.12 Exemplo de uma 4-coloração forte

(11) 10a partição

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 forma que duas arestas incidentes ao mesmo vértice recebam cores distintas.

Número Cromático Forte

1(G)

O número mínimo de cores capaz de colorir as arestas de um grafo v G atendendo as exigências anteriores é denominado índice cromático ou χ1(G).

NP-Difícil A Figura 7.14(1) exemplifica uma coloração de arestas. Os números sublinhados representam as cores 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 Pode-se colorir um grafo de modo que a vértices e arestas sejam atribuídos cores de forma que dois elementos incidentes ou adjacentes recebam cores diferentes.

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).

Encontrar uma coloração total em um grafo G com o mínimo de cores possível é

NP-Difícil A Figura 7.14(2) exemplifica uma coloração total.

428

Grafos

(2) Coloração total

(1) Coloração de arestas 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.

Coloração Total Distinta em Vértices Adjacentes É 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-

Encontrar uma coloração total distinta com o mínimo número de cores em um grafo G é

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)

O grafo de total, To(G), é um grafo To que possui um vértice para cada vértice de G e um vértice para cada aresta de G (vértices do grafo L(G) – grafo linha de G). Um par de vértices de To(G) é adjacente, se os vértices ou arestas correspondentes em G forem elementos adjacentes ou incidentes em G.

A Figura 7.16(3) mostra a construção do grafo total do grafo K3 exibido na Figura 7.16(1).

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

(4) Arestas unindo os vértices do grafo L(G) a G

(3) Construção de L(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 numé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ências f(x) sobre as quais eles possam operar. Para esse conjunto de transmissores é definido um grafo de interferência 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 transmissores. 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 A T-coloração de um grafo é definida como uma função f:N →  que satisfaz a expressão: (x1, xj)  A  |f (x1) – f (x2)|  T

Número T-Cromático

t(G)

O número T-cromático é definido como sendo a menor ordem de uma T-coloração, sendo notado por χt(G).

Encontrar uma T-coloração de ordem mínima em um grafo G é

NP-Difícil A Figura 7.17(3) mostra a construção do grafo total do grafo 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 alocaçã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-coloraçã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) desenvolvem 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 frequê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áximo {|f (x)–f (y)|: x,y  N}.

T-Span

spT(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.

Determinar o T-span em um 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 algoritmos evolucionários e busca tabu.

432

Grafos

Grafo k Comprimento de Banda Um grafo G = (N, M) é dito de k comprimento de banda se existe uma rotulação do conjunto de vértices h: N → { 1,2...,|N| } tal que se a aresta (u, v)  M então |h(u)–h(v)| ≤ k.

O grafo k comprimento de banda possui claramente pontos em comum com o T-span.

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ção em um grafo G é

(k, d)-Coloração 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, ||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 é definido como sendo a menor ordem de uma (k,d)-coloração, sendo notado por χ*(G).

NP-Difícil

O número star-cromático é também denominado número cromático circular.

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 inteiros 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úmero 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:

|c(u) – c(v)| + D(u, v) ≥ n – 1 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.

Número Cromático Hamiltoniano

Encontrar uma coloração hamiltoniana em um grafo G é

NP-Difícil

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 designada 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

Determinar uma (k,d)-coloração de arestas em um grafo G é

(k,d) Coloração de Arestas 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.

Índice Cromático Circular

435

c⬘(G)

O índice cromático circular é definido como χ⬘(G): Inf {k/d: em todas as (k,d)-colorações de arestas}, ou seja, o menor número de cores necessárias a uma coloração própria em arestas.

NP-Difícil Holyer (1981) demonstra a NP-Completude do problema de coloração de arestas. Nakano et al. (1995) apresentam 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 Figuras 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-grafos. Kaiser et al. 2007 calculam o índice em grafos de grande cintura.

(k,l)-Coloração Uma (k,l)-coloração de vértices de um grafo G é uma partição do conjunto dos vértices de G em k conjuntos independentes e l cliques.

Número Cocromático

cC(G)

O número cocromático é definido como χC(G) sendo o menor valor de r para o qual G é (k,l)-colorível para algum par (k,l) com soma r. Alguns autores denominam o número z(G).

Número Bicromático

cB(G)

O número bicromático é definido como χB(G) sendo o menor valor de r para o qual G é (k,l)-colorível para todo par (k,l) com soma r.

(1) Grafo G Figura 7.24 Cocoloração de G

(2) 1a cocoloração de G

Uma (k,l)-coloração é uma coloração imprópria quando l  > 0. Encontrar uma coloração com o menor valor de r para o qual o grafo G é (k,l) colorível para algum par com soma r é

NP-Difícil A Figura 7.24(2) exibe uma cocoloração com r = 4 (três conjuntos independentes e uma clique) enquanto da Figura 7.24(3) uma cocoloração com r = 3. O número cocromático de G é três.

(3) 2a 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 Uma subcoloração de vértices é uma designação de cores aos vértices de G tal que cada classe de cor induz uma união disjunta de cliques.

Número Subcromático

cS(G)

O número subcromático é definido como χS(G) sendo o menor número de cores necessário para uma subcoloração em G.

A subcoloração de vértices foi introduzida por Albertson et al. (1989).

Encontrar uma subcoloração de vértices em um grafo G com o menor número de cores possível é

NP-Difícil

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 Uma subcoloração de arestas é uma designação de cores às arestas de G que induz uma partição disjunta de arestas M1,..., Mr tal que nenhuma delas possui P4 como um subgrafo induzido.

cs⬘(G)

Índice Subcromático

O índice subcromático é definido como χS⬘(G) sendo o menor número de cores necessário para uma subcoloração de arestas em G.

A Subcoloração de Arestas foi introduzida por Fiala & Le (2007)

NP-Difícil

Toda coloração própria de arestas é também uma subcoloração. Claramente a partição de Partição em Estrelas arestas M1, ... Mr é uma r-subcoUma partição disjunta de arestas M1, ..., Mr de um grafo G é uma partição em loração se cada um de seus comestrelas 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

(5) 1o conjunto

(6) 2o conjunto

(7) 3o conjunto

(1) Grafo G

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-subgrafos cromáticos são acíclicos.

A coloração acíclica 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.

Número Cromático Acíclico

A(G)

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.

Determinar a coloração acíclica de um grafo G com o menor número possível de cores é

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 bicoloridas do grafo da Figura 7.28(1).

440

Grafos

(2) Coloração própria acíclica

(3) Amarelo e azul (1 e 2)

(4) Vermelho e amarelo (3 e 1)

(4) Vermelho e azul (3 e 2)

(1) Grafo G

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 comunidade até que Heawood (1860) apresentou um contraexemplo usando um mapa com 18 faces. A prova do teorema 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 (Gonthier, 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 coloraçã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, é denominada 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 adjacentes. É possível visualizar facilmente essa correspondência quando as regiões são representadas por cores e soluciona-se um problema de 6-coloração no grafo de Tietze.

Figura 7.31 Tira de Möbius

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

A

443

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értices). 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 acrescenta 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 caminho com uma adição de aresta e duas contrações consecutivas. O último nível da árvore de enumeração do algoritmo de Zykov contém cliques. Cada clique representando uma coloraçã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értices 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

Grafos

444

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 1

DSATUR 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 11 12 13 14 15

i ← { r | dV(xr) ≥ dV(xs), xr, xs  V } Fim_se k ← min { j | Γ(xi)  Cj =  } Ck = Ck  { xi } V ← V \ { xi } 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 sublinhado. 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. Linha 4. V ← N \ {x5}. Linha 5. C1 ← {x5}

(2) Linha 7. d_sat(x1) = d_sat(x3) = d_sat(x4) = d_sat(x6) = d_ sat(x7) = d_sat(x8) = 1 x1 é escolhido por ter o maior grau no grafo 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 maior grau. Linha 13. V ← N \ {x4} Linha 14. C3 ← {x4}

(4) Linha 7 – d_sat(x2) = d_sat(x3) = d_sat(x7) = 2 x2 é escolhido por ser o de maior grau. Linha 13. V ← N \ { x2} 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 por ser o de maior grau. Linha 13. V ← N \ {x9} Linha 14. C3 ← {x9}

(6) Linha 7 – d_sat(x3) = d_sat(x7) = d_sat(x10) = 2 x7 é escolhido. Linha 13. V ← N \ {x7} Linha 14. C2 ← {x7}

(7) Linha 7 – d_sat(x10) = 3 x10 é escolhido. Linha 13. V ← N \ {x10} Linha 14. C4 ← {x10}

(8) Nas próximas iterações x3 recebe a cor 3, x6 a cor 2 e x8 a 4, chegando à coloração final acima.

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

Complexidade

447

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értice 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).

O(n2)

Heurístico



DSATUR – Trabalhos no Tema

Turner (1988) apresenta uma implementação para o DSATUR em O(mlogn). Janczewski et al. (2001) apresentam o menor 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 (1985)

Correção dos algoritmos de Christofides (1971) e de Brèlaz (1979)

&

Jackowski

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

Herrmann & Hertz (2002)

Enumeração implícita com identificação de subgrafos críticos (modificação do método exato de Peemö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 representam 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 problema da extensão de uma pré-cloração será abreviado como PreExt.

CAPÍTULO 7  Coloração e grafos perfeitos

(1) 1a pré-coloração de G(W)

(2) 2a pré-coloração de G(W)

449

(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 denominase problema de monocoloração.

Determinar o número de absorção cromático em um grafo G sem características especiais é

Número de Absorção Cromático O número de absorção cromático é a menor cardinalidade possível de uma cobertura 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, teria 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. Consequentemente, 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

(1) Quadro inicial com 31 posições preenchidas

451

(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 grafo 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 determinar 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. Considerando 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 Figura 7.42 O problema de alocação de frequência

3. O Problema de Programação de Tarefas

(2) O grafo associado e a solução

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áquinas 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ínimo 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 independam 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 relativamente 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. Consequentemente, 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).

Grafos

454

(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 rejeiçã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 adicionais. As técnicas tradicionais de segmentação encontram várias dificuldades no caso da correspondência: 1. 2. 3. 4. 5. 6.

A correspondência possui enorme variedade de tamanho, cor e textura do papel. A imagem da correspondência pode resultar degradada por manchas, dobraduras riscos etc. Existem restrições de tempo real para o processamento de cada correspondência. Os blocos e caracteres não são nem distribuídos, nem espaçados de maneira uniforme no texto. Existem elementos parasitários como logos, marcas, selos, decorações etc. 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 entrada 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 regionalização do texto, através de características comuns e divergentes, representa a principal ferramenta para a classificaçã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 propriedade 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 correspondem 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 deveriam 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 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)

Plesnik (1981)

Heurísticas baseadas no grafo de distâncias induzido O((n-r)q.r2 +n3) onde 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 É a árvore que maximiza a probabilidade de manter conectado o conjunto Χ de vértices.

Em consequência da definição dessa árvore, suas arestas possuem custos estocás-

Encontrar uma árvore de Steiner com conexão estocástica máxima em um grafo sem propriedades particulares é

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

Árvore de Steiner com Norma Linear Trata-se de um caso particular do problema de Steiner no plano. No caso as coordenadas dos pontos a serem ligados, além de pertencerem a um plano e atender a norma euclidiana geral, atendem a norma euclidiana Lr chamada linear, ou seja:

489

Encontrar uma árvore de Steiner com norma linear mínima em um grafo sem propriedades particulares é

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 Figuras 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.

Grafos

490



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 heurí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ística. Komlos & Shing (1985) desenvolvem duas heurísticas em abordagem probabilística, dividindo os pontos de passagem 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 global. 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.

O Problema de Steiner Generalizado

p

Consiste em determinar um subgrafo k-conexo em G tal que tenha mínimo custo e contenha um conjunto Χ de vértices.

Encontrar o subgrafo k-conexo mínimo que contém um conjunto de  de vértices em um grafo sem propriedades particulares é

NP-Difícil

Esse caso é de ampla aplicação em redes de suprimento de eletricidade, água ou comunicações. Nesses problemas 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 garantido na estrutura de ligação. A solução do problema de Steiner generalizado não é obrigatoriamente uma árvore.

(1) Grafo G

(2) Subgrafo com k = 2

Χ = {1,3,5}

(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. Westbrook & 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.

O Problema de Steiner em Estrela

Encontrar a árvore de Steiner em estrela de menor custo em um grafo sem propriedades particulares é

p

Consiste em determinar uma árvore de Steiner considerando-se que os vértices de Steiner possuem custos associados e os vértices terminais não podem se ligar entre si na árvore.

NP-Difícil O problema é definido por Khuller & Zhu (2002).

Árvore Steiner com Coleta de Bônus

p

O problema do coletor de prêmios em árvore de Steiner ou Prize Collecting Steiner Tree Problem consiste em determinar uma subárvore em G que minimize 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.

Encontrar a árvore de Steiner com bônus em um grafo sem propriedades particulares é

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 associados às arestas e prêmios associados aos vértices do grafo. Essa classe de problemas é também descrita na literatura 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 minimize 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 obtidos 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 classificados 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 demanda 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 Figura 8.10 Árvores de Steiner com orçamento

(2) Orçamento = 8 – retorno 29

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.

Árvore de Steiner Terminal Parcial Considerando um conjunto R  Χ, é a árvore de menor custo em G que liga todos os vértices do conjunto Χ, exigindo-se adicionalmente que os vértices em R sejam sempre folhas da árvore.

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. (Fischettietal.,1994)

Árvore de Steiner com Seleção Interna

Encontrar as árvores de Steiner descritas ao lado, segundo o menor custo em um grafo sem propriedades particulares é

NP-Difícil O problema da árvore de Steiner com seleção interna se reduz ao problema da árvore de Steiner quando R´ = .

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) exemplifica 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 passagem 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}

(3) 1a Árvore Steiner terminal parcial

(2) Árvore Steiner terminal

(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 localizados nas folhas ela pode ser dividida em subárvores disjuntas em arestas em que esses vértices aparecem como folhas. As subárvores resultantes dessa decomposição são denominadas componentes completas da árvore. Uma árvore de Steiner de k-tamanho é aquela em que todas as componentes completas da árvore possuem pelo menos o tamanho k. k representa o número de vértices terminais em cada componente.

Encontrar a árvore de Steiner de k-tamanho de menor custo, quando k 4, em um grafo sem propriedades particulares, é

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

(1) Árvore Steiner clássica

497

(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.

Árvore de Steiner em Grupamentos Dado um grafo conexo que contém grupos disjuntos de vértices, uma árvore de Steiner em grupamentos é aquela que contém pelo menos um vértice de cada

Encontrar a árvore de Steiner em grupamentos de menor custo em um grafo sem propriedades particulares é

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.

AS Enraizada com Penalidades A árvore de Steiner enraizada é uma árvore de Steiner que possui obrigatoriamente 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 aos vértices Λ, de forma que é penalizada a cada inclusão de um vértice de Steiner.

Encontrar a árvore de Steiner enraizada com penalidades tal que possua o mínimo custo em um grafo sem propriedades particulares é

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 associadas. 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 É a árvore de Steiner que, dados os conjuntos Χ e Λ de vértices, possui o menor número de vértices pertencentes a Λ.

AS Mínimo Vértice Limitada em Custo É 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 determinado valor fixo d.

Encontrar as árvores de Steiner de menor custo com mínimo número de vértices ou de mínimo número de vértices limitada em custos em um grafo qualquer

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 aplicadas 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értices, 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

(1) Árvore de Steiner com 3 vértices de Steiner

(3) 3 vértices de Steiner e custo 12

501

(2) Árvore Steiner com número mínimo de vértices de Steiner

(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 É a árvore de Steiner que possui o menor diâmetro possível. (Vik et al., 2008)

Árvore de Steiner com Diâmetro Limitado É a árvore de Steiner mínima com um diâmetro limitado em um valor máximo L. (Kortsarz & Peleg, 1999; Aggarwal et al., 2004)

AS Terminal com Diâmetro Limitado É a árvore de Steiner terminal mínima com um diâmetro limitado em um valor máximo L. (Ding et al., 2010)

Encontrar a árvore de Steiner com diâmetros limitados é

NP-Difícil A árvore de Steiner com mínimo diâmetro pode permitir solução

Polinomial

502

Grafos

Árvore de Steiner com Mínimo Grau É a árvore de Steiner que possui o menor grau possível. (Fürer & Raghavachari, 1994)

Árvore de Steiner Limitada em Grau É a árvore de Steiner mínima com um grau máximo limitado em um valor L. (Bauer & Varma, 1996)

Encontrar a árvore de Steiner com mínimo grau, ou limitada em grau, ou de mínimo diâmetro limitada em grau é

NP-Difícil

Árvore de Steiner Mínimo Diâmetro Lim Grau É 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 Considerando um grafo direcionado G = (V, E) com custo c(e) atribuído a cada aresta e  E, um vértice raiz r  V e um conjunto de terminais T  V\{r }, o problema 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 custo mínimo tal que H tenha um caminho direcionado de todo vértice terminal 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

Encontrar uma árvore de Steiner de custo mínimo em um grafo direcionado é

NP-Difícil 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 Figura 8.18 Árvores de Steiner em grafos direcionados – 1a Parte

(2) Árvore Steiner interior do grafo G1

CAPÍTULO 8  Árvores de Steiner

(3) Grafo direcionado G2

503

(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 Neste problema é dado um grafo direcionado G = (V, E) com um custo c(e) atribuí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.

Encontrar uma floresta de Steiner de custo mínimo em um grafo direcionado é

NP-Difícil

No caso geral, G’ pode conter ciclos direcionados. Entretanto, na definição para grafos não direcionados, o subgrafo 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 Figura 8.19 Floresta de Steiner em grafos direcionados

(2) Floresta de Steiner do grafo G3

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értice 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 conectividade em vértices como o de conectividade em arestas correspondem ao problema da determinação do subgrafo fortemente 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.

AGM Poda

A 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 }

(1) Árvore geradora mínima Figura 8.21 Aplicação do algoritmo da AGM com poda

(2) Poda das folhas correspondentes aos vértices 12 e 13 e posteriormente ao vértice 11

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 é representada a AGM realizada no grafo dos caminhos. A árvore resultante da aplicação do algoritmo é apresentada na Figura 8.22(3), em vermelho.

Caminhos

(1) Caminho mais curto (1-9) = 17 Figura 8.22 Aplicação do algoritmo KMB

Árvore (2) AGM

(3) Caminho resultante da AGM em G

CAPÍTULO 8  Árvores de Steiner

Complexidade

507

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

(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

509

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értices do grafo e T = (NT,MT) a árvore resultante. O algoritmo é descrito no quadro Vértice Próximo.

A 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

Vértice Próximo

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értice de demanda

(3) Ligar ao mais próximo vértice de demanda fora da árvore em construção – vértice 5

(4) Ligar a árvore em construção ao mais próximo vértice de demanda fora da árvore – vértice 7

(5) Ligar a árvore em construção ao mais próximo vértice de demanda fora da árvore – vértice 10

(6) Árvore final com custo 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); (13-14); (11-12); (3-6) } = 27

(2) Subgrafos da cobertura que contêm vértices de Χ

Figura 8.25 Algoritmo com base na cobertura de vértices – 1a Parte

CAPÍTULO 8  Árvores de Steiner

(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

513

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 & Vazirani (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).

O(|n|½|m|)

Heurístico

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 otimizaçã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. pontos coloridos são os pontos de demanda

(4) Uma solução de ligação – árvore de Steiner

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 conexã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 formulado, 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 trilhas 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 árvores 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 (Erzin & 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 problema 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 melhor 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

(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

517

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 Figura 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.

Grafos

518

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 fundamental. 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 possibilidade de, para um dado conjunto de vértices terminais, existirem duas ou mais árvores de Steiner mínimas 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 escavaçõ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

8.7:

Grafos

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 representados pelos pontos em amarelo no mapa. As caixas podem ser colocadas nas calçadas, ou dentro de estabelecimentos 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 opcionalmente 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 decorrentes 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

8.8:

523

Considerando um novo cenário para o problema descrito no exercício 8.7, as caixas de atendimento automático podem ser colocadas nas calçadas, ou dentro de estabelecimentos 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. 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 individualmente 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. 2. 3. 4. 5. 6. 7. 8. 9. 10.

A árvore de Steiner mínima. A árvore de Steiner de mínimo grau. Árvore de Steiner de mínimo diâmetro. Árvore de Steiner mínima de mínimo diâmetro. Árvore de Steiner mínima de mínimo grau. Um subgrafo 2-conexo que contenha os vértices terminais. A árvore de Steiner terminal mínima. A árvore de Steiner com mínimos vértices de Steiner. A árvore de Steiner com mínimos vértices de Steiner limita ao valor de 38 unidades. 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értices 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 terminais 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ísticas:

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 atendendo 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 amarelos representam quatro possíveis entradas da mina.

Os vértices azuis representam ocorrências do precioso mineral natalônio, enquanto os vermelhos são ocorrê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 comprimento 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, garantindo 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 Heterogeneous 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 Algorithms. 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:167178. 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: Proceedings 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 Problem 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/science/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 Applied 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: Computational 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 Conference 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 Optimization. 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 Minimum 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 Universitatis Comenianae LX(1)105-121. Ding, W., Lin, G. & Xue, G. (2010). Diameter-Constrained Steiner Tree. In: Proceedings of the 4th Annual International 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 Optimization 17:91-107. Drake, D. E. & Hougardy, S. (2004). On approximation algorithms for the terminal Steiner tree problem. Information 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 polyhedral 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 connected 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. Freeman, 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 application 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 collecting 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 Problems. 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. Mathematical 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, Miller, 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. Networks 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(13):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: Formalization 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: Proceedings 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 annual 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. Networks 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 application 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 Problems. 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

CAPÍTULO 9 Caixeiro-viajante

535

Grafos

536

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 pesquisadores 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.

O Problema do Caixeiro-viajante

Encontrar um ciclo hamiltoniano de custo mínimo e máximo em um grafo sem propriedades particulares é:

π

Consiste em determinar em um grafo G = (N, M) ponderado em arestas (direcionado ou não) um ciclo hamitoniano de custo mínimo.

NP-Difícil O Caixeiro Viajante Máximo

π

O problema da determinação do subgrafo euleriano gerador mínimo é uma relaxação do caixeiro-viajante, que mostra uma interessante conexão entre ciclos eulerianos e hamiltonianos. O subgrafo possui uma cadeia fechada (sem repetir arestas) mínima que visita todos os vértice de G, todavia permitindo a repetição de visitas aos vértices de G.

Consiste em determinar em um grafo G = (N, M) ponderado em arestas (direcionado ou não) um ciclo hamitoniano de custo máximo. Trata-se de um problema equivalente ao caixeiro-viajante clássico. (Blokh & Gutin, 1995; Barvinok et al., 2002).

Subgrafo Euleriano Gerador

π

Consiste em determinar em um grafo G = (N, M) ponderado em arestas (direcionado ou não) uma cadeia fechada mínima que visite todos os vértices de G (geradora). (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

2

5 1

1

5

10 1

3

1

Grafo G

1

2

5

1

1

5

10

3

1 2

(2) Caixeiro-viajante

Figura 9.1 Caixeiro-viajante e sua relaxação

5

10

1

4

2

5 1

1

10

1 2

2

5

4

5

10 1

1

3

4 (3) Caixeiro máximo

3

1 2

(4) Subgrafo euleriano

4

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 Figura 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 estarem 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

1

3 3

5

3

1

7

4

5

2

4

Figura 9.2 Grafo do exemplo do algoritmo de Bellmore & Nemhauser

3

4

CAPÍTULO 9 Caixeiro-viajante

2

1

3

1

1

3

1

7

4

2

1

3

4

3

3

1

2

5

4

(1) 1a inserção (1-3)

(2) 2a inserção (3-5)

(3) 3a inserção (5-2)

2

2

2

3

2

1

539

5

3

1

5

3

1

3

3

1

3

7

2

1

5

3

1

7

3

2

2

5 (4) 4a inserção “forçada” (2-4)

5

4

4

5

(5) 5a Inserção “forçada” (4-1)

4 (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 previamente 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.

Grafos

540

Normalmente as heurísticas de inserção partem de um subtour inicial – normalmente um ciclo de comprimento 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á necessá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 inserçõ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

3

2

3

2

2

7

7

6

8

1

2

2

1 3

3

7

1

6

1

3

8 5

7

2

5

5

4

5

4

4

2

(2) Ciclo inicial

(1) Grafo exemplo – K7

1

1 2

1

7

7

2

7

2

1

i

i+1

7

2 3 1

1

3

3 k (4) 1a inserção possível 1 + 3 – 7 = –3

(3) Escolha do vértice mais próximo a qualquer vértice do ciclo

1 1

7

i 1 2

2

7

i+1 2

1

i 7

3

i+1 2

2

7

2

k

3 (5) 2a inserção possível 2 + 3 – 2 = +3 Figura 9.3 Execução de um passo da heurística insere vértice 1

k

1

3 (6) 3a inserção possível 1 + 2 – 1 = +2

Grafos

542

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 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(mn) operações.

O(mn)

Heurístico

A Figura 9.4 exemplifica com a heurística Insere Vértices 2 e diferencia-se da heurística Insere Vértice 1 desenvolvendo 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 2

1

i 7

7

7

i

2

7

2

i+1

7

2

8

1 1

i+1

1

2

2

7

2

4

5

k 5 (1) Remoção da aresta (2-7)

(2) 1a inserção possível 5+4–7=+2

k 4 (3) 2a inserção possível 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 formaliza 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 8

5

3

3 9

7

5

6

3

9 10

7

3

5

4

2

4

(1) Grafo do exemplo

1

4

2

5

3

8

5

1

1 2

1

6 2 3

6

2

1

(2) Ciclo H

2

6

4

1

3

5

6

2

(4) 1a inserção custo=22

(3) H custo = 33

5

1

4

3

6

(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. s

r

s

r h

h i

k

i

k

Inclusão de um vértice – Remove três arestas e inclui três

s

r i i

s

r

j

i k

i

j 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 ← (x + 2) mod(n + 1)

// A iteração n–2 é para restaurar o ciclo original // // 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

A

545

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 8

5

5

1

3

9

1 2

1

6 2 3

6

7

10

5

6

3

1

2

5

3

2

5

3

1

(7) Insere 1 entre 3 e 6 Figura 9.7 Heurística shift

4

2

5

6

3

7

3

5

4

(2) Ciclo inicial

6

4

(4) Insere 1 entre 4 e 2

4

1

9

(1) Grafo exemplo – K6

4

8

3

4

1

2

1

1

2

1

5

(3) Representação do ciclo

3

6

4

(5) Insere 1 entre 2 e 5

6

4

2

5

3

6

(8) Insere 1 entre 6 e 4

2

5

1

3

6

(6) Insere 1 entre 5 e 3

1

2

4

5

3

6

(9) Insere 4 entre 2 e 5

1

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 procedimento pode exigir até O(n2) operações.

O(n2)

Heurístico

Heurísticas Exchange Uma heurística de inserção bastante eficiente e de fácil implementação é a denominada Exchange, ou troca simples. 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 Ler G = (N, M), k 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

Exchange 1 // k é o índice do vértice de troca //

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

1

4

2

5

3

6

5

4

4

5

2

3

1

3

6

1

5

(2) Troca 5 por 1

(1) Configuração inicial – k = 5

1

2

6

(4) Troca 5 por 2

1

4

2

3

(5) Troca 5 por 3

2

4

547

3

6

3

5

(3) Troca 5 por 4

5

6

1

4

2

6

(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 possí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 quadro Exchange 2 formaliza essa possibilidade.

A 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

Exchange 2

Grafos

548

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

4

2

1

3

6

3

4

6

2

5

3

6

2

4

2

5

3

1

(7) Troca 6 por 4

2

4

6

5

(8) Troca 6 por 2

1

5

3

6

3

1

3

1

(3) Troca 1 por 2

1

6

6

4

(5) Troca 1 por 3

(4) Troca 1 por 5

4

5

(2) Troca 1 por 4

(1) Configuração inicial – k = 1

5

2

2

5

(6) Troca 1 por 6

3

1

5

4

2

6

(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 possí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

A

549

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

6

1

6 2 3

8

5

3

9

5

8

6

3

4

1

3

1

7

10

2

6 1

1

1

2

1

1

5

(1) Grafo

4

1

(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.

2

1

2

1

1

6

6 8

5

1

3

6

8

1

3

6 1

1 2

5

1

4

(1) 1a substituição Figura 9.11 Funcionamento da heurística 2-opt – 1a parte

5 (2) 1a viabilização = 23

4

550

Grafos

2

1

2

1 1

1

6 8

8

1

3

6

6

1 7

1

1

5

5

4

1

(3) 2a substituição

4

(4) 2a viabilização = 27

2

1

2

1

3 9

1

6

6 8

2

1

3

6

6

5

4

1

(5) 3a substituição

1

1

1

3

6

2

1

6 8

4

1

(6) 3a viabilização = 21

2

1

3

1

1

5

1 10

8

2

1

3

6

1 3

5

1

4

(7) 4a substituição 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

5

1

(8) 4a viabilização = 16

4

CAPÍTULO 9 Caixeiro-viajante

Complexidade

551

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).

O(nk)

Heurístico 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} L ← L\{hk} Fim_Enquanto

Etapa Twice-Around – TW(.)

Heurístico 1

1 2

8 9

4

2 6 5

5

7

6

3

4 10 10

3 7

5 Figura 9.13 Grafo exemplo para a heurística Twice-Around

1

4

552

Grafos

A Figura 9.14 exemplifica o procedimento quando aplicado ao grafo da Figura 9.13. 1ª 1

1

2

1





2

1



2

3ª 10ª

2



Atalho

10ª 4ª

6

3

4

6



3

6

3

5ª 6ª





5

5

(1) Árvore geradora mínima



2



2

1

Atalho 4ª

6

3



5



Atalho

Atalho







6

3

3

Atalho

6ª 7ª

2

1





Atalho



5

4

(4) Caminho reorganizado H = (1-2-6)

4



(3) Percurso (1-2); (2-1); (1,6) → aresta (2-6)



1





5

4

(2) Inicialização L = (1,2,1,6,3,6,5,4,5,6,1)



6





4

1

3







5

4

(5) Percurso (6-3); (3-6); (6,5) → aresta (3-6)

4



(6) Caminho reorganizado H = (1-2-6-3-5)



1

2

1

2

Atalho 4ª

6

3

Atalho

6

3

Atalho 7ª

5



4

(7) Percurso (5-4); (4-5) → aresta (4-1) Figura 9.14 Desenvolvimento da heurística Twice-Around

5

4

(8) Ciclo final H = (1-2-6-3-5-4-1), custo = 31

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 procedimento 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

6

3

4

6

5

3

4 10

3 7

5

1

4

(1) Vértices de grau ímpar na árvore

4 (2) Matching E* = {(2-4),(6-3)} em G0

554

Grafos

1

1

2

2

1

1

5

2 5

4

Atalho

4

6

3

4 3

6

3

4 3

5

1

4

(3) G´ = (N,MT ∪ E*)

5

1

4

(4) Caminho 6-3-6-1-2-4-5-6 com repetição 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 abordagem 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á representada 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

1

1

1

1

6

555

6 9

9 2

5

5

(1) Visita com repetição = (2 x 1) + (2 x 9) = 20

1 9

j

(2) Visita de atalho = 1 + 2 + 9 = 12

k

1 9

4

5

k

4

i

(3) Visita com repetição = (2 x 9) + (2 x 4) = 27

j

5

4

2

4

i

(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

Grafos

556

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

1 2

2

10 5

2

6

1

1

2

4

11 7

4

8

6

6

3

9

3

10 20

9 2

4

4

2

5

5

4

3

(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

1

2

2

3 2

2

2

6

5

3

5

10 10

4 5

⇒ S45 = 12 S56 = 8 S46 = 5 S25 = 5 S34 = 5 S26 = 4 S35 = 3 S23 = –2 S24= –3

1

1

6

2 1

3

5 4 3

4

3

5

⇒ S45 = 12 ⇒ S56 = 8 S46 = 5 S25 = 5 S34 = 5 S26 = 4 S35 = 3 S23 = –2 S24 = –3 Lista L

(2) Economia S45 realizada

1

6

3

5

10

Lista L

2

2

1

(1) Inicialização

1

2

4

5

⇒ S45 = 12 ⇒ S56 = 8 ⇒ S46 = 5 S25 = 5 S34 = 5 S26 = 4 S35 = 3 S23 = –2 S24 = –3 Lista L

(3) Economia S56 realizada

1

2

2

1 1

6

3 2 4 3

5

4

⇒ S45 = 12 ⇒ S56 = 8 S46 = 5 S25 = 5 ⇒ S34 = 5 S26 = 4 S35 = 3 S23 = –2 S24 = –3 Lista L

(4) Economia S46 é inviável, e também as economias S25. Realiza-se a economia S34

CAPÍTULO 9 Caixeiro-viajante

1

2

2 1

2

6

3 3 2 2

4

5

⇒ S45 = 11 ⇒ S56 = 8 S46 = 5 S25 = 5 ⇒ S34 = 5 ⇒ S26 = 4 S35 = 3 S23 = –2 S24 = –3

557

As figuras relacionam somente parte da lista de economias, as primeiras da lista. Por exemplo, a seguinte economia não está listada: S36 = –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 determinar 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

Grafos

558

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.

1

3

3

2

4

1

2

6

5

6

5

4

10

10 7

7

9

9 11 8

14 15

12 13

11

8

14 15

12 ⎡15 ⎤ k0 = ⎢ ⎥ = 8 ⎢2⎥

(1) Grafo exemplo

13

⎢15 ⎥ k1 = ⎢ ⎥ = 7 ⎣2⎦

(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 Formar um retângulo R que contém os vértices de G t0 ← n I, j, s ← 0 R0 ← R Para i ← 0,...s tal que ti ≥ L Fazer

// L é o número máximo de vértices no retalho // // t0 é a variável que recebe os n vértices de G //

⎡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 ⎤ ti ← ⎢ i ⎥ ⎢2⎥

e

⎢t ⎥ ts ← ⎢ i ⎥ ⎣2⎦

Fim_Para

Heurístico Após a criação dos grupamentos supostamente adequados, obtém-se um ciclo hamiltoniano ótimo em cada retalho, 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⎤ k0 = ⎢ ⎥ = 4 ⎢2⎥

1

⎡7⎤ k1 = ⎢ ⎥ = 4 ⎢2⎥

3

3

2 6

5

1

4

2 6

5

4

10

10

7

7

9

9 11

8

11

14

8

15

12 ⎢8⎥ k0 = ⎢ ⎥ = 4 ⎣2⎦

14 15

12

13

13

(1) 2a partição

(2) 3a partição

3 1

⎢7⎥ k3 = ⎢ ⎥ = 3 ⎣2⎦

3

2 6

5

1

4

2 6

5

10 7

7

10

9 11

9

8

11

14

8

15

12

14 15

12 13

13

(4) 1o atalho na formação do ciclo hamiltoniano

(3) Formação de um ciclo euleriano em G

3

3 1

2 6

5 7

1

4

2

7

10

8

10 9

14 15

12

6

5

9 11

4

13

(5) 2o atalho Figura 9.20 Desenvolvimento da heurística dos retalhos

11

8

14 15

12 13

(6) Demais atalhos

4

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: Si ∩ Si +1 = ∅

i = 1,...., k − 1 e

k

US

i

=N

N = {1, 2,..., n}

i =1

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

(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

561

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 implementação eficiente da heurística de grupamentos pode ser alcançada quando as k-partições em G são encontradas atravé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 arborescê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 é apresentada 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 possibilidade 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

a

c

b

d

(1) Abertura dos ciclos com a remoção de duas arestas

a

c

b

d

563

(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.

3

2 1

3

7 8

8

3

7

1

4

6 9

3

8

5

2

7

1

12

3

2 3

7 8

8

9

4

3

2

7

4

1

13

3

3

5

5

4

7 8

8

9

4 6

2

1

5

6 9

2

2

2

8

12

2 1 8

1

1

5

(2) Determinação do matching mínimo em G

5

4

8 1

3

8

5

6 9

2

11

6

2

1

4

6 9

(1) Grafo exemplo

2

7 2

7

10

13

1

1

3

2

4

8

2

11

1

8

9

3

9

5

4

8

5

4 6

2

1

6

3

10

2

7 2

2

4

3 8

1

1

3

2 1

5

4

8 1

9

4 6

2

1

1

3

7

4

5

6 9

2

2

2

5 2

7

4

8

3

2

1

7

4

6

3

10

1

8

2

11

12

13

(3) Completar os 2-ciclos com menor aresta incidente no vértice não emparelhado

10

8

6

3

9

1

9

8

2

11

1

3

12

13

(4) Identificar os dois maiores ciclos e escolher os vértices de ligação (10-8 não se liga a 4-6-12)

Figura 9.23 Desenvolvimento da heurística dos grupamentos – 1a Parte

Grafos

564

3

2 1

3

3

8

8

3

7

1

8

8

9

2

1

7

5

6

5

4

1

9

2

2

4

4 6

2

8 2

1

1

7

3

2 1

5

4

8 1

9

4 6

2

3

7

5

6 9

2

2

4

7 7

4

8

1

3

6

3

10

1

4

9

10

8

2

12

11

3

2 3

8

8

9

7

4

6

8

2

3

2

8

8

3

1

7

3

4

4

8

6

8

9

9

2

1

7

3

4

7 1

1

6

3

4

9

10

2

9

3

2

8

8

9

3

3

1

7

4

5

1

1 2

7

8

5

6

4

2

8 2

8

9

2

2

3

2 1

7

13

(10) Identificar os dois maiores ciclos e escolher os vértices de ligação 4

5

8

8

12

11

2

1

2

13

(9) Formar novo ciclo

3

6

3

10

8

12

11

1

3

7

10

5

6

7 1

1

6

3

4

2

2

7 4

5

6 9

2

2

7

1

5 7

1

5

4 6

2

8 2

2

2

13

3

2 1

1

7

8

12

(8) Identificar os dois maiores ciclos e escolher os vértices de ligação 4

5

4

2

11

6

2

1

9

13

(7) Formar novo ciclo 3

1

6

3

10

8

12

11

4

5

6 9

1 4

9

9

7

4

7

6

8

2

2

1

1

1

3

8 2

7

10

1 1

7

9

9

4 3

5

4

1

5

4 6

2

8 2

2

2

3

1

3

3

2 1

1

7

13

(6) Identificar os dois maiores ciclos e escolher os vértices de ligação (10-8 não se liga a 4-6-12) 4

5

4

8 1

8

12

11

6

2

1

3

2

9

13

(5) Formar novo ciclo

1

8

1 6

3

4

9

2

11

10

8

12

(11) Formar novo ciclo

13

6

3 9

2

11

8

12

13

(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

3

2 1

565

4

2 1 1

2

7

8

9

3

7

4

5

6

(13) Solução final

2

1 3

10

9

2

11

8

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 – variantes. 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 procedimento. ▼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 fechado 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.

Grafos

566

2

1

1 Haste

2

2

1

Ciclo 6

3

6

3

Ciclo

6

3

Haste 4

5

4

5

(2) 1o exemplo de ciclo e haste

(1) Grafo

4

5

(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 associadas à 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 ilustradas 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) é removida. 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 Haste

Ciclo

Ciclo

Haste

t (1) Exemplo de ciclo e haste

S1

S2

(2) Vértices-chave na incorporação

t

(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

S2

CAPÍTULO 9 Caixeiro-viajante

567

r S1

S2

t

(4) Solução resultante da 1a possibilidade

(5) 2a possibilidade de ligação

(6) Solução resultante da 2a possibilidade

r S1

r S2

S1

S2

q

t

q p

t

(7) 1a possibilidade de mudança na estrutura

(8) Resultado da 1a mudança p q

p

(9) 2a possibilidade de mudança na estrutura

r S1

S2

t (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

5 2 4

11 1

3

5 7

5

1

10

5

1

1

2

8

11

1

12

8

1

2

6

3

6

1 1

4

1

4

1

6

9

7 1

10

1

1

1

7 1

10

1

2

3

8

4

2

3 1

9

4 3

3

1

1

(1) Grafo G

(2) Árvore geradora mínima de G

2

2 1

2

1

2

3

3

8

11

11

1

5

1

8 1

5

1

1

7 1

10

1 1

6

1 1

1

4

1

7 1

10

6

1

1

9

4 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

2

1

2

3

3

8

11

5

1

4

11

1

7

8 1

5

1

7

7 1

10

6

1 1

1

4 9

1

10

6

1 1

1

4 9

4 3

4 3

1 (5) Incorporação da 2a haste e remoção de (5-7)

1 (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 menor 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) 0 volta ao passo 6 Passo 6: L_Sai ← L_Sai ∪ {(5-6)}

571

572

Grafos

2

1 9 4

9

5

6

3

6

1

5

1 9

5

2

1 1

3

6

9

5

6

3

6

Aresta de ligação

1

5

4

2

Mais barata

5

4

2

(9) Passo 12: Restaurar ciclo incluindo (1-2),c_ind = 25 Passo 13: c_melhor ← 25, Salvar (1-5-4-6-3-2). Passo 14: g > 0 volta ao passo 6

Única que elimina o ciclo

(8) Passo 9: g = L_Sai – L_Entra = (9+2) – (1+2) = 8 Passo 10: Remover aresta (1-4), adjacente ao vértice 4.

5

6

3

1

2

2

5

6

4

(7) Passos 7,8: Incluir aresta (4-5) no caminho formando o ciclo 1-5-4. L_Entra ← L_Entra ∪ {(4-5)} L_Entra = {(4-6),(4-5)}

4

6

Mais barata

2

2

1

2

4

(10) Passo 6: L_Sai ← L_Sai ∪ {(1-4)} Passos 7,8: L_Entra ← L_Entra ∪ {(1-6)} Passo 9: g = L_Sai – L_Entra = (9+2+4) – (1+2+1) = 11

2

1 9

5

6

3

6

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| vi |, i = 1,2,...,n, encontrar o tour mais rápido para o perseguidor que inicia e termina na origem e intercepta todos os alvos. O problema é conhecido na literatura como The Movingtarget Traveling Salesman Problem (Helvig et al., 2003).

Helvig et al. (2003) apresentam variantes do problema e um algoritmo exato com complexidade O(n2) para o problema unidimensional.

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.

PCV em Matriz Circulante

π

O primeiro trabalho abordando o tema se deve a Finke (1987). Yang 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).

Em Aberto! Uma matriz n × n circulante é formada a partir de um vetor de n componentes pelas permutações cíclicas destes componentes, como a matriz C ao lado (Kalman & White, 2001). A complexidade do PCV em matrizes circulantes é um problema em aberto.

⎡ c1 ⎢c ⎢ n C = ⎢cn −1 ⎢ ⎢ M c ⎣⎢ 2

c2 c3 L c1 c2 cn c1 M M c3 c4

L L L L

cn ⎤ cn −1 ⎥⎥ cn −2 ⎥ ⎥ M ⎥ c1 ⎥ ⎦

CAPÍTULO 9 Caixeiro-viajante

PCV On-line

587

π

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 existe um modelo que permita predizer essas alterações, como no caso das variantes estocásticas do PCV. O problema é denominado na literatura como On-line Travelling Salesman (Ausiello et al., 2001; Jaillet & Wagner, 2008)

Ausiello et al. (2001) relatam algoritmos aproximativos para o problema e Ausiello et al. (2004) descrevem uma variante com cota diária de atendimento.

NP-Difícil

PCV Periódico

π

Consiste em programar um conjunto de m vistas (m dias) do caixeiro-viajante (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. O problema é denominado na literatura The Period Traveling Salesman Problem (Chao et al., 1995).

As cidades podem ser visitadas mais de uma vez dentro do período de m dias, contudo somente uma vez a cada dia. Não é permitido um trajeto diário vazio – sem visitas. 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 Time Windows (Dumas et al., 1995) ou Time-constrained Travelling Salesman (Baker, 1983).

Traveling Repairman Problem

π

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 caixeiro-viajante de mínima latência.

Speeding Deliveryman Problem

❂ PCV-Janela de Tempo Heurísticas recentes: VNS (Silva & Urrutia, 2010); Colônia de Abelhas (López-Ibáñez & Blum, 2010); Simulated annealing (Ohlmann &Thomas, 2007)

❂ Traveling Repairman Abordam o tema: Lucena, (1990); Tsitsiklis (1992) e Heilporn et al. (2010).

π

Determinar um circuito que minimize o tempo de espera dos clientes sujeito a uma restrição de espera máxima (ou condição mínima de atendimento). Nesse 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.

Todos os problemas descritos no presente item pertencem à classe

NP-Difícil

CAPÍTULO 9 Caixeiro-viajante

589

Um conjunto de variantes do PCV consideram ciclos hamiltonianos que possuem restrições no sequenciamento 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 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.

PCV Bipartido Foi introduzido por Frank et al.(1998) e possui uma versão euclidiana com aplicações práticas relatadas por Srivastav et al. (2001).

NP-Difícil

3 1

2

V V

5

7

8

(1) Grafo G Figura 9.40 Caixeiro bipartido

A

A

4 6

V

A

A V (2) Ciclo bipartido

Grafos

590

PCV Preto e Branco

π

Determinar um ciclo hamiltoniano de custo mínimo sobre um conjunto de vértices que possuem duas cores – branca e preta.

Os problemas do PCV preto e branco e PCV com sequência de 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 por um parâmetro L.

NP-Difícil

(Bourgeois et al., 2003)

PCV com Sequência de Clientes

π

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 = ∅. Os vértices do conjunto B são chamados Backhauls e os do conjunto L Linehauls. O problema é denominado The Traveling Salesman with Backhauls na literatura (Gendreau et al., 1996a).





PCV Preto e Branco – Dicas de Trabalhos

Bourgeois et al. (2003) e Bhattacharya et al. (2007) sugerem heurísticas de solução. Ghiani et al. (2006) apresentam um algoritmo branch-and-cut.

As Figuras 9.41(1) e (2) exemplificam uma solução para uma instância do caixeiro preto e branco, onde Q = 2 e L = 2. As Figuras 9.41(3) e (4) exemplificam uma solução para o PCV com sequência de clientes.

PCV com Backhauls – Dicas de Trabalhos

Gendreau et al. (1996a) introduzem a variante a partir do mesmo caso para roteamento de veículos (Deif & Bodin, 1984). Toth & Vigo (1999) abordam a variante no contexto de roteamento de veículos.

10 10 4

4

10

4

4 4

10 10

10

10

4

4

10 10

4 4

10

4

10 10 4

4

4 4

10

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

L1

L1 L3

B1

L2

B3

L3

B1

B6

B5

B2

591

L2

B6

B5

B2

B4

B3

B4

B7 L4

B8

L5

B7 L4

(3) Grafo exemplo

(4) PCV com sequência de clientes

4 4

4 4

10

10

B8

L5

4

4

8 4

10 8

4

4

4

8 10

8 8

4

10

4

4

10

10 4

4

4

4

10 4

4 4

(5) Grafo exemplo

(5) PCV bipartido

Figura 9.41 Exemplo dos ciclos das variantes com sequenciamento de vértices

PCV Coleta e Entrega

π

O problema é definido sobre um conjunto de demandas de coleta (pickup) pi e 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 G = (N, M) ponderado. C ≥ ∑ pi ∧ ∑ d j i∈W

Para qualquer caminho, w ⊆ H.

j∈W

O problema consiste em desenvolver um ciclo hamiltoniano H à partir do vértice r de forma a atender todas as coletas e entregas previstas respeitando a capacidade do veículo. O problema é referido na literatura como Traveling Salesman with Pickup and Delivery (Kalantari et al., 1985).

O caixeiro-viajante de coleta e entrega é

NP-Difícil Basicamente existem dois tipos de PCV com coleta e entrega. Aquele que coleta e entrega um mesmo item e o que coleta um tipo de item e entrega outro tipo. Um exemplo do primeiro caso é a coleta e entrega de pessoas em um sistema de transporte. Um exemplo do segundo caso é a entrega de um bem de consumo e a coleta das embalagens 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értice, 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

D3=2

P3=2

P2=4 D2=2

P1=5

D5=6

P4=5

r

D4=2 D6=2 C=16 CV

(1) Entrega/coleta em pontos distintos Figura 9.42 Exemplos de coleta e entrega com vértices exclusivos

[4-3]

[4-0]

2

2

1

[4-5]

6 2

[1-0]

7

[4-5]

1 8 9

9

5

2 6 1

6

3 [0-3]

3

5

5

2

[1-0]

2

1

1

5 4

[4-0]

2

2

1

6

1 2 6 1

5

[4-3]

4

(1) Grafo exemplo

4

7

1

3 [0-3]

8 9

9

5

2

3

4

4

6

(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 transporte 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. Erdog˘an et al. (2009) relatam uma variante.

CAPÍTULO 9 Caixeiro-viajante

PCV com Requisitos de Separação

593

O caixeiro-viajante com requisitos 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 al. (1995) e uma reformulação do problema é proposta por Wang & Regan (2002).

O problema é referido na literatura como Precedence-Constrained Traveling Salesman (Balas et al., 1995).

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 7

5

7

8

2

4

5

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.





















Todos os problemas do caixeiro em subtour que estão disponíveis na literatura para grafos sem propriedades especiais pertencem à classe

NP-Difícil











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 (Current & 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 conexã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

Classe do PCV com Coleta de Bônus

595

π

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 é associado um bônus bi, determinar um ciclo hamiltoniano de comprimento mínimo iniciado em um vértice v de G que passe por um subconjunto S ⊆ (N \ {v}) tal que a soma da bonificação nos vértices seja pelo menos igual a um valor p.

Ausiello et al. (2008) apresenta o Online Prize-Collecting Traveling Salesman Problem.

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 1

6

9

1

3

3

6

7

1

5

12

1

1

10

1

8

4

11 5 10

7 2

1

4 6

5

4

5

6

5

9

5

9

4

1

4

1

1

1

6

7

5

1

8

6

9

7

4

8

4

11

1

4

3

1

3

1

3

(1) Grafo exemplo

(2) Custo do ciclo =2 0, bônus = 31

10 3

2

6 4

5

6 5

1

7

4 6

1

4

2

4

6

4 5

7 1

5

1

5

1

5

9 5

4

3

6

1

4

1 (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 q, S ⊆ N, de modo que o somatório dos bônus dos vértices do subconjunto seja maximizado e o comprimento do ciclo não ultrapasse um valor r. 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).

Tipo 2

❂ As revisões de Feillet et al. (2005) e Vansteenwegen et al. (2011) fornecem o estado da arte do problema.

O PCV seletivo é

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 9

1

3

7

3

4

8

4

11

1

1

6

6

7

1

5

12

1

1

10

2

11

7 2

8

4

1

1

6

5

1

4 6

5

4

1

6

4

9

5

7

4

1

1

5

4

4

3

1

3

1

3

(1) Grafo exemplo

Comprimento = 16, bônus = 46

10

10

2

2 1

1

7

3

4

6

1

5 1

6 5 1 2 1

4 5

9

4

5

3

1

5

7

10

4 5

1

5 3

2

9

7

3

4

7

5

7

3

5 10 1

8

1

9

1

1

6

4

3

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 minimizar uma função objetivo composta por: 1. Soma dos pesos das arestas 2. Subtração do bônus bi associados aos vértices incluídos no ciclo. Conhecido na literatura como Traveling Salesman Problems with Profits (Feillet et al., 2005) ou Profitable Tour Problem (Dell’Amico et al., 1995).

Tipo 3 A Figura 9.48 exemplifica ciclos do problema tipo 3.

❂ A revisão de Feillet et al. (2005) fornece o estado da arte do problema.

O PCV com lucros é

NP-Difícil

598

Grafos

10

5

8

8

8

5

10

5

0

5

10

5

10 8

6

5

8

5

5

8

10

10

5

8

5

8

5

4 10 5

8

8

8

5

8

3

5

0

8

5

5

4 5

5

10

10

5

5

3

10

8

5

1

3

3

1

3

3 (1) Grafo exemplo

(2) Valor da função objetivo = –5

10 10

8

8

10

10

0

5

5

0 5

10

5

10

1 0

1

6

1

8

1 1

1

1

10

1

8

1

8

4 10

4

1

5

0

(3) Valor da função objetivo = –11

8

1

8

1

8

1

8 4

8

6

0

4

0

1

5

1 5

0

(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értices 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értices do grafo.

CAPÍTULO 9 Caixeiro-viajante

O PCV Comprador

599

π

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 M = {(vi, vj): vi, vj ∈ N, i < j} é o conjunto de arestas. Cada produto fk está associado a uma demanda dk disponível em um subconjunto de mercados Pk ⊆ P, sendo bki o preço do produto fk no mercado vi e cij o custo da viagem entre vi e vj.

O problema do caixeiro alugador pode ser reduzido ao problema do caixeiro-viajante no caso particular de m = n, | Pk | = 1 para todo fk ∈ K e dk = 1.

O problema do caixeiro comprador consiste em determinar uma rota em G iniciando e terminando em v0, passando pelos vértices necessários de modo a adquirir os produtos fk, k = 1, ..., n, necessários ao atendimento das demandas 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

bk1

5

3

3

10

qk1

3

2

7

8

2

1 p2

p3

p4

bk6

8

1

1

8

qk6

8

1

1

8

p2

p3

p4

bk2

1

4

7

6

qk2

1

1

7

3

p1

p2

p3

p4

bk33

6

6

6

1

qk3

5

5

3

3

p1

p2

p3

p4

bk4

1

5

2

8

qk4

5

5

4

4

2

1 p1

p1

5 2

7

4

6

1

3

6 8

1 2

p1

p2

p3

p4

bk5

9

2

1

10

qk5

7

7

7

2

9

9

5

4

2

1

1

0 p1 p2 p3 p4 dk

5

6

4

(1) Grafo exemplo Figura 9.49 Ciclo do caixeiro-viajante comprador – 1a Parte

3

3

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

p1

p2

p3

p4

bk33

6

6

6

1

qk3

5

5

3

3

2

1 1 bk6 qk6

p1

p2

p3

p4

8

1

1

8

8

1

1

1

6

3

8

3

2 p1

p2

p3

p4

bk5

9

2

1

10

qk5

7

7

7

5

4 1

1

0

2

p1

p2

p3

p4

bk4

1

5

2

8

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 quebrar 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 algoritmos 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 denominada 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

Classe PCV em Composição de Caminhos Hamiltonianos

601

π

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

π

Dado um grafo G = (N, M) ponderado em arestas. Dados r carros disponíveis para alugar. Dadas r matrizes C r = [crij] representando o custo de o carro r percorrer a aresta (i,j) i, j ∈ N. Dadas r matrizes Dr = [drij] representando o custo de o carro r voltar da cidade i para a cidade j i, j ∈ N. Dados r vetores Ar = [ari ] representando o custo de o carro r ser alugado na cidade i ∈ N . O problema do caixeiro alugador consiste em determinar um conjunto de caminhos em G que sejam atribuídos cada um a um carro diferente, de forma que: 1. Para todos os vértices diferentes do vértice inicial, os caminhos se sucedam, terminando o j-ésimo caminho no vértice em que se inicia o caminho j-ésimo +1. 2. Que os caminhos percorram exatamente uma vez todos vértices de G, iniciando e terminando o ciclo no vértice v1 ∈ N. 3. Que os carros somente sejam alugados nos vértices em que um carro conclui seu caminho ou no vértice v1. 4. Que o somatório dos custos associados ao percurso, ao aluguel dos carros e ao retorno ao vértice em que cada carro é alugado seja minimizado.

O Caixeiro alugador é

NP-Difícil A afirmação acima é facilmente demonstrável, uma vez que o caixeiro-viajante representa um subcaso desse problema quando: 1. Existe apenas um carro a ser alugado no problema. 2. Os custos de retorno desse carro para uma cidade diferente daquela de aluguel, em qualquer vértice do grafo, são maiores que zero. 3. Os custos do aluguel desse carro são os mesmos em qualquer vértice do grafo. As Figuras 9.50(1)-(3) exemplificam 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 exemplifica 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. 1

A

5

B

2

4

F

C

10 7

5

A

10

1

B

9

5

1 6 1

5

5

D

13

(2) Custos – C2 – do segundo carro percorrer G

B

1

7

E

(1) Custos – C1 – do primeiro carro percorrer G

A

1

1

2

D

10

C

12 4

9

E

1 4 7

F

9

8

1

7

8

8

B

1 8 8

7 2 3

3

1

A

1

0

F

C

8 8

1

1

1

3

C

F

D

1

E

1

E

(3) Custos – C3 – do terceiro carro percorrer G

A

8

0

A

2

2

D

1

1

B

0

2

C

F

5

(4) Custos – D1 – para retorno a F

B

5

3

C

F 3

E

3

3

D

(5) Custos – D2 – para retorno a B Figura 9.50 Custos do caixeiro alugador

E

2

4

D

(6) Custos – D3 – para retorno a C

CAPÍTULO 9 Caixeiro-viajante

A

8

10

B

A

6

3

1

B

2

2

C

F

15

1

C

F 2

E

8

D

9

E

(1) Custos – A1 – do primeiro a ser alugado

A

8

9

13

20

D

(2) Custos – A2 – do segundo carro a ser alugado

B

1

A

B

1

2

1

3

C

F 3

1

F

C

1

E

1

D

9

(4) Custos do primeiro caminho

(3) Custos – C3 – do terceiro carro a ser alugado

A

B

1

D

E

B

A 1 2

F

C

1

2

C

F

1

1

2

3

E

D

(5) Custos do segundo 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.

1

E

D

(6) Custos do terceiro caminho

603

604

Grafos

1

1

A

B 2

11

F

C

1 1

1

1

Custos do Ciclo F-A-B-E-C-D-F=6 Aluguel do carro 1: 3 Aluguel do carro 2: 1 Aluguel do carro 3: 2 Retorno do carro 1: 1 Retorno do carro 2: 1 Retorno do carro 3: 2 Total:16

3

E

D

Observe que o aluguel dos carros poderá ser, eventualmente, incorporado ao custo das arestas, caso seja proporcional à quilometragem 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 hamiltonianos 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 devolvido em qualquer cidade. O caso em que todas as cidades podem fazer a recepção de todos os carros é denominado 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 restriçõ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 vinculado. Em caso contrário, é considerado livre.

CAPÍTULO 9 Caixeiro-viajante

Classe PCV Estocástico

605

π

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.

15

2 2

4 1

8

3 10 16 14 5

1

4

1 3 7

25 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 considerando a configuração inicial 1-2-3-4-5-6.

Grafos

606

9.6 Exercícios Propostos do Capítulo 9 Algoritmos Como definido no Capítulo 4, um grafo é hipo-hamiltoniano quando a remoção de qualquer de seus vértices resulta em um grafo hamiltoniano. Ao caso dos grafos hipo-hamiltonianos pode-se associar o seguinte problema de otimização:

9.1:

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 exercí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

3

6

2

5

4

1

1

14

7

6

10

10

13

12

11

9

8

16

14 17

20

25

26

27

24

23

11 13

8

36

33

34

35

1

39 38

40

14

7

41 42

Grafo Wiener-Araya

19 3 12

4 5

2

19

7

3 17

4

11

2 15

15

25

1

12

37

18

21

15

9

32

31

7

8 1

3

20

6

30

4

19 14

28

29

13

10 22

22

4

5

19

18

17

6 10

21

21

16

7 23

15

7

3

16

5 18

6 4

9 2

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 hamiltoniano de mínimo custo no grafo. 1. 2. 3. 4. 5. 6. 7. 8. 9.

Bellmore & Nemhauser (1968). Heurísticas 1 e 2 de inserção de vértices. Heurísticas de inserção e deslocamento de vértices – Shift. Heurística de Exchange. Heurística de k-Substituições. Heurística Twice-Around. Heurística de economias. Heurística baseadas em grupamentos. Heurísticas em cobertura de ciclos. 15 9 6 11

2

3

12

1

3

2

8

3

1

3

1

1

1

9

5

7

4

17 5

7

6

9

13

1

7

15 7

1

9

9

4

4 3

8 14

7

5

3

15 4

9

12

2

1

9

1 6

11

7

8 4

5

10 1

14

11

3 13

Grafo do exercício 9.2

Desafios 9.3:

9.4:

Desenvolva um algoritmo heurístico especializado na solução dos seguintes problemas de otimização combinatória: 1. O problema do caixeiro alugador. 2. O problema do caixeiro-viajante de mínima latência. 3. O problema do caixeiro comprador. 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 hamiltoniano (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 tombamento 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 Research Letters 16(1):11-18. Arkin, E., Mitchell, J. & Narasimhan, G. (1998). Resource-constrained geometric network optimisation. In: Proceedings 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: Proceedings 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. Discrete 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 scheduling. 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 Combinatorial Optimization. Kluwer Academic Publishers, Dordrecht. Bektas, T. (2006). The Multiple Traveling Salesman Problem: An Overview of Formulations and Solution Procedures. 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 uncertain data. Mathematical Programming 88:411-424. Berg, M., Gudmundsson, J., Katz, M. J., Levcopoulos, C., Overmars, M. H. & Stappen, A. F. (2005). TSP with neighborhoods 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 Salesman 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 crystallography: 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 Mathematics 56:83-86. Boctor, F. F., Laporte G. & Renaud, J. (2003). Heuristics for the traveling purchaser problem. Computers & Operations Research 30:491-504. Boland, N. L., Clarke, L. W. & Nemhauser, G. L. (2000). The asymmetric traveling salesman problem with replenishment arcs. European Journal of Operational Research 123:408-427. Bontoux, B. & Feillet, D. (2008). Ant colony optimization for the traveling purchaser problem. Computers & Operations 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 Generalized 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 Machining. 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 International 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. Computers 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 Report 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 Management (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 salesman 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:113122. De Kort, J. B. J. M. (1993). A Branch and Bound Algorithm for Symmetric 2-Peripatetic Salesman Problems. European Journal of Operational Research 70(2):229-243. Dimitrijevic, V. (1997). An Efficient Transformation of the Generalized Traveling Salesman Problem into the Traveling 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 Salesman 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 Discrete 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 traveling 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. Freeman, San Francisco. Gendreau, M., Laporte, G. & Vigo, D. (1998). Heuristics for the traveling salesman problem with pickup and delivery. 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. Combinatorial Optimization 1:41-56. Gendreau, M., Laporte, G. & Séguin, R. (1996c). Stochastic Vehicle Routing. European Journal of Operational Research 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 Problem. 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 Optimization 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 Automation – ICRA 2008, 2252-2258. Gutin, G. & Punnen, A. P. (2007). The Traveling Salesman Problem and Its Variations. Series: Combinatorial Optimization 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 Structures. 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 Optimization 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 Simulated 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 Hamiltonian 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 Problem 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 Monthly 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. Operations 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 salesman 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 Research 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 problem. 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. Operational 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. Computers & 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 replenishment arcs. Intl. Trans. in Op. Res. 7:431-447. Mak, V. & Boland, N. (2007). Polyhedral results and exact algorithms for the asymmetric travelling salesman problem 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 Column Generation. RAIRO – Operations Research 20:1-13. Minoux, M. (1987). A Class of Combinatorial Problems with Polynomially Solvable Large Scale Covering-Partitioning Relaxations. RAIRO – Operations Research 21:105-136. Minoux, M. (1989). Solving Combinatorial Problems with Combined Min_Max_Min_Sum Objective and Applications. Mathematical Programming 45:361-372. Mitchell, J. S. B. (2000). Geometric shortest paths and network optimization. In: J.-R. Sack, J. Urrutia (Eds.). Handbook 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 Application 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 & Operations Research 25(11):879-885. Percus, A. G. & Martin, O. C. (1999). The Stochastic Traveling Salesman Problem: Finite Size Scaling and the Cavity 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 Travelling Salesman Problem. Operations Research 31:507-521. Rego, C. (1998). Relaxed Tours and Path Ejections for the Traveling Salesman Problem. European Journal of Operational Research 106(1-2):522-538. Reinelt, G. (1994). The Traveling Salesman: Computational Solutions for the Applications. Lectures Notes in Computer 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 Multicommodity 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 problem. 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 windows. 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 Approach. 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 traveling 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: Advances 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 problem. 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 Adição de um elo, 134 Adjacência de Arestas, 11 de Vértices, 10 Algoritmo(s) Baseado em Cobertura de Arestas – Takahashi & Matsuyama, 512 Baseados no Caminho de Aumento de Fluxo, 376 da Árvore Geradora Mínima com Poda, 504 das Arborescências, 507 de Bellmore & Nemhauser, 538 de Borůvka, 159 de Dijkstra, 200-206, 270, 271 de Dinitz, 381 de economias, 554 de Edmonds, 310 de Fleury, 226 de Floyd-Warshall, 210-213, 271 de Fluxo Forçado, 381 de Ford e Fulkerson, 377 de Ford-Moore-Bellman, 207210, 270 de Hierholzer, 223 de Kruskal, 156 de Prim Colorido, 154 de Prim, 152 de Roy, 271 para Componentes Conexas, 191 de Warshall para Fechos Transitivos, 193 de Zykov, 442 do Vértice mais Próximo – Takahashi & Matsuyama, 510 DSATUR para Coloração Própria, 443 Exato para Coloração Própria, 442 Exatos para a Coloração de Vértices, 446 Face_Certa, 111 Heurísticos para Árvore de Steiner, 504

Heurísticos para o Problema do Caixeiro Viajante, 538 Kou, Markowsky e Berman, 506 MPM, 384 para a Determinação de uma Cadeia Euleriana Fechada, 223 para Cobertura de Vértice, 323 para Conjunto Estável, 321 para o Caminho mais Curto, 199 Simultâneo para AG Mínima e Máxima, 139 Stem-and-cycle, 569 Twice-Around, 551 Warshal, 270 Antecessores, 10, 14 Aplicação dos Modelos em Grafos, 92 Aproveitamento de Capacidade Carga, 393 Arborescências, 507 Arco(s), 2 Utilizável, 276 Áreas de Aplicações Reais de Árvores, 169 Aresta(s) , 2 Antipodais em um Ciclo Ck, 284 Antipodal, 87 de avanço, 64 de cruzamento, 64 de retorno, 62, 64 Elo, 134 Emparelhada, 310 paralelas, 7 Árvore(s) , 24 , 130 alternante, 311 Banana, 144 (n,k) Banana, 144 Binária, 161 de profundidade, 62 Duplamente Limitada, 145 k-hop, 147 Taturana, 149

Árvore de Steiner, 484, 487 com Coleta de Bônus, 491 com Conexão Est, 488 com Conexão Estocástica, 488 com Diâmetro Limitado, 501 com Mínimo Diâmetro, 501 com Mínimo Grau, 502 com Mínimo Número de Vért. de Steiner, 500 com Norma Linear, 489, 490 com Seleção Interna, 495 de k-Tamanho, 496 em Grafo Direcionado, 502 em Grafos, 484 em Grupamentos, 497 Enraizada com Penalidades, 499 Limitada em Grau, 502 Mínimo Diâmetro Lim Grau, 502 Mínimo Vértice Limitada em Custo, 500 Terminal, 495 com Diâmetro Limitado, 501 Parcial, 495 Árvore Geradora, 132, 137 com no Máximo k Folhas, 141 com Número Máximo de Folhas, 141 Compacta, 145 de Cruzamento Mínimo, 148 de Grau Mínimo, 138 de Grau Restrito, 138 de Mínimo Diâmetro, 142, 143 Duplamente Limitada, 144 Isomorfa, 139 k Compacta, 145 Máxima, 137 Mínima, 137, 150 Mínima Bicolorida, 149 Mínima Capacitada, 147 Mínima com Mínimo Grau, 138 Mínima k-hop, 146 Mínima Limitada em Diâmetro, 142

618

Grafos

Mínima Taturana, 149 Mínimo Diâmetro Lim. em Grau, 142 MinMax_MinSum, 140 Assimetria de ligações em circuitos sincronizados, 515 Atividade fantasma, 242 Atribuição de valores, 96 B Backbone óptico (Feeder), 165 Barras em Queda, 127 Bloco, 34 Blossom, 313 Bondy & Chvátal, 218 Broadcasting, 326 Busca em Grafos, 59 em largura, 66 em profundidade, 62 C Cadeia(s), 13, 114 Euleriana, 16 fechada, 16, 17 Eulerianas e Modelos de Otimização, 233 Caixeiro Viajante Bipartido, 589 com Curvas, 580 em Cobertura, 594 em Grupos, 579 em Vizinhanças, 580 Euclidiano, 580 Generalizado, 578 m-Peripatético, 577 Máximo, 536 Múltiplo, 577 Multivisitas, 537 Caminho(s), 14 Alternante, 310 Aumentante, 311 com Falha nos Vértices/Arestas, 232 de Mínimo Gargalo, 232 Disjunto em Arestas, 197 Disjuntos, 199 do Caixeiro Viajante, 537 do Hiker Dice, 246 e Ciclos Hamiltonianos, 216

em Grafos, 195 Euleriano, 16, 220 Hamiltoniano, 16 fechado, 17 mais Curto, 195 com Custos nos Vértices, 197 com Janelas de Tempo, 228 com Vértices de Passagem Obrigatória, 229 com Vértices de Reabastecimento, 230 em Grafo em Camadas, 214215 k-Centro, 230 Restrito em Peso, 231 mais Longo, 196 Canibais, 123 Capacidade de um Corte s-t, 374 Líquida, 374 Celebridade, 126 Central de equipamentos (Headend), 165 Centro de G, 21 Ciclo(s) , 17 Aresta Antipodal, 284 euleriano, 16 Eulerianos, 220 Hamiltoniano, 17 Steiner Terminal, 497 Vértice Antipodal, 284 via Matching, 562, 565 Cintura de G – g(G), 20 Circunferência de G, 20 Classe do Problema do Caixeiro Viajante com Coleta de Bônus, 595 com Restrição de Sequenciamento, 589 com Restrição de Tempo, 588 em Subciclos, 593 Estocástico, 605 Clique Máxima/Maximal, 302 Clique Maximal e Máxima, 301 Coárvore Geradora, 133 Cobertura(s), 294 com Vértices Ponderados, 294 Conexa de Vértices, 299

Conexa, 300 de Arestas, 294 de Ciclos, 297 de Cliques Mínima, 302 de Cliques, 302, 303 de Vértices, 294, 295 em Caminhos de G, 296 em Ciclos de G, 296 em k-Ciclos, 296 em L-Ciclos, 296 Mínima em Caminhos de G, 298 minimal, 294 Parcial, 299 Máxima, 299 Ponderada, 296 Coloração, 418, 420 Acíclica, 438, 440 Completa, 422 de Arestas, 427, 434 Equilibrada, 472 Exata, 423 Forte, 425 Fraca, 425 Hamiltoniana, 433, 434 Harmoniosa, 423, 424 Split, 457 t-múltipla, 472 Total, 427 Total Distinta, 429 Total Distinta em Vértices Adjacentes, 428 Completando as arestas de G, 126 Componente Conexa, 28 Conectividade em Arestas, 29 em Vértices, 29 Conexidade, 186 em Arestas, 29 em Vértices, 29 Conjectura, 338, 433 Conjunto Conector, 350 Mínimo, 350 Conjunto de Articulação, 31 Conjunto Dominante, 304 Conexo, 305 Independente, 305 Perfeito, 305 simétrico, 332

Índice Remissivo

Conjunto Independente, 307 Máximo Ponderado, 325 Ponderado, 325 Exato, 325 Conjuntos de Desconexão, 31 Conservação de fluxo em uma Rede, 370 Corda, 19 Corte(s), 31 em Arestas, 32 em Vértices, 32 s-t em uma Rede, 374 Cruzamento de Arestas, 41 D Decomposição em Árvore, 321 em Subgrafos, 318 Decomposição de G em árvore, 319 em subgrafos H, 318 Diagrama de setas, 242 Diâmetro de G, 21 Dtour, 87 Diferenças de Grafos, 48 Difusão Ótima, 329 Distância Dtour, 87 Distância entre Árvores, 135 Distância entre Vértices, 14 Dominância de Vértices, 306 E Emparelhamento, 308 Máximo, 409 Ponderado Mínimo, 315 Ensinando o Computador a Girar Cubos, 109 Escorpião, 69 Estruturas de Dados para Grafos, 53 Excentricidade, 21 Dtour, 87 F Família de Grafos Especiais, 36 Perfeitos, 417 Fecho Transitivo de um Grafo, 11 de um Vértice, 11

Floresta, 133 Floresta de Steiner em Grafo Direcionado, 503 Fluxo em Redes, 368 entre Conjuntos de Vértices, 368 Líquido, 374 Viável, 371 Folga de um Arco, 276 Folhas da Árvore, 24 G Gargalo de Fluxo, 375 Genus de um Grafo, 462 Grafo(s) 1-Fator, 316 Anel, 250 Antipodal, 87 aresta (edge graph), 70 Bipartido, 36 Bipartido Completo, 37 Buraco e Anti-Buraco, 416 Caminho, 135 capacitados, 295 Ciclo, 17 Circulante, 257 Circular, 343 Clique, 37 cobertura (covering graph), 70 com Apelidos, 68 Complementar, 49 Complemento, 49 Completo, 37 Conexo(s), 24, 28 conjugado (conjugate graph), 70 Cordal, 459 Crítico, 424 D-Distância, 249 das permutações das cadeias de acordes, 115 de Aumento de Fluxo, 376 de Discos 94 de Distância Regular, 249 de Estado, 96, 100 para a Solução do 8-Puzzle, 99 de Halin, 168 de Harary, 247 de Knödel, 255 de Kuratowski, 44

619

de proximidade, 118 de Recrutamento, 112 de Tietze, 441 de Turán, 341 de Visibilidade, 92, 126 de Xadrez, 95 Deck, 337 derivado (derived graph), 70 derivativo (derivative), 70 Direcionado, 8 Dividido, 340 Dual, 46 em xadrez, 126 Engrenagem, 256 Escada, 254 de Mobius, 255 Especiais Associados às Árvores, 168 Estrela, 130 Euleriano, 222 Exemplos, 2 Extremal, 341 Finitos, 10 Fracamente Conexo, 186 Fracamente Perfeitos, 417 Gaiola, 341 Gracioso, 461 Grade, 253 Hamiltoniano, 217 Hipercubo, 251 Hipohamiltoniano, 263 Homeomorfo, 44 Ímpar, 460 Infinitos, 10 intercâmbio (interchange graph), 70 Interseção, 466 Intervalar, 466 Isomorfo, 43 k-Aresta-Conexo, 187 k Comprimento de Banda, 432 k-Conexo, 30 k-Cubo, 251 k-fator, 316 k-Potência, 337 k-Tenaz, 187 k-Vértice-Conexo, 187 Kneser, 460 Linha, 70 Livre de Triplas Asteoidais, 467

620

Grafos

Livro, 255 Meyniel, 462 MinMax, 103 Minor, 45 Não Ponderado, 195 Notação Básica, 2 Ore, 248 Outerplanar, 464 Outerplanar, 464 Pancíclico, 247 Par, 24 para a Modelagem de Jogos, 101 para Análise de Personagens Literários, 113 para moléculas, 123 Perfeitos, 416 Pirâmide, 69 Planar, 40 Platônico, 251 Poliédrico,252 Ponderado, 8, 195, 295 Prisma, 253 Probe, 340 r-Tenaz, 188 Reconstrução, 338 reflexivo, 7 Regular, 23, 39 Roda, 256 Rotulado, 8 Sanduíche, 336 semi-hamiltoniano, 217 semieuleriano, 222 singleton, 7 Slim, 463 Snark, 463 Split, 340 Threshold, 458 Torneio, 39 Total, 429 Triangularizado, 459 trivial, 7 Unicamente Colorível, 473 Unidistância, 249 vazio, 7 Grau de De saturação, 420 De um Vértice, 22 externo, 22 interno, 22

H Harary, 218 Heurística(s) Baseadas em Grupamentos, 557 de Christofides, 553 de Economia, 554 de Grupamentos, 560 de Inserção de Arestas, 543 de Inserção de Vértices, 539 de Inserção e Deslocamento de Vértices – Shift, 544 de k-Substituições, 548 dos Retalhos, 557 em Cobertura de Ciclos, 562 Exchange, 546 Twice-Around, 551 Hiker Dice Hamiltoniano, 608 Hipergrafo, 7 Homeomorfismo, 44 Homomorfismo, 420 de Mínimo Custo, 421 Máximo, 421 I Índice Cromático Circular, 434, 435 Índice de Wiener, 15 Índice Estrela, 437 Índice Subcromático, 437 Inserção, 48 Instrução, 453 Interferência, 454 Invariantes, 317 Isomorfisco, 43 J Jogo da Velha Através de Grafos, 104 Jogo Sudoku, 449 Jogos, tipos de Assimétricos, 102 Informação imperfeita, 102 Informação perfeita, 102 Quanto à bonifi cação, 102 Quanto à informação, 102 Quanto à simetria, 102 Quanto ao processo de decisão, 102 Sequenciais, 102 Simétricos, 102 Simultâneos, 102 Soma diferente de zero, 102

Soma zero, 102 K k-Árvore de Steiner, 495 k-Conexidade, 187 K-Cortes, 33 k-Packing, 308 L Labirinto, 126 Laço, 7 Latência, 582 1a Lei de Kirchoff, 370 Light Up, 335 Lista de Adjacência, 55 Localização de Facilidades, 333 M Manejo Ecológico de Reservas Vegetais, 117 Matching, 308, 316 Matriz de Adjacência, 53 Matriz de Ciclos, 187, 189 Matriz de Corte, 32, 33 Matriz de Incidência, 54 Matriz de Pesos, 56 matryoshkas, 124 Modelos de Steiner com Coleta de Bônus, 492 Movimentação de Satélites de Exploração, 239 Multigrafo, 7 N Net Worth Maximization Problem, 492 Nós, 2 Nulidade de um Grafo – r, 35 Número Acromático, 422 Bicromático, 436 Ciclomático, 35 Cobertura de Clique, 302 Cocromático, 436 Cromático, 418 Acíclico, 438 e Acromático, 423 Forte, 425, 427 Hamiltoniano, 433 Harmonioso, 423 Total, 427 de Absorção Cromático, 448

Índice Remissivo

de Arestas, 23 de Partição de Cliques, 302 de Pré-coloração, 447 de Vértices, 23 Star-Cromático, 432, 433 Subcromático, 436 t-Cobertura Total, 300 T-Cromático, 430 O Operação de Adição de Arestas, 50 Operação de União Total de Grafos, 51 Operações com Grafos e Estruturas Parciais, 43 Ordem de um Grafo, 9 Otimização de Cadeias de Varreduras e Semicondutores, 576 Otimização de Distribuição de Sinal em Redes, 162 Otimização de Operações de Robôs Industriais, 238 Otimização de Rotas Aéreas, 452 Otimização de Sistemas com Grau de Incerteza, 167 Otimização de Sistemas de Identificação Postal, 452 Otimização de Sistemas Submersos em Campos de Petróleo OffShore, 166 Otimização de Uso de Registros em Compiladores, 453 P Partição de Cliques Mínima, 302 Partição de G em Caminhos Disjuntos, 197 Partição em Caminhos k-longos, 298 Partição em Cliques, 302 Partição em Estrelas, 437 Passeio(s), 12 da empilhadeira, 269 do Pistoneio, 574 do robô curioso, 283 do Cavalo, 218 Percurso, 12 Pré-Euleriano, 19 Pré-Hamiltoniano, 19 PERT/CPM, 241 Planejamento de disciplinas, 124

Ponte, 31 Pontos de distribuição, 165 Problema Bidirecional com uma Estação Entrada/Saída, 456, 457 Problema da Absorção Cromática, 447 problema da árvore geradora mínima robusta, 167 Problema da Circulação Viável em Redes, 387 Problema da Coleta com Orçamento, 492 Problema da d-Pré-coloração, 448 Problema da Datação de Sepulturas em Sítio Arqueológico, 241 Problema da Empilhadeira, 235 Problema da Extensão de uma Précoloração, 447 Problema da Fofoca, 326 Problema da Insanidade Instantânea, 107 problema da k-ésima melhor Árvore Geradora Mínima, 137 Problema da Modulação da Energia em Reatores Nucleares, 330 Problema da Otimização da Assimetria (Skew) de Ligações em Circuitos de Sincronização, 515 Problema da Otimização de Ligações em Circuitos Integrados, 514 Problema da Otimização de Turbinas, 236 Problema das n rainhas, 124 Problema das n torres, 123 Problema das Quatro Cores, 419 problema de Alocação de Frequências, 450 Problema de Aproveitamento de Carga em Aviões de Passageiros, 392 Problema de Emparelhamento, 391 Problema de Enumerar as Cliques de G, 302 Problema de Minimização de Goemans e Williamson, 492 Problema de Programação de Tarefas, 451

621

Problema de Steiner em Estrela, 491 Problema de Steiner em Grafos, 484 Problema de Steiner Generalizado, 490 Problema de Transporte, 390 Problema de Transporte de Bagagens em Aeroportos, 573 Problema do barqueiro, 97 Problema do Broadcasting, 329 Problema do Caixeiro Viajante, 536 Alugador, 601, 602 Coleta e Entrega, 591 com Alvos Móveis, 586 com Coleta de Bônus, 595 com Coleta e Entrega, 592 com Janelas de Tempo, 588 com Lucros (Profits), 597 com Recompletamento, 585 com Requisitos de Separação, 593 com Sequência de Clientes, 590 Comprador, 599 de Máximo Espalhamento, 583 de Mínima e de Máxima Latência, 582 em Matriz Circulante, 586 On-line, 587 Periódico, 587 Preto e Branco, 590 Remoto, 582 Rotulado, 581 Seletivo ou Orienteering, 596 Subtour, 594 Variantes do, 587 Problema do Caminho de Pascal, 260 Problema do Carteiro ao VentoWindy, 233 Problema do Carteiro Chinês, 233 Problema do Carteiro Rural, 235 Problema do Fluxo Máximo, 373 Problema do Hiker Dice, 246 Problema do k-Carteiro Chinês Min-Max, 234 Problema do k-Carteiro Chinês, 234

622

Grafos

Problema do Sequenciamento de Genoma, 237 Problema do Valor Mínimo para a Coleta de Bônus, 492 Problema dos Caminhos Disjuntos em Arestas, 198, 504 Problema dos Caminhos Disjuntos em Vértices, 198 Problema dos Sinos da Catedral de Saint-Paul, 114 Problema Unidirecional com uma Estação Entrada/Saída, 456 Problemas Associados à Coloração, 447 Problemas de Otimização Associados, 325 Problemas de Robótica, 455 Procedimentos Gerais de Busca Local, 565 Processador, 453 Produto Cartesiano de Grafos, 52 Propriedades das Árvores, 130 pseudografo, 7 Q q-Árvore, 86 q-Passeio, 86, 279 Quase-Árvore, 168 R Raio de G, 21 Raio Dtour, 87 Rank de um Grafo – r, 35 Reconstrução de DNA com Fragmentos, 237 Rede, 368 Rede em camadas, 382 Rede interna, 165 Rede óptica, 164 de distribuição, 165 drop, 165 Redes de Interação entre Proteínas, 454

Redes Urbanas de Distribuição de Gás Natural, 516 Representação em Estrela Direta, 56 Representação em Estrela DiretaReversa, 58 Representação em Estrela Reversa, 57 Representação Vetorial, 55 S sequência de cadeias, 114 sequência de graus, 23 sequência plain bob, 114 Simplex de um Grafo, 339 Soma de Grafos, 47 Soma Disjunta de Grafos, 46 Soma em Anel, 47 Speeding Deliveryman Problem, 588 Steiner Coleta de Bônus, 495 Steiner em Grupamentos, 499 Steiner Generalizado, 491 Stem-and-Cycle, 565 subárvore, 130 Subcoloração de Arestas, 437 de Vértices, 436 de Vértices, 437 Subgrafo(s), 25 Aresta-Removido, 337 Euleriano Gerador, 536 Gerador, 26 Induzido por Arestas, 26 Induzido por Vértices, 26 Maximal, 27 Parcial, 25, 26 Próprio, 25 Vértice-Removido, 337 Sucessores, 10, 14 Supergrafo(s), 25, 27 T T-Clique, 301

t-Cobertura Total de Vértices (Arestas), 300 T-Coloração, 430, 431 T-Span, 431 Tamanho de um Grafo, 9 Técnica de Lin & Kernighan, 570 Teorema das Quatro Cores, 440 Teorema de Dirac, 218 Teste de Circuito, 454 Tira de Möbius, 441 Torneio, 306 Torres de Hanói, 119 bicoloridas, 127 Traveling Repairman Problem, 588 Trilha, 13 Asteroidal, 467 U União Disjunta de Grafos, 46 V Variantes do Caixeiro-viajante, 577 Variantes do Caminho mais Curto, 228 Variantes do Carteiro Chinês, 236 Variáveis livres, 96 Vértice(s) , 2 Antipodal, 87 em um Ciclo Ck, 284 conservativos, 370 de ligação, 563 de passagem de fluxo, 370 Extremos, 24, 25 fonte, 370 Fortemente Conectados, 186 Fracamente Conectados, 186 Imperador, 306 Rei, 306 Saturado, 310 sumidouro, 370 Terminais, 24, 25 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. 2. 3. 4.

Os vértices vizinhos são 2,3, 6, 11, 12 e 8. Como o grafo é não direcionado e conexo, o fecho de 1 é o próprio conjunto de vértices do grafo. Passeio 3-2-1-3-7-6-3-2-7-2. 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ância 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

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

3

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 Grafo

Rank = 12

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 nk + nk+1 = n

(1) (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 induzido por arestas3. 1. É suficiente dizer que G’ é subgrafo próprio de G, porque N’  N. Também seria suficiente afirmar a condiçã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 procedimento é 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 conexo, utilizando

, então o algoritmo para verificar se um grafo é

a estrutura de dados de lista de adjacências, tem complexidade O(n+m).

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

e_conexo

Ler G = (N,M) Início Para i ← 1 até |N| Faça marca [i] ← 0 Fim_para a←1 Para i ← 1 até |N| Faça Se (marca [i] = 0) então a←0 i ← |N| + 1 Fim _se Fim_para Se (a) então Escreva "G é conexo" Senão Escreva "G não é conexo" Fim

A 1 2 3 4 5 6

busca-prof(I )

busca_prof(i) Início marca [v] ← 1 Para todo v  lista_adj[i ] Faça Se (marca[v] = 0) então busca_prof(i ) Fim_se Fim_para 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 condiçã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, depois 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 G1 e G2

G4 = Soma de G1 e G2

G5 = Interseção de G 1 e G2

G6 = Complemento de G1

G7 = Diferença de 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

Matriz de incidência do grafo

Quadrado da matriz de adjacência do grafo

Cubo da matriz de adjacência do 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 remoçã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 escavação dos blocos da camada 3

(2) Representação da influência do bloco 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 formiga, 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 possí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 movimento +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

Figura 3: Expansão dos vértices 5, 6 e 7

(3) Expansão do vértice 5

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 balanç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 elimina 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 falhar (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 pesagens 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 recipientes é 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 qualquer 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 com um único amigo

(2) Uma solução para 4 sócios com um único amigo

(3) Uma solução para 5 sócios 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.

Gráficos

18

(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 confiabilidade 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

(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

19

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 Remove h1 de H Até | T | = n Escrever T {arestas da árvore geradora mínima}

O(mlogm)

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 árvore 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 antecederam 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 Fim_Enquanto Escrever Z* e T*

O(m2logm)

100 EXERCÍCIOS RESOLVIDOS  Soluções

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

21

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 é bipartido, 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 resultado 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 algoritmo 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értices 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 árvore 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 algoritmo 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 percorrido 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értices 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.

Nova AGM

A 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 adjacê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 mesmas 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 incluir, finalmente, a aresta (MAN,CBA) na 18a iteração, completando a árvore. A árvore gerada pelo algoritmo possui peso 9297.

Mapa do Brasil com as cidades sede da Copa de 2014

(1)

(2)

(3)

100 EXERCÍCIOS RESOLVIDOS  Soluções

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

27

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

(22)

(23)

(24)

(25)

(26)

(27)

(28) Solução final

29

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 associados 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

(1) Grafo

31

(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 pertencem 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 composiçã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 elemento 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 é recuperado 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, bastando 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 grafo 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 componentes, 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 de fonte. Se G possuir mais de uma Caminho Hamiltoniano A fonte, G não possui caminho hamiltoniano, pois não é possível construir Ler G = (N,M) um caminho entre as duas fontes. c ← conta_fonte(G) De modo análogo, para que G posSe c = 1 então sua caminho hamiltoniano, G deve s ← fonte(G) Caminho ← {s} possuir apenas um vértice com Fim_se grau externo 0, chamado de sumiEnquanto (c = 1) e (s ≠ nulo) Faça douro. O subgrafo induzido de G c←0 pela remoção da fonte (do sumidouPara todo v  Γ+(s) Faça ro) deve possuir a mesma propriegrau_int(v) ← grau_int(v) – 1 dade, ou seja, possuir apenas uma Se grau_int(v) = 0 então fonte (um sumidouro). fonte ← v Baseado no que foi anteriormente c←c+1 exposto, é possível construir um alFim_se goritmo que, iterativamente, retire Se c = 1 então s ← fonte a fonte s do grafo corrente e veriCaminho ← 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 mensagem de que o grafo não posSe (c > 1) então sui caminho hamiltoniano. Caso Escreva “Não existe caminho hamiltoniano” contrário, v é assumido como a fonte Senão na próxima iteração do algoritmo. A Escreva Caminho variável c guarda o número de fontes

36

Gráficos

do grafo. O valor de c para o grafo inicial pode ser 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 adjaPara 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 identifica a fonte s, a qual é incluída como o primeiro Figura 1 do exercício 7: Complexidade do Algoritmo 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 termina. A nova fonte é incluída na solução.

Complexidade

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 propagandas. A solução do problema é o caminho mais longo ligando o vértice início ao vértice fim. O grafo apresentado 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 conjunto 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 representando o ponto de alça no corredor e vértices de passagem dos túneis representando 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 caminho entre qualquer vértice de entrada até qualquer vértice ninho, atendendo as janelas de tempo das alças do caminho.

Grafos dos corredores, ninhos e alças

100 EXERCÍCIOS RESOLVIDOS  Soluções

Corrida para a janela de tempo de 5 unidades

Exercício no 16

Grafo hipo-hamiltoniano

43

44

Gráficos

Exercício no 17

Um grafo grid 5 × 5 não é hamiltoniano, porque possui dimensõ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 contenha 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

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

45

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 arestas. 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 maximizar 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 representa 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 localizado 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

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.

49

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 cardinalidade 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 perí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ências 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á comprometida. 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 variá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értices em cada subconjunto, como exemplifica a Figura 1(2).

54

Gráficos

(1) Turán (6,2) – 9 arestas

Exercício no 13

Exercício no 14

(2) Turán (6,3) – 12 arestas

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 (denominados 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értices. Como o produto cartesiano cria uma aresta entre cada vértice de G e sua cópia associada em GC, no grafo formado todos os vértices de G possuem uma aresta ligando ao seu vértice imagem em GC. Portanto, qualquer caminho maximal em G pode ser ligado em suas duas extremidades ao seu respectivo caminho maximal em GC, formando um ciclo hamiltoniano.

Exercício no 2

A ligação entre os dois caminhos maximais em G e GC é exibida pelas setas verdes.

Figura 1 da solução do exercício: Representação da vizinhança de blocos

56

Gráficos

Exercício no 3 Considerando cada torno mecânico modelado por um vértice fonte. Considerando também cada tarefa modelada 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 sumidouros (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 inferior 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 garantem 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, diferentemente 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 citados. Todavia, problemas complexos podem ser aproximados rápida e eficientemente através de modelos relativamente 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 sentido 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 iniciando 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

Figura 3: Rede de conexão entre rotas

Figura 4: Voos encadeados

61

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 interconexã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 & Powell. 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)

2

C1 = ... = Cn = 

3

Ordenar os vértices {x1, ..., xn} de modo que d(xi) ≥ d(xi + 1)

4

Para i ← até n faça

5

k ← min { j | Γ (xi)  Cj = }

6

Ck = Ck  { xi }

7

A complexidade do algoritmo de Welsh & Powell é pela verificação das cores dos vértices adjacentes ao vértice que deverá ser ordenado.

O(n2)

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

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

67

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 – Teorema 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 (ambos planares) representa o conjunto de todas as vizinhanças que deverão ser evitadas na solução. A coloração do grafo é apresentada 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 cardinalidade 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 cromá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

(1)

71

(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 observasse 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 Eduardo 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 necessá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

Exercícios Resolvidos do Capítulo 9 Exercício no 1

1-2-3-4-5-6 – Custo 83

1-2-3-5-4-6 – Custo 68

1-3-2-4-5-6 – Custo 85

1-2-3-4-6-5 – Custo 62

1-2-4-3-5-6 – Custo 85

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

75

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 Proceedings of the Fifth Annual ACM Symposium on Theory of Computing 38-49.
Marco Goldbarg and Elizabeth Goldbarg (Auth.) - Grafos (2012)

Related documents

707 Pages • 189,602 Words • PDF • 144.2 MB

3 Pages • 978 Words • PDF • 431.4 KB

1 Pages • 418 Words • PDF • 94.1 KB

160 Pages • 24,686 Words • PDF • 2.4 MB

186 Pages • 89,268 Words • PDF • 2.5 MB

11 Pages • 1,940 Words • PDF • 2.2 MB

355 Pages • 67,466 Words • PDF • 1.3 MB

221 Pages • 73,322 Words • PDF • 1.3 MB

683 Pages • 220,861 Words • PDF • 5.7 MB

53 Pages • 3,111 Words • PDF • 342.5 KB

11 Pages • 1,635 Words • PDF • 896 KB

9 Pages • 2,263 Words • PDF • 456.4 KB