Prévia do material em texto
Introdução à Teoria dos Grafos Edson Prestes 2020 Dedico este livro à minha famı́lia e amigos. O importante é o ser e não o vir a ser; um não é o oposto do outro, havendo o oposto ou a oposição, cessa o ser. Ao findar o esforço para vir-a-ser, surge a plenitude do ser, que não é estático; não se trata de aceitação; o vir-a-ser depende do tempo e do espaço. O esforço deve cessar; disso nasce o ser que transcende os limites da moral e da virtude social, e abala os alicerces da sociedade. Esta maneira de ser é a própria vida, não mero padrão social. Lá, onde existe vida, não existe perfeição; a perfeição é uma idéia, uma palavra; o próprio ato de viver e existir transcende toda forma de pensamento e surge do aniquilamento da palavra, do modelo, do padrão. Jiddu Krishnamurti (1895-1986) Prefácio Este livro é resultado das minhas notas de aulas da cadeira de Teoria dos Grafos e Análise Combinatória que ministro desde 2005 no Instituto de In- formática na Universidade Federal do Rio Grande do Sul. Ao longo dos anos, tenho observado a necessidade de um livro nesta área escrito em português com linguagem acesśıvel. Assim nas minhas horas vagas detive-me a escrever este livro. Esta primeira versão demorou vários anos para ser finalizada de- vido aos meus inúmeros compromissos dentro e fora do Páıs. Ela contou com o apoio dos meus alunos Renata Neuland e Gean Stein, à Jéssica Dagostini, Vińıcius Lazzari no processo de revisão. Espero que este livro motive os alunos da graduação em ciência da com- putação e também de áreas correlatas a se interessarem pela área de teoria dos grafos. É claro que esta área é muito mais ampla e densa do que o conteúdo discutido nas páginas seguintes, porém penso neste livro como um passaporte de entrada para esta área magńıfica. Além das notas, este livro foi ancorado em obras magńıficas listadas abaixo : • F. Harary. Graph Theory. Addison-Wesley Publishing Company, 1969. • J. A. Bondy e U.S.R. Murty. Graph Theory with Applications. Elsevier Science Ltd/North-Holland. 1979. • J. Clark e D.A. Holton. A First Look at Graph Theory. World Scientific Pub Co Inc. 1991. • D. West. Introduction to Graph Theory. Prentice-Hall, Inc. 1996. • R. Diestel. Graph Theory. Springer-Verlag. 2005. • J. M. Harris, J. L. Hirst e M. J. Mossinghoff. Combinatorics and Graph Theory.Springer Science+Business Media, LLC. 2005. • J. Bang-Jensen e G. Gutin. Digraphs - Theory, Algorithms and Applications . Springer-Verlag. 2008. v Além de oferecer aos estudantes um livro com linguagem acesśıvel, eu o ofereço como um presente a todos aqueles que precisam adquirir conheci- mento nesta área e muitas vezes não possuem ou conhecimento básico ade- quado ou recursos financeiros. Por isso tentei ser o mais didático posśıvel neste texto e escrevi este trabalho sob a poĺıtica do Creative Commons. Acredito que qualquer pessoa mereça acesso ao conhecimento. Assim barrei- ras precisam ser quebradas e uma das formas de fazermos isso é através de publicações abertas. Já fui um estudante de graduação e sei a dificuldade que é adquirir uma obra na área. Espero que apreciem o trabalho, e desfrutem dele sem moderação :) Edson Prestes This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 vi This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Conteúdo 1 Fundamentação Teórica 1 1.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Relação de Vizinhança . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Matrizes de Adjacência e de Incidência . . . . . . . . . . . . . 11 1.4 Passeios e Circuitos . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5 Grafos Eulerianos e Hamiltonianos . . . . . . . . . . . . . . . 18 1.6 Isomorfismo e Automorfismo . . . . . . . . . . . . . . . . . . . 22 1.7 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.7.1 Associação de Tarefas . . . . . . . . . . . . . . . . . . 26 1.7.2 Robótica . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.7.3 Nichos Ecológicos . . . . . . . . . . . . . . . . . . . . . 27 1.7.4 Rede de Telefonia Móvel . . . . . . . . . . . . . . . . . 28 1.7.5 Reconhecedores de sentenças . . . . . . . . . . . . . . . 29 1.7.6 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . 29 1.8 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2 Tipos de Grafos e Operações 35 2.1 Grafos Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.2 Operações com grafos . . . . . . . . . . . . . . . . . . . . . . . 39 2.2.1 União . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.2.2 Junção . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.2.3 Intersecção . . . . . . . . . . . . . . . . . . . . . . . . 40 2.2.4 Produto . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.2.5 Complemento . . . . . . . . . . . . . . . . . . . . . . . 41 2.2.6 Remoção . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.2.7 Contração . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.2.8 Supressão e Subdivisão . . . . . . . . . . . . . . . . . . 44 2.2.9 Decomposição . . . . . . . . . . . . . . . . . . . . . . . 45 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 viii CONTEÚDO 2.2.10 Operador Linha L . . . . . . . . . . . . . . . . . . . . 46 2.3 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3 Conectividade 51 3.1 Relação de Vizinhança Estendida e Fechamento Transitivo . . 52 3.2 Grafos Conexos e Desconexos . . . . . . . . . . . . . . . . . . 55 3.3 Vértice de Corte . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.4 Aresta de Corte . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.5 Conectividade em Dı́grafos . . . . . . . . . . . . . . . . . . . . 61 3.6 Cálculo de Componentes . . . . . . . . . . . . . . . . . . . . . 67 3.7 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4 Relacionamentos V-A 73 4.1 Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.2 Conjunto Independente . . . . . . . . . . . . . . . . . . . . . . 77 4.3 Cobertura de Vértices . . . . . . . . . . . . . . . . . . . . . . 81 4.4 Conjunto Dominante . . . . . . . . . . . . . . . . . . . . . . . 84 4.5 Emparelhamento . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.6 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5 Enumeração 97 5.1 Método de Maghout . . . . . . . . . . . . . . . . . . . . . . . 97 5.2 Enumeração em Grafos . . . . . . . . . . . . . . . . . . . . . . 101 5.2.1 Coberturas de Vértices e Conjuntos Independentes . . 101 5.2.2 Cliques . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.2.3 Conjuntos dominantes . . . . . . . . . . . . . . . . . . 104 5.2.4 Emparelhamentos . . . . . . . . . . . . . . . . . . . . . 106 5.3 Enumeração em Dı́grafos . . . . . . . . . . . . . . . . . . . . . 111 5.3.1 Coberturas de Vértices e Conjuntos Independentes . . 111 5.3.2 Coberturas de Fonte e Sumidouro . . . . . . . . . . . . 114 5.3.3 Cliques . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 5.3.4 Conjuntos Dominantes . . . . . . . . . . . . . . . . . . 116 5.3.5 Emparelhamentos . . . . . . . . . . . . . . . . . . . . . 121 5.4 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6 Árvores 125 6.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . 125 6.2 Árvores Enraizadas . . . . . . . . . . . . . . . . . . . . . . . . 128 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 CONTEÚDO ix 6.3 Árvores de Espalhamento . . . . . . . . . . . . . . . .. . . . 133 6.4 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 7 Planaridade 147 7.1 Multigrafos Planares . . . . . . . . . . . . . . . . . . . . . . . 147 7.2 Teorema de Euler . . . . . . . . . . . . . . . . . . . . . . . . . 150 7.3 Teorema de Kuratowski . . . . . . . . . . . . . . . . . . . . . 154 7.4 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 8 Coloração 157 8.1 Grafos Coloŕıveis . . . . . . . . . . . . . . . . . . . . . . . . . 157 8.2 Grafos Aresta-Coloŕıveis . . . . . . . . . . . . . . . . . . . . . 162 8.3 Polinômio Cromático . . . . . . . . . . . . . . . . . . . . . . . 163 8.4 O teorema das quatro cores . . . . . . . . . . . . . . . . . . . 168 8.5 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 x CONTEÚDO This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Caṕıtulo 1 Fundamentação Teórica A Teoria dos Grafos surgiu com os trabalhos de L. Euler, G. Kirchhoff e A. Cayley. O primeiro e mais famoso problema, chamado o problema das pontes de Königsberg foi enunciado por Euler em 1736. Na cidade de Königsberg Problema das Pontes de Königsberg (antiga Prússia), existiam sete pontes que cruzavam o rio Pregel estabele- cendo ligações entre diferentes partes da cidade e as ilhas Kneiphof e Lomse (ver Figura 1.1). O problema consistia em determinar se era posśıvel ou não fazer um passeio pela cidade começando e terminando no mesmo lugar, cru- zando cada ponte exatamente uma única vez. Veremos na Seção 1.5 que a resposta para esta pergunta é não. A Teoria dos Grafos possui aplicação direta em áreas como f́ısica, qúımica, engenharias, psicologia, etc. Em particular, ela é de fundamental importância aos cursos de Ciência e Engenharia da Computação. Isto se deve a inúmeros motivos, entre eles, o fato de servir de modelo matemático para alguns dos problemas mais importantes e dif́ıceis da computação. Estes problemas estão associados à classe de problemas NP-Completos, cuja solução em tempo po- linomial por uma máquina de turing determińıstica não é conhecida. Vários problemas do mundo real podem ser analisados usando a Teoria dos Grafos, por exemplo, o escalonamento de processos pode ser visualizado como um aplicação direta do problema de coloração de grafos; o problema de reconhecimento de padrões pode ser visto como uma instância do problema de isomorfismo em grafos; o problema de roteamento é o problema de verificar se um grafo é Hamiltoniano ou não, e se for determinar o ciclo hamiltoniano de custo mı́nimo. Este livro introduz a base teórica da área de Teoria dos Grafos, apresen- tando os principais conceitos (definições, propriedades, classes, teoremas) e This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 2 Fundamentação Teórica problemas. Exemplificaremos sempre que posśıvel o uso destes conceitos em problemas do mundo real. Além disso, será dada ênfase ao aspecto combina- torial da área apresentando o uso da análise combinatória em problemas de enumeração e contagens. Figura 1.1: Pontes de Königsberg 1.1 Conceitos Básicos Definição 1.1. Um grafo simples G = (V,A) é uma estrutura discreta for-Grafo Simples mada por um conjunto não vazio de vértices V e um conjunto de arestas A ⊆ P(V ), onde P(V ) = {{x, y} : x, y ∈ V } é o conjunto de todos os pares não ordenados1 não necessariamente distintos gerados a partir de V . Cada aresta {x, y} ∈ A é formada por um par de vértices distintos, i.e., x 6= y. Para cada par de vértices existe no máximo uma aresta associada. Dois vértices x e y são adjacentes se e somente se existe uma aresta {x, y} ∈ A. Neste caso, dizemos que a aresta {x, y} é incidente aos vérticesVértices Adja- centes x e y. Quando um vértice não é adjacente a outro, dizemos que ele é um vértice isolado. Um grafo deixa de ser simples quando possui múltiplas arestas entre o mesmo par de vértices e/ou quando possui uma aresta, chamada laço, inci- dente a um par de vértices não distintos. Se o grafo possuir múltiplas arestas e não possuir laços então ele é chamado multigrafo , caso contrário, se eleMultigrafo possuir laços então é chamado de pseudografo. A existência de múltiplasPseudografo 1Um par não ordenado formado pelos vértices x e y é representado por {x, y}, onde {x, y} = {y, x}. Se x = y, então {x, y} = {x, x} = {x}. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.1 Conceitos Básicos 3 arestas, leva à definição da função φ : A → P(V ), chamada de função de Função de In- cidênciaincidência do grafo, que mapeia cada aresta ao par de vértices associado. Isto permite distinguir cada aresta individualmente. Baseado nisto, temos a seguinte definição que inclui multigrafos, pseudografos e grafos simples. Definição 1.2. Um grafo G = (V,A, φ) é um conjunto não vazio de vértices V , um conjunto de arestas A, e uma função de mapeamento φ : A → P(V ) que mapeia cada aresta a um par não ordenado formado pelos vértices de G. O número de vértices de G, denotado por |V | indica a ordem de G, enquanto que o número de arestas, denotado por |A|, indica o tamanho de G2. (a) (b) Figura 1.2: Exemplos de (a) grafo simples e (b) pseudografo A Figura 1.2 mostra um (a) grafo simples e um (b) pseudografo, onde as li- nhas representam as arestas e os ćırculos escuros representam os vértices. Em (a), cada aresta une um par de vértices distintos e não existem múltiplas ares- tas unindo um mesmo par. Logo, cada aresta é representada pelos vértices os quais incide, por exemplo, a aresta unindo os vértices 1 e 2 é representada por {1, 2}. Assim, φ({1, 2}) = {1, 2}, i.e., φ({x, y}) = {x, y}, ∀{x, y} ∈ A. Em (b) existem múltiplas arestas unido os vértices 1 e 2, e os vértices 3 e 4. Para distingui-las, as arestas são rotuladas com as letras de a a h. Observe que φ(f) = φ(g) = φ(h) = {3, 4} e φ(a) = φ(b) = {1, 2}, porém f 6= g 6= h 2Alguns autores usam |G| e ||G|| para indicar a ordem e o tamanho de G, respectiva- mente This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4 Fundamentação Teórica e a 6= b. Quando um dado par de vértices está associado a k arestas distin- tas, dizemos que ele possui multiplicidade igual a k, i.e., µ(x, y) = k. NesteMultiplicidade de Arestas caso, a multiplicidade do par {3, 4} é igual a µ(3, 4) = 3, enquanto que a multiplicidade do par {1, 2} é igual a µ(1, 2) = 2. Em um grafo simples a multiplicidade de cada par de vértices é no máximo igual a 1. Em (a), existe um vértice isolado representado pelo vértice 5, enquanto que em (b), existe um laço representado pela aresta e. Se (b), não possúısse o laço e, então seria um multigrafo. A existência de laço indica que o grafo é um pseudografo. Neste livro iremos apenas distinguir o grafo simples dos demais grafos, que serão chamados apenas por grafos. Para este exemplo, o grafo da Figura 1.2(a) é representado por Ga = (Va, Aa, φa) ou apenas por Ga = (Va, Aa), pois como ele é simples, a função φa(.) se torna a função identidade podendo ser suprimida. Os conjuntos de vértices e arestas são definidos por Va = {1, 2, 3, 4, 5} e Aa = {{1, 2}, {1, 3}, {3, 2}, {3, 4}}, respectivamente. Por outro lado, o grafo da Figura 1.2(b) é definido por Gb = (Vb, Ab, φb) com Vb = {1, 2, 3, 4}, Ab = {a, b, c, d, e, f, g, h} e φb = ( a b c d e f g h {1, 2} {1, 2} {1, 3} {2, 3} {2} {3, 4} {3, 4} {3, 4} ) Se retirarmos os laços e todas as múltiplas arestas entre cada par de vértice, mantendoapenas uma, transformaremos um pseudografo em umGrafo Subja- cente a Pseudo- grafos e Multi- grafos grafo simples. O mesmo pode ser feito no caso de multigrafos, porém não existem laços para serem removidos. O grafo simples encontrado é chamado de grafo simples subjacente, ou apenas, grafo subjacente ao multigrafo ou ao pseudografo. Realizando este procedimento no grafo da Figura 1.3(a), encontramos o grafo simples mostrado em (b). As arestas de um grafo possuem a função de indicar o relacionamento entre os elementos que o grafo representa, que podem ser do mundo real ou não, de forma simétrica. Este relacionamento pode corresponder a uma propriedade espacial, comportamental, temporal ou outra. Em diversas si- tuações esta relação não é simétrica, por exemplo, o sentido do fluxo de carros nas ruas de uma cidade. Se representarmos cada entrocamento (cruzamento) desta cidade como sendo um vértice em um grafo e o fluxo permitido como sendo a relação entre os entrocamentos, veremos que em diversas situações a ida de um entrocamento A para o entroncamento B não implica a volta, ou seja, a ida do entroncamento B para o entrocamento A. Nesta situação This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.1 Conceitos Básicos 5 (a) (b) Figura 1.3: Exemplo de (a) pseudografo e seu (b) grafo simples subjacente. precisamos ter uma forma de indicar esta restrição no grafo. Isto é feito determinando uma direção para cada aresta. A inserção desta informação faz com que o grafo se torne orientado. As- sociando pares ordenados de vértices às arestas do grafo, teremos um grafo direcionado ou d́ıgrafo. Cada par ordenado3 (x, y) define um arco com ori- gem em (ou adjacente em) x e destino em (ou adjacente para) y, ou seja, (x, y) 6= (y, x). É comum dizermos que o vértice x domina y, e que o vértice y é dominado por x. De forma similar ao exposto anteriormente para grafos, Dominância um d́ıgrafo pode conter laços e múltiplos arcos entre um mesmo par ordenado de vértices. Quando um d́ıgrafo não possui laços tão pouco múltiplos arcos entre um mesmo par ordenado de vértices, ele é chamado d́ıgrafo simples ou grafo direcionado simples. Quando um d́ıgrafo possui múltiplos arcos de um Dı́grafo Simples vértice a outro, então ele é chamado de multigrafo direcionado. Quando k Multigrafo Dire- cionadoarcos têm origem no vértice x e destino no vértice y, então dizemos que o arco (x, y) tem multiplicidade igual a k, i.e., µ(x, y) = k. Em pseudografos e multigrafos, µ(x, y) = µ(y, x), o que não é garantido nos casos de multigrafos direcionados. Quando o d́ıgrafo não possui laços, múltiplas arestas entre um mesmo par ordenado de vértices, nem pares simétricos de arcos então ele é chamado de grafo orientado. Quando laços são permitidos laços, o d́ıgrafo é Grafo Orientado chamado de pseudografo direcionado. Pseudografo Di- recionado Definição 1.3. Um d́ıgrafo D = (Vd, Ad, φd) é um conjunto não vazio de vértices Vd, um conjunto de arcos Ad, e uma função de mapeamento φd : Ad → Vd × Vd que mapeia cada arco a um par ordenado formado pelos 3Um par ordenado formado pelos vértices x e y é representado de maneira tradicional por (x, y), onde, (x, y) 6= (y, x). This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6 Fundamentação Teórica vértices de D. De forma similar à definição usada para grafos, o número de vértices de D, denotado por |Vd| indica a ordem de D, enquanto que o número de arcos, denotado por |Ad|, indica o tamanho de D4. A Figura 1.4(a) ilustra um grafo orientado, enquanto que (b) ilustra um pseudografo direcionado. (b) possui múltiplos arcos entre um mesmo par ordenado, entre eles podemos destacar, os arcos a e b que têm origem no vértice 1 e destino no vértice 2. Além disso, ele possui o laço e. Se este d́ıgrafo não possúısse os arcos b, g e e, ele seria classificado como d́ıgrafo simples. Se removêssemos desse d́ıgrafo simples o arco h ou f , estaŕıamos eliminando o único par simétrico existente, e este d́ıgrafo passaria a ser um grafo orientado. Neste livro iremos apenas distinguir o grafo orientado dos demais d́ıgrafos, os quais serão chamados apenas por d́ıgrafos. (a) (b) Figura 1.4: Exemplos de (a) d́ıgrafo simples e (b) pseudografo direcionado De forma similar aos grafos, um d́ıgrafo possui um grafo subjacente. EleGrafo Subja- cente ao Dı́grafo é obtido substituindo cada arco por uma aresta, i.e., removendo a orientação de cada arco. Por exemplo, a Figura 1.2(b) mostra o grafo subjacente ao d́ıgrafo ilustrado na Figura 1.4(b). Definição 1.4. Um grafo G1 = (V1, A1) é um subgrafo de G2 = (V2, A2), denotado por G1 ⊆ G2 se e somente se V1 ⊆ V2 e A1 ⊆ A2. Neste caso 4Alguns autores usam |D| e ||D|| para indicar a ordem e o tamanho de D, respectiva- mente This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.2 Relação de Vizinhança 7 G2 é supergrafo de G1.(definição similar para sub- e superd́ıgrafos, porém considerando a orientação dos arcos). Se G1 é subgrafo de G2, então G2 é supergrafo de G1. Quando G1 6= G2, Subgrafo e Subd́ıgrafo de Espalhamento então G1 é um subgrafo próprio de G2. Quando V1 = V2, então G1 é chamado subgrafo gerador ou subgrafo de espalhamento de G2. Para um d́ıgrafo D1, um subd́ıgrafo D2 que contém um conjunto de vértices igual ao conjunto de vértices do d́ıgrafo original é chamado de subd́ıgrafo de espalhamento ou fator Fator do d́ıgrafo. Considerando um grafo G = (V,A) e um subconjunto não vazio Sv ⊆ V , um subgrafo de G induzido por Sv, denotado por G[Sv], é aquele que tem Grafo Induzido como conjunto de vértices Sv e como conjunto de arestas todas as arestas de G que possuam ambas extremidades em Sv. Se Sa ⊆ A é um subconjunto não vazio de arestas, G[Sa] é um subgrafo de G induzido por Sa que tem como conjunto de arestas Sa e como conjunto de vértices as extremidades das arestas de Sa(Os mesmo conceitos se aplicam aos d́ıgrafos, porém temos a expressão d́ıgrafo induzido). A Figura 1.5 ilustra (a) um grafo G e os subgrafos induzidos (b) G[Sv] e (c) G[Sa], assumindo Sv = {0, 4, 5, 6} e Sa = {{0, 4}, {0, 5}, {0, 1}, {2, 6}}. (a) (b) (c) Figura 1.5: Exemplo de grafo induzido por vértices e por arestas. (a) grafo G, (b) grafo induzido G[Sv] por um conjunto de vértices Sv e (c) grafo induzido G[Sa] por um conjunto de arestas Sa 1.2 Relação de Vizinhança Tanto as arestas de um grafo quando os arcos de um d́ıgrafo definem uma relação de vizinhança entre os vértices. Para um grafo G = (V,A, φ), o conjunto de vértices adjacentes a um vértice v ∈ V é definido pela função Função Multiva- lorada de Vizi- nhança multivalorada de vizinhança, τ : V ; 2V , τ(v) = {w : {v, w} = φ(e) ∧ e ∈ A} This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 8 Fundamentação Teórica onde v pode ou não ser igual a w. Quando v = w teremos v ∈ τ(v). O conjunto 2V é chamado conjunto das partes e contém todos os subconjuntos que podem ser formados usando os elementos de V . Se V = {1, 2, 3} então 2V = {∅, {0}, {1}, {2}, {0, 1}, {0, 2}, {1, 2}, {0, 1, 2}}. Portanto |2V | = 2|V |. Para um d́ıgrafo D = (Vd, Ad, φd), as funções multivaloradas de vizinhança direta τ+ : Vd ; 2 Vd e inversa τ− : Vd ; 2 Vd são definidas porFunções Multi- valoradas de Vi- zinhança Direta e Inversa τ+(v) = {w : (v, w) = φd(e) ∧ e ∈ Ad} e τ−(v) = {w : (w, v) = φd(e) ∧ e ∈ Ad}. A função τ+(v) retorna todos os vértices atinǵıveis diretamente a partir de v através dos arcos que têm origem em v, enquanto que τ−(v) retorna todos os vértices que atingem diretamente v através dos arcos que têm como destino v. Lembrando que φ(e)= e (ou φd(e) = e) para o caso de não existirem múltiplas arestas(ou arcos) entre um mesmo par de vértices. A quantidade de vizinhos de um vértice permite determinar o que é cha- mado grau de um vértice. Para um grafo simples, o grau de qualquer vértice v, denotado por d(v), é definido por d(v) = |τ(v)|5. Para um grafo qualquerGrau G = (V,A), o grau de um vértice v é definido pela quantidade n de arestas que unem v aos outros vértices do grafo(exceto ele próprio) e pela quantidade p de laços em v, ou seja, d(v) = n+ 2p. Quando um vértice v é isolado, ou seja, τ(v) = ∅, seu grau d(v) = 0. A partir dáı, podemos definir o menor e maior graus dentre todos os seus vérticesMenor Grau Maior Grau como, respectivamente, ∆(G) = max v∈V d(v) e δ(G) = min v∈V d(v). Note que δ(G) ≤ d(v) ≤ ∆(G), ∀v ∈ V. Na Figura 1.2(a), d(1) = 2, d(2) = 2, d(3) = 3, d(4) = 1, d(5) = 0, δ(G) = 0 e ∆(G) = 3. Enquanto que na Figura 1.2(b), d(1) = 3, d(2) = 5, d(3) = 5, d(4) = 3, δ(G) = 3 e ∆(G) = 5. 5O grau de um vértice é denotado por d devido a palavra grau ser em inglês chamada degree. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.2 Relação de Vizinhança 9 Teorema 1.1 (Handshaking Problem). Para um grafo G=(V,A), temos∑ v∈V d(v) = 2|A| Em um d́ıgrafo qualquer, cada vértice v possui um grau de entrada, d−(v), Graus de En- trada e de Sáıdae um grau de sáıda, d+(v). O grau de entrada de um vértice v é o definido pelo número de arcos que possuem como destino v (incluindo o laço) en- quanto que o grau de sáıda é o número de arcos que possuem como origem v (incluindo o laço). Um laço em vértice v é contado uma única vez no grau de entrada de v e uma única vez no grau de sáıda de v. Para d́ıgrafos simples (e grafos orientados), podemos usar as funções de vizinhança τ−(v) e τ+(v) para calcular os graus de sáıda e de entrada de cada vértice. Neste caso, para qualquer vértice v temos d−(v) = |τ−(v)| e d+(v) = |τ+(v)|. De forma similar ao exposto anteriormente, podemos definir para um d́ıgrafo D os graus de entrada máximo e mı́nimo, ∆−(D) e δ−(D), respecti- vamente, e os graus de sáıda máximo e mı́nimo, ∆+(D) e δ+(D), respectiva- mente. Na Figura 1.4(a), o d́ıgrafo tem d−(1) = 1, d−(2) = 2, d−(3) = 0, d−(4) = 1, δ−(D) = 0,∆−(D) = 2, d+(1) = 1, d+(2) = 0, d+(3) = 3, d+(4) = 0, δ+(D) = 0,∆+(D) = 3. Enquanto que na Figura 1.4(b), o d́ıgrafo tem d−(1) = 1, d−(2) = 3, d−(3) = 2, d−(4) = 2, δ−(D) = 1,∆−(D) = 3 d+(1) = 2, d+(2) = 2, d+(3) = 3, d+(4) = 1, δ+(D) = 1,∆+(D) = 3. Teorema 1.2. Para um d́ıgrafo D = (Vd, Ad) temos∑ v∈Vd d−(v) = ∑ v∈Vd d+(v) = |Ad| Quando um vértice v de um d́ıgrafo possui grau d−(v) = 0, ele é chamado de vértice fonte e quando ele possui grau de sáıda d+(v) = 0, ele é chamado de vértice sumidouro . A Figura 1.4(a) mostra um vértice fonte represen- Vértices Fonte e Sumidourotado pelo vértice 3 e dois vértices sumidouros representados pelos vértices 2 e 4. Se este d́ıgrafo está associado à uma rede de transmissão de dados, podemos relacionar o vértice fonte a um emissor que não é receptor, pois This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 10 Fundamentação Teórica ele apenas emite informações sem ter a capacidade de recebê-las de volta. Por outro lado, o vértice sumidouro é um receptor que não é emissor, ou seja, ele apenas recebe informações, porém sem ser capaz de propagá-la adi- ante para outros computadores. Os outros vértices conseguem tanto receber informações quanto propagá-la adiante. A seqüência não crescente d(G) = d1, d2, . . . , dn, com di ≥ dj para j ≥ i formada pelo grau dos vértices de um grafo G de n vértices é chamada deSeqüência de Graus Seqüência de Graus. Cada grafo possui uma única seqüência de graus, porém uma mesma seqüência pode estar associada a grafos distintos. A Figura 1.6 mostra dois grafos distintos estruturalmente com a mesma seqüência de graus igual a 4, 3, 2, 2, 1. Tanto a soma dos elementos desta seqüência quanto a quantidade de valores ı́mpares são pares. (a) (b) Figura 1.6: Grafos com mesma seqüência de graus. Teorema 1.3. Toda seqüência não negativa d1, d2, . . . , dn é uma seqüência de graus de um grafo(simples ou não) se e somente se ∑n i=1 di é par. Existem seqüências que podem não estar associados a grafos simples. Por exemplo, com a seqüência 3, 3, 3, 1 não é posśıvel construir um grafo simples, mesmo tendo a soma de seus termos um valor par (Verifique!). Se a seqüência permitir a construção de um grafo simples então ela é chamada seqüência gráfica. Para verificar se uma dada seqüência é gráfica ou nãoSeqüência Gráfica usamos o seguinte Teorema . Teorema 1.4 ([1]). Para n > 1, uma seqüência d de inteiros com n elementos é uma seqüência gráfica se e somente se d′ é uma seqüência gráfica, onde d′ é obtido a partir de d removendo seu maior elemento ∆ e subtraindo 1 de seus This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.3 Matrizes de Adjacência e de Incidência 11 ∆ maiores elementos seguintes. Assumimos que a única seqüência gráfica com 1 elemento é d1 = 0. A aplicação do Teorema 1.4 na seqüência s1 = 3, 3, 3, 1 leva aos seguintes passos. Inicialmente removemos o maior elemento ∆1 = 3 e subtraimos de 1 os ∆1 maiores elementos seguintes. Isto resulta na seqüência s2 = 2, 2, 0. Em s2, repetimos o processo, removendo o maior elemento ∆2 = 2, e subtraindo de 1 os ∆2 maiores elementos seguintes. Isto resulta na seqüência s3 = 1,−1, que não corresponde a uma seqüência gráfica, já que um dos requisitos para que uma seqüência seja gráfica é que ela seja formada apenas por valores não negativos. 1.3 Matrizes de Adjacência e de Incidência Um grafo G = (V,A), com |V | = n e |A| = m, pode ser representado usando dois tipos de matriz, chamados de matriz de adjacência e matriz de incidência. A matriz de adjacência é uma matriz M = [mi,j] simétrica n× n que armazena o relacionamento entre os vértices do grafo. Cada entrada mi,j é igual a mi,j = 0 , se i não é adjacente a j m , se i é adjacente a j (com i 6= j), m corresponde à quantidade de arestas conectando i e j. p , se i = j, p é a quantidade de laços incidentes ao vértice i. Por outro lado, a matriz de incidência B = [bi,j] é uma matriz n×m, que associa os vértices às arestas de G. Cada entrada bi,j relaciona o vértice i à aresta j assumindo os seguinte valores bi,j = { 0 , se j não é incidente em i 1 , se j é ou não um laço e i é uma de suas extremidades. As matrizes de adjacência e de incidência para o grafo da Figura 1.2(b) são mostradas nas Tabelas 1.1 e 1.2. De forma similar, um d́ıgrafo D pode ser representado usando matrizes de incidência e de adjacência. A matriz de adjacência é uma matriz A = [ai,j], não necessariamente simétrica, onde cada entrada ai,j é igual a ai,j = { 0 , se i não é adjacente a j m , onde m é a quantidade de arcos com origem em i e destino em j This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 12 Fundamentação Teórica 1 2 3 4 1 0 2 1 0 2 2 1 1 0 3 1 1 0 3 4 0 0 3 0 Tabela 1.1: Matriz de Adjacência do grafo da Figura 1.2(b). a b c d e f g h 1 1 1 1 0 0 0 0 0 2 1 1 0 1 1 0 0 0 3 0 0 1 1 0 1 1 1 4 0 0 0 0 0 1 1 1 Tabela 1.2: Matriz de incidência do grafo da Figura 1.2 (b) A matriz de adjacência para o d́ıgrafo da Figura 1.4(b) é mostrada na ta- bela 1.3 1 2 3 4 1 0 2 0 0 2 0 1 1 0 3 1 0 0 2 4 0 0 1 0 Tabela 1.3: Matriz de Adjacência do d́ıgrafo da Figura 1.4(b). Por sua vez, na matriz de incidência B = [bi,j] cada entrada bij relaciona o vértice i à aresta j assumindoos valores bi,j = −1 , se j tem origem em i. 0 , se j não é incidente em i 1 , se j tem destino em i. A matriz de incidência para o d́ıgrafo da Figura 1.4(b) é mostrada na Tabela 1.4 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.4 Passeios e Circuitos 13 a b c d e f g h 1 -1 -1 1 0 0 0 0 0 2 1 1 0 -1 1 0 0 0 3 0 0 -1 1 0 1 -1 -1 4 0 0 0 0 0 -1 1 1 Tabela 1.4: Matriz de incidência do d́ıgrafo da Figura 1.4 (b) Muitas vezes a matriz de adjacência do grafo é esparsa, ou seja, a mai- oria dos seus elementos é igual a 0. Neste caso, para um grafo que possui n vértices, estaŕıamos utilizando um espaço de armazenamento proporcional a n2, sendo que apenas uma pequena quantidade de memória, associadas às arestas do grafo, estaria efetivamente sendo usada. Para resolver este pro- blema, podemos representar a matriz de adjacência na forma de uma lista de adjacência, onde cada elemento desta lista possui referência a um vértice do grafo e um ponteiro para uma sub-lista contendo todos os vértices adja- centes associados. Se considerarmos que a maior sub-lista possui tamanho igual a c << n (ou seja, c é muito menor que n), então no máximo estaremos usando um espaço de armazenamento proporcional a cn, que é muito menor que n2. Entretanto, se a matriz não for esparsa, ou seja, δ(G) ≥ n/2, então a lista de adjacência não é uma boa escolha. Pois neste caso, a verificação da adjacência entre dois vértices u e v consistirá em realizar uma busca linear na sub-lista associada a um dos dois vértices. Se o grafo é muito denso, por exemplo um Kn, isto envolverá no máximo n comparações. Por outro lado, esta verificação em uma matriz de adjacência consiste em apenas checar a entrada correspondente. Se a entrada for igual a 0 então os vértices não são adjacentes, caso contrário são adjacentes. Estes aspectos relacionados à eficiência valem também para d́ıgrafos. 1.4 Passeios e Circuitos Definição 1.5. Em um grafo, um passeio entre os vértices v e w é uma seqüência alternada de vértices e arestas v = v0, a1, v1, a2, v2, . . . , an, vn = w que começa em v e termina em w, de forma que cada aresta ai é incidente aos vértices vi−1 e vi. Tanto as arestas quanto os vértices podem ou não ser distintos. Se apenas as arestas forem distintas, então o passeio é chamado This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 14 Fundamentação Teórica de trilha. Se tanto as arestas quando os vértices forem distintos então, ele é chamado de caminho. Observe que caminhos ⊂ trilhas ⊂ passeios Se os vértices de origem e destino forem o mesmo, então o passeio é cha- mado de passeio fechado; a trilha é chamada de circuito; enquanto que oPasseio Fechado Circuito caminho é chamado apenas de ciclo. Em um grafo simples, um ciclo é des- Ciclo crito apenas por seus vértices já que a ordem dos vértices define exatamente que aresta foi visitada. Um d́ıgrafo possui conceitos similares com a restrição de que orientação dos arcos deve ser obedecida. É posśıvel entre um mesmo par de vértices em um grafo G existirem diversos passeios, trilhas e caminhos. Considerando o grafo da Figura 1.2(b), entre os vértices 1 e 2 podemos ter os seguintes: • Passeios:(1, c, 3, d, 2), (1, c, 3, g, 4, h, 3, g, 4, f, 3, d, 2), . . . • Trilhas: (1, c, 3, d, 2),(1, c, 3, g, 4, h, 3, d, 2), . . . • Caminhos: (1, c, 3, d, 2),(1, b, 2), . . .. Dois caminhos entre um par de vértices u e v são vértice-disjuntos (ou apenas disjuntos) se eles compartilharem apenas os vértices u e v e nenhuma aresta. De forma similar, dois caminhos entre u e v são chamados aresta- disjuntos se eles não compartilharem aresta (Definição similar se aplica aos d́ıgrafos). Estes conceitos são importantes quando estivermos analisando a conectividade de grafos no Caṕıtulo 3. Definição 1.6. Em um d́ıgrafo, um passeio direcionado entre os vértices v e w é uma seqüência alternada de vértices e arcos v = v0, a1, v1, a2, v2 , . . . , an, vn = w que começa em v e termina em w, de forma que cada arco ai tenha origem em vi−1 e destino em vi. Se apenas as arcos forem distintos, então o passeio direcionado é chamado de trilha direcionada. Se tanto os arcos quando os vértices forem distintos então, ele é chamado de caminho direcionado. Note que caminhos direcionados ⊂ trilhas direcionadas ⊂ passeios direcionados Se os vértices de origem e destino forem o mesmo, então o passeio direci-Passeio Direci- onado Fechado, Circuito Dire- cionado, Ciclo Direcionado onado é chamado de passeio direcionado fechado; a trilha é chamada de This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.4 Passeios e Circuitos 15 circuito direcionado, enquanto que o caminho é chamado apenas de ciclo direcionado. Além destas classificações, temos a noção de semi-caminho, semi-passeio e semi-trilha. Se considerarmos a seqüência alternada de vértices e arcos v = v0, a1, v1, a2, v2, . . . , an, vn = w que começa em v e termina em w, um semi-passeio é aquele onde o arco ai tem origem em vi−1 e destino em vi Semi-Passeio ou tem origem em vi e destino em vi−1. Se apenas as arcos forem distintos, então o semi-passeio é chamado de semi-trilha. Se tanto os arcos quando Semi-Trilha os vértices forem distintos então, ele é chamado de semi-caminho. Note que Semi-Caminho não precisamos enfatizar que eles são direcionados, já que estes conceitos se aplicam apenas aos d́ıgrafos. Podemos pensar que em todos os casos, esta- mos desconsiderando a orientação dos arcos e focando apenas nos caminhos, passeios e trilhas no grafo subjacente ao d́ıgrafo. Analogamente, podemos definir semi-passeio fechado, semi-circuito e semi-ciclo. Em vários momentos, passeios, caminhos e trilhas, direcionadas ou não, Passeio de Espa- lhamento, Cami- nho de Espalha- mento, Trilha de Espalhamento serão chamadas de passeio de espalhamento, caminho de espalhamento e tri- lha de espalhamento, respectivamente. Isto ocorrerá quando estiverem sendo considerados todos os vértices do d́ıgrafo ou grafo. Por exemplo, na Fi- gura 1.2(b), o caminho 1, a, 2, d, 3, g, 4 possui todos os vértices do grafo sendo, portanto, um caminho de espalhamento. Passeio fechado, circuito, e ciclo, direcionado ou não, são de espalhamento, quando considerarem todos os vértices do grafo ou d́ıgrafo. O comprimento de um passeio(ou passeio direcionado) é igual a quanti- dade quantidade de arestas(ou arcos) entre os vértices inicial e final. Um caminho(ou caminho direcionado) com n vértices possui n − 1 arestas, logo seu comprimento é igual a n − 1. Por conseguinte, um ciclo(ou ciclo dire- cionado) composto por n vértices possui comprimento exatamente igual a n. Em grafos simples, os ciclos devem ter comprimento ≥ 3 , enquanto que em multigrafos, este comprimento deve ser ≥ 2, pois podem existir múltiplas arestas entre um mesmo par de vértices. Em pseudografos, laços são ciclos especiais de comprimento igual a 1 chamados de ciclos simples. Para que haja um ciclo, que não seja simples, o número de vértices tem que ser igual ao número de arestas. O comprimento do menor ciclo pertencente a um grafo G é chamado cintura e denotado por g(G). Enquanto que o comprimento do maior ciclo Cintura é chamado de circunferência sendo denotado por c(G). Um grafo que não Circunferência possui ciclos, como por exemplo árvores, tem g(G) = ∞ e c(G) = 0. Uma This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 16 Fundamentação Teórica aresta ou arco que une dois vértices em um ciclo, mas que não pertence ao ciclo é chamada corda.Corda Entre um par de vértices v e w em um grafo(ou d́ıgrafo) G = (V,A),podem existir inúmeros caminhos. Cada caminho representa um subgrafo(ou subd́ıgrafo) de G, ou seja, considerando Pv,w = (Vp, Ap) um caminho entre os vértices v e w, temos Pv,w ⊆ G. O comprimento de Pv,w, denotado aqui por |Pv,w| é igual ao seu número de arestas, i.e., |Pv,w| = |Ap|. Se não existe caminho entre v e w, então |Pv,w| = ∞. Usando esta notação, a distância entre v e w é igual a d(v, w) = min Pv,w⊆G |Pv,w| Note que a distância entre v e w é definida pelo comprimento do menor caminho entre v e w. Este cálculo é muito importante em áreas como a robótica, já que o robô deve sempre que posśıvel se deslocar no ambiente seguindo o caminho de menor comprimento. A partir da informação de distância, podemos calcular o diâmetro de G porDiâmetro diam(G) = max v,w∈V d(v, w) que corresponde à distância entre os vértices mais afastados de G, e também a excentricidade de cada vértice v de G que informa a maior distância posśıvelExcentricidade entre v e todos os outros vértices do grafo, e(v) = max w∈V d(v, w). Usando a informação sobre a excentricidade dos vértices é posśıvel calcu- lar o raio de G porRaio raio(G) = min v∈V e(v) que indica o menor valor de excentricidade presente em um grafo conside- rando todos os seus vértices; e reescrever a expressão que define o diâmetro de G como diam(G) = max v∈V e(v) A partir dáı, definimos um vértice v como sendo central quando seu valor de excentricidade é igual ao raio do grafo, i.e., e(v) = raio(G). Por conse-Centro de um Grafo guinte, o centro de um grafo G, denotado por, C(G), é um subgrafo induzido pelos seus vértices centrais, i.e., C(G) = G[V ′], tal que V ′ = {v ∈ V : e(v) = raio(G)} This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.4 Passeios e Circuitos 17 Figura 1.7: Grafo com diam(G) = 4, raio(G) = 2 e C(G) = G[{2}]. Como exemplo, considere o grafo G mostrado na Figura 1.7. Seus vértices possuem as seguintes excentricidades: e(1) = 4, e(2) = 2, e(3) = 4, e(4) = 3, e(5) = 3, e(6) = 3 e e(7) = 4. O diâmetro e o raio deste grafo são iguais a diam(G) = 4 e raio(G) = 2, respectivamente. O centro é definido apenas pelo vértice 2, i.e., C(G) = G[{2}]. Fazendo G′ = G − {1, 4}, i.e., eliminando a aresta {1, 4}, o grafo passa a ter as seguintes excentricidades : e(1) = 5, e(2) = 3, e(3) = 4, e(4) = 3, e(5) = 3, e(6) = 4 e e(7) = 5. O diâmetro e o raio de G′ são iguais a diam(G′) = 5 e raio(G′) = 3, respecti- vamente. O centro é definido pelos vértices 2, 4 e 5, i.e., C(G) = G[{2, 4, 5}]. Estas informações podem ser utilizadas por um administrador de uma rede de computadores para saber quais são os nós centrais da rede que estão com sobrecarga de comunicação, ou os nós mais distantes a fim de aproximá- los através da inserção de outros pontos de comunicação. Note que uma rede ideal é aquela onde a comunicação entre pares de computadores ocorre dire- tamente. Em geral, redes com grandes diâmetros são mais lentas do ponto de vista de comunicação do que redes com baixos diâmetros. Entretanto, uma rede deste tipo é aceitável se a maioria dos seus computadores se comunicar através de conexões de curta distância. Portanto, convém avaliar uma rede não apenas pelo seu diamêtro, mas pela distância média entre pares de com- putadores. Isto leva ao ı́ndice de Wiener definido para um grafo G = (V,A) Índice de Wienerpor W (G) = ∑ u,v∈V d(u, v) This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 18 Fundamentação Teórica Este valor não corresponde a uma distância média pois não está sendo dividido pelo número de pares posśıveis dado por ( |V | 2 ) . Entretanto, esta medida é válida pois para redes com mesmo número de nodos, a quantidade posśıvel de pares é a mesma independente da topologia da rede. Logo, o número de pares pode ser suprimido do cálculo. 1.5 Grafos Eulerianos e Hamiltonianos Como visto anteriormente no ińıcio deste caṕıtulo, o primeiro e mais famoso problema na área de Teoria dos Grafos é chamado o problema das pontes de Königsberg. Ele foi enunciado por Euler em 1736 e consistia em determinarProblema das Pontes de Königsberg se era posśıvel ou não fazer um passeio pela cidade Königsberg começando e terminando no mesmo lugar, cruzando cada ponte exatamente uma única vez. A Figura 1.1 mostra as sete pontes que cruzavam o rio Pregel estabelecendo ligações entre diferentes partes da cidade e as ilhas Kneiphof e Lomse. O grafo associado ao mapa mostrado na Figura 1.1 é ilustrado na Fi- gura 1.8. Note que cada aresta é rotulada com uma das pontes mostradas na Figura 1.1 enquanto que os vértices de v1 a v4 estão associados às diferentes partes da cidade. O problema então consiste em determinar se é posśıvel ou não fazer um circuito pelo grafo cruzando cada aresta uma única vez. Se isto for posśıvel, então o grafo é chamado de grafo euleriano e ao circuito é dado o nome de circuito euleriano. A principal caracteŕıstica que define umCircuito Euleri- ano multigrafo euleriano é dada pelo seguinte Teorema. Figura 1.8: Multigrafo associado ao mapa mostrado na Figura 1.1. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.5 Grafos Eulerianos e Hamiltonianos 19 Teorema 1.5 (Teorema dos Multigrafos Eulerianos). Um multigrafo conexo G = (V,A) é Euleriano sse todos os vértices de G tiverem grau par. Multigrafos Eu- lerianos A demonstração deste teorema, deixada como exerćıcio, além de mostrar que todo multigrafo Euleriano é um multigrafo par, i.e., possui todos os seus Multigrafo Par vértices com grau par, mostra também que todo multigrafo par pode ser decomposto em circuitos. O problema de verificar se um multigrafo possui ou não um circuito Euleriano está intimamente relacionado a outros problemas na área de teoria dos grafos, como o problema do Carteiro Chinês. Neste Problema do Carteiro Chinêsproblema, o carteiro deve entregar cartas da forma mais eficiente posśıvel visitando cada rua apenas uma única vez. Se o grafo subjacente à região de entrega das cartas for euleriano então qualquer circuito Euleriano escolhido será ótimo, porém se o grafo não for euleriano, o carteiro deverá encontrar um passeio fechado de custo mı́nimo revistando algumas das arestas do grafo. Se mudarmos sutilmente o problema e ao invés de tentarmos encontrar um circuito euleriano, tentarmos encontrar uma trilha euleriana, ou seja, uma trilha que começa em um vértice v e termina em um vértice u passando por cada aresta do multigrafo uma única vez, seremos levados ao seguinte teorema. Teorema 1.6 (Teorema de Multigrafos Semi-Eulerianos). Um multigrafo co- nexo G = (V,A) possui uma trilha euleriana e consequentemente é chamado Multigrafos Semi-Eulerianosde semi-euleriano sse tem no máximo dois vértices de grau impar. A Figura 1.9 ilustra em (a) um grafo euleriano e em (b) um grafo semi- euleriano. Em (b), as trilhas Eulerianas obrigatoriamente começam em um dos vértices de grau ı́mpar (vértices cinza), e terminam no outro vértice de grau ı́mpar (Verifique!). (a) (b) Figura 1.9: Exemplo de grafo (a) Euleriano e (b) Semi-Euleriano. De forma similar aos multigrafos não direcionados, um multigrafo dire- cionado é euleriano se ele tiver um circuito direcionado euleriano. Note que This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 20 Fundamentação Teórica embora estejamos fazendo referência a multigrafos direcionados, o teorema se aplica a pseudografos direcionados, já que estes são diferentes dos multi- grafos direcionados apenas pela presença de laços. Assim, similarmente ao Teorema 1.5, temos o seguinte teorema Teorema 1.7 (Teoremados Multigrafos Direcionados Eulerianos). Um mul- tigrafo direcionado conexo D = (V,A) é euleriano sse para qualquer vértice v ∈ V , temos d+(v) = d−(v), i.e, o grau de entrada de v é igual ao seu grau de sáıda. A Figura 1.10 mostra o pseudografo direcionado euleriano, comumente chamado de d́ıgrafo de Bruijn.Dı́grafo de Bruijn Figura 1.10: Pseudografo direcionado euleriano - d́ıgrafo de Bruijn. Se ao invés de focarmos nossa atenção nas arestas ou arcos, focarmos nos vértices, teremos um outro tipo de problema, que embora aparentemente seja mais simples, já que ele foca na visita dos vértices e não nas visitas das arestas ou arcos, é muito mais complexo e que não possui solução eficiente. Este problema é chamado problema do ciclo hamiltoniano. Definição 1.7. Um multigrafo é hamiltoniano se ele possuir um ciclo hamil- toniano, ou seja, um ciclo de espalhamento.Ciclo Hamiltoni- ano Um ciclo de espalhamento possui todos os vértices do multigrafo, o qualCiclo de Espa- lhamento pode ser direcionado ou não. No caso do multigrafo direcionado, um ciclo ha- miltoniano será um ciclo direcionado. A primeira pessoa a estudar este tipo de estrutura foi o matemático irlandês Sir W. R. Hamilton. A Figura 1.11 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.5 Grafos Eulerianos e Hamiltonianos 21 mostra um exemplo de grafo hamiltoniano, com o ciclo hamiltoniano desta- cado em vermelho. Este grafo foi a base do jogo chamado Dodecaedro do Viajante concebido por Sir. Hamilton. Figura 1.11: Grafo Hamiltoniano. O problema do ciclo hamiltoniano está intimamente relacionado ao pro- blema do caixeiro viajante, o qual consiste em encontrar um ciclo de custo Problema do Caixeiro Via- jante mı́nimo que passe por uma série de cidades uma única vez retornando à cidade de partida. Observe que este problema é muito mais dif́ıcil do que simplesmente verificar se o grafo associado é hamiltoniano ou não, pois en- volve a análise de todos os posśıveis ciclos hamiltonianos em busca do ciclo de menor custo. Se o multigrafo em análise não contiver um ciclo hamiltoniano, mas con- tiver um caminho hamiltoniano, ou seja, um caminho que passe por to- dos vértices do multigrafo porém com o vértice de chegada diferente do vértice de destino então a este multigrafo é dado o nome de multigrafo semi-hamiltoniano. Para multigrafos ou pseudografos direcionados, o ca- Multigrafo Semi- Hamiltoniano minho hamiltoniano deve ser direcionado. A Figura 1.12 ilustra um grafo semi-hamiltoniano. O caminho destacado em vermelho é um caminho ha- miltoniano. Se existisse uma aresta entre os vértices v e u, este grafo seria hamiltoniano. Este grafo também é semi-euleriano. Diferentemente dos grafos eulerianos, não existem condições necessárias e suficientes para caracterizar um grafo genérico como hamiltoniano ou não. Alguns resultados são apresentados abaixo Teorema 1.8 ([2]). Um grafo G = (V,A) com |V | ≥ 3 é hamiltoniano se δ(G) ≥ |V |/2 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 22 Fundamentação Teórica Figura 1.12: Grafo Semi-Hamiltoniano. Teorema 1.9 ([3]). Um grafo G = (V,A) com |V | ≥ 3 é hamiltoniano se para todo par v e u de vértices não adjacente d(v) + d(u) ≥ |V |. 1.6 Isomorfismo e Automorfismo Muitas vezes nos deparamos com grafos diferentes mas que possuem a mesma estrutura, i.e., um poderia estar associado à relação ecológica de diferentes seres vivos enquanto outro poderia estar associado à relação entre átomos de um composto qúımico. A identificação e verificação se eles possuem ou não a mesma estrutura, i.e., se um pode ser mapeado no outro, é muito relevante para diversos tipos de problemas. Já que se este mapeamento existe então podemos dizer que estes grafos possuem as mesmas propriedades. Assim, se um grafo G com propriedades conhecidas consegue ser mapeado para um grafo D desconhecido, então podemos dizer que D possui as mesmas propriedades que G. Estas propriedades podem dizer respeito a aspectos relacionados à planaridade, coloração, cobertura de vértices, entre outros. Definição 1.8. Dois grafos G1 = (V1, A1) e G2 = (V2, A2) são isomorfos, i.e., G1 ∼= G2, se existe uma função bijetora f : V1 → V2, tal que (u, v) ∈ A1 sse (f(u), f(v)) ∈ A2. Grafos isomorfos apresentam as mesmas propriedades estruturais que pre- servam a adjacência entre seus vértices. Por exemplo, os grafos ilustrados na Figura 1.13 são diferentes entretanto apresentam as mesmas propriedades estruturais. A Tabela 1.5 mostra um posśıvel mapeamento dos vértices de G1 para os vértices de G2. Isso faz com que a aresta (0, 5) ∈ A1 seja mapeada para a aresta (e, d) ∈ A2, e a aresta (0, 4) ∈ A1 seja mapeada para a aresta (e, c) ∈ A2. Cada aresta em G1 possui uma aresta correspondente em G2 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.6 Isomorfismo e Automorfismo 23 (Verifique!). Se pelo menos uma das aresta de G1 não possuir uma corres- pondente em G2 então a função escolhida não define o isomorfismo entre G1 e G2. Notem que existem inúmeros mapeamentos posśıveis. Outro mape- amento posśıvel que garante o isomorfismo entre G1 e G2 é a partir desta tabela alterar as linhas 3 e 4, associando o vértice 2 ao vértice f e o vértice 3 ao vértice a. (a) (b) Figura 1.13: Exemplo de grafos isomorfos. O grafo (a) G1 é isomórfico ao grafo (b) G2 . Assim entre os requisitos básicos para que dois grafos sejam isomorfos é que eles possuam a mesma quantidade de vértices e a mesma quantidade de arestas, i.e., |V1| = |V2| e |A1| = |A2|. Porém verificar se dois grafos são ou não isomorfos nem sempre é uma tarefa trivial. Suspeita-se que este problema seja NP-Completo. V1 V2 0 e 1 b 2 a 3 f 4 c 5 d Tabela 1.5: Matriz de incidência do d́ıgrafo da Figura 1.4 (b) Um fato importante é que a função de isomorfismo define uma relação de equivalência possui as seguintes propriedades: This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 24 Fundamentação Teórica • Propriedade reflexiva. Uma permutação da identidade dos vértices de um grafo G1 leva a um grafo G2 que é isomorfico a G1, i. .e, G1 ∼= G2 • Propriedade simétrica. Sejam G1 = (V1, A1) e G2 = (V2, A2), se a função f : V1 → V2 é uma função que define o isomorfismo entre G1 e G2, então f −1 é a função inversa que define o isomorfismo en- tre G2 e G1. Logo (u, v) ∈ A1 sse (f(u), f(v)) ∈ A2 e (x, y) ∈ A2 sse (f−1(x), f−1(y)) ∈ A1. • Propriedade Transitiva. Sejam G1 = (V1, A1), G2 = (V2, A2) e G3 = (V3, A3), e as funções f : V1 → V2 e h : V2 → V3 sejam funções que definam a relação de isomorfismo entre os grafos G1 e G2; e G2 e G3, respectivamente. Como (u, v) ∈ A1 sse (f(u), f(v)) ∈ A2 e (x, y) ∈ A2 sse (h(x), h(y)) ∈ A3, se (x, y) ∈ A2, então existe uma aresta (u, v) ∈ A1 tal que f(u) = x e f(v) = y. Logo, (u, v) ∈ A1 sse (h(f(u)), h(f(v))) ∈ A3. Portanto, a função composta h ◦ f define a relação de isomorfismo entre G1 e G3, ou seja, G1 ∼= G3. Logo, a função de isomorfismo define uma classe de equivalência para um conjunto de grafos, onde dois grafos pertencem a mesma classe sse eles são isomorfos. Um exemplo de classe isomórfica é a classe chamada “grafos de Petersen” . Um grafo pertencente a esta classe é ilustrado na Figura 1.14(a).Grafo de Petersen Este grafo possui vértices que estão associados a subconjuntos de dois elemen- tos formado a partir do seguinte conjunto S = {1, 2, 3, 4, 5}. Dois vértices são adjacentes se seus subconjuntos correspondentes forem disjuntos, por exem- plo, os vértices associados aos subconjuntos {1, 2} e {3, 4} são adjacentes. Note que o grafo da Figura 1.14(b) éisomorfo ao grafo (a). Grafos de Pe- tersen são comumente usados como contra-exemplos em provas de teoremas devido às suas propriedades, as quais serão apresentadas mais adiante. Note que os grafos ilustrados na Figura 1.14 são formados por dois ciclos disjuntos de tamanho 5 destacados em preto e vermelho. A noção de isomorfismo se aplica a multigrafos direcionados, porém ela é focada na multiciplidade dos arcos dos grafos envolvidos. Definição 1.9. Dois multigrafos direcionados M1 = (V1, A1) eM2 = (V2, A2)Isomorfismo de Multigrafos Di- recionados são isomorfos, i.e., M1 ∼= M2, se existe uma função bijetora f : V1 → V2, tal que µ(u, v) = µ(f(u), f(v)), onde (u, v) ∈ A1, (f(u), f(v)) ∈ A2 e µ(u, v) é a multiplicidade do arco (u, v). Outro conceito associado ao isomorfismo é o automorfismo. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.6 Isomorfismo e Automorfismo 25 (a) (b) Figura 1.14: Grafo de Petersen. O grafo (a) G1 é isomórfico ao grafo (b) G2. Definição 1.10. Um automorfismo de um grafo G = (V,A) é uma per- Automorfismo mutação dos vértices de G definida por uma função f : V → V de forma que para cada aresta (v, u) ∈ A implica (f(v), f(u)) ∈ A. Ou seja, a permutação definida por f não muda a adjacência entre os vértices de G. Considere um grafo G = (V,A), ilustrado a partir de sua matriz de ad- jacência mostrada na Tabela 1.6, constitúıdo do seguinte conjunto de vértices V = {1, 2, 3, 4} e do seguinte conjunto de arestas A = {(1, 2), (2, 3), (3, 4)}. Se permutarmos os vértices de V fazendo com que o vértice 1 passe a ser o vértice 4, e o vértice 2 passe a ser o vértice 3, teremos a matriz de adjacência ilustrada na Tabela 1.7. Reordenando as linhas e colunas desta matriz en- contramos a matriz original mostrada na Tabela 1.6. Se por ventura permutarmos apenas o vértice 1 com o vértice 4 mantendo os vértices 2 e 3 como estão não teremos um automorfismo de G. Esta per- mutação é ilustrada na Tabela 1.8. Se reordenarmos as linhas e colunas desta matriz não obteremos a matriz original mostrada na Tabela 1.6 (Verifique!). Embora este mapeamento leve a um grafo isomorfo ao grafo original, ele não define um automorfismo. Isto decorre do fato que o conjunto de arestas ge- rado é {(4, 2), (2, 3), (1, 3)} o que é diferente do conjunto de arestas original, já que o vértice 4 não era adjacente ao vértice 2 no grafo original. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 26 Fundamentação Teórica 1 2 3 4 1 0 1 0 0 2 1 0 1 0 3 0 1 0 1 4 0 0 1 0 Tabela 1.6: Matriz de adjacência do Grafo G=(V,A), com V = {1, 2, 3, 4}, A = {(1, 2), (2, 3), (3, 4)}) 4 3 2 1 4 0 1 0 0 3 1 0 1 0 2 0 1 0 1 1 0 0 1 0 Tabela 1.7: Matriz de adjacência resultante da permutação dos vértices de grafo ilustrado na Tabela 1.6. 1.7 Aplicações Esta seção apresenta alguns exemplos de aplicações do mundo real que en- volvem Grafos. 1.7.1 Associação de Tarefas Uma empresa precisa distribuir um conjunto de n tarefas T entre seus n empregados E, considerando que cada empregado j consegue realizar cada tarefa i em um dado tempo mij. Qual é a melhor associação entre tarefa e empregado de forma a minimizar o tempo de realização de todas as tarefas. Uma instância do problema é mostrada no grafo da Figura 1.15(a). Para faci- litar a visualização os tempos mij não foram apresentados. A Figura 1.15(b) mostra a associação escolhida através de arestas mais grossas. Este problema é um t́ıpico problema de emparelhamento, onde tanto as tarefas quanto os empregados são os vértices do grafo, e as arestas correspon- dem a associação entre os empregados e as tarefas. Cada aresta é rotulada com o tempo de realização da tarefa pelo empregado ao qual está associ- ada. O objetivo é encontrar a melhor associação entre tarefas e empregados This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.7 Aplicações 27 4 2 3 1 4 0 1 0 0 2 1 0 1 0 3 0 1 0 1 1 0 0 1 0 Tabela 1.8: Matriz de adjacência resultante da permutação apenas dos vértices 1 e 4 de G. de forma a minimizar a soma dos tempos de realização de todas as tare- fas. Como não existem arestas entre os empregados nem entre as tarefas, temos dois conjuntos compostos por vértices não adjacentes entre si. Con- juntos com esta caracteŕıstica são chamados de conjuntos independentes e serão discutidos apropriadamente no Caṕıtulo 4.2. 1.7.2 Robótica Vários problemas da área de robótica estão associados às tarefas de navegação de robôs em ambientes do tipo escritório. Neste tipo de tarefa, o robô pos- sui um mapa do ambiente e deve planejar um caminho que o leve de uma posição a outra evitando colisões com obstáculos. Entre os diversos tipos de mapas, existe o mapa topológico, que consiste em uma representação do am- biente utilizando grafos. A Figura 1.16(a) mostra um ambiente e seu grafo subjacente. Os vértices estão associados às grandes regiões do ambiente e as arestas indicam como navegar entre estas regiões. Neste exemplo, se o robô precisar ir da sala A até a sala G, ele pode seguir por vários caminhos, que podem ser visualizados através dos vértices e arestas do grafo associado. A Figura 1.16(b) mostra um caminho posśıvel através de arestas mais grossas. 1.7.3 Nichos Ecológicos Grafos podem ser usados para modelar o relacionamento competitivo en- tre diferentes espécies de animais em um ecosistema. A competição ocorre quando indiv́ıduos de uma mesma espécie ou de espécies diferentes disputam por algum recurso, como por exemplo, alimento. Quando a competição é grande e desigual, uma espécie pode mudar seus hábitos, migrar para outra região ou até mesmo ser extinta. Logo, estudar o relacionamento entre as This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 28 Fundamentação Teórica (a) (b) Figura 1.15: Associação de tarefas ti ∈ T aos empregados ej ∈ E. (a) todas as associações (b) a associação escolhida, representada por arestas mais grossas. espécies é fundamental para a preservação do ecossistema. Usando grafos, cada espécie pode ser modelada como um vértice e a competição entre duas espécies é indicada no grafo através de uma aresta entre os vértices corres- pondentes. A Figura 1.17 mostra um grafo que modela o relacionamento competitivo entre diferentes espécies do ecosistema de uma floresta. 1.7.4 Rede de Telefonia Móvel Veremos no Caṕıtulo 8 que um mapa pode ser desenhado no plano e colorido propriamente com apenas quatro cores, ou seja, regiões vizinhas possuem cores diferentes. Para que isto seja posśıvel, as regiões do mapa são associadas aos vértices do grafo enquanto que a adjacência entre as regiões define as arestas entre os vértices correspondentes. A partir dáı, cada vértice é colorido de forma que vértices adjacentes tenham cores distintas. Em um primeiro instante, pode-se pensar em usar uma cor diferente para cada vértice, porém problemas de coloração de grafos são problemas de otimização, onde a adição de uma nova cor implica aumento de custos. Logo, busca-se sempre a menor quantidade de cores posśıvel. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.7 Aplicações 29 Em 1982, o Groupe Spécial Mobile (GSM) foi criado para desenvolver um padrão a ser adotado pela telefonia móvel, e em 1991 surgiu a primeira rede GSM na Finlândia com o apoio da Ericsson. As redes GSM dividem as suas regiões de cobertura em células hexagonais. Cada célula possui uma torre de comunicação que gerencia a conexão dos celulares na sua área de cobertura.Os celulares por sua vez procuram células em sua vizinhança imediata de acordo com sua freqüência de operação. Células adjacentes que possuem mesma freqüência devem ser evitadas pois uma gera interferência no sinal da outra. Este fato faz com que o uso de coloração de grafos, em especial a coloração de mapas, tenha aplicabilidade direta. Por isso, as redes GSM usam apenas quatro freqüências diferentes devido serem necessárias apenas quatro cores para colorir propriamente o mapa das regiões das células. Neste caso, as cores são representadas pelas freqüências de operação. 1.7.5 Reconhecedores de sentenças Uma máquina teórica para reconhecer sentenças de uma linguagem, como autômatos finitos determı́nisticos ou finitos não determińısticos, é represen- tada graficamente através de um d́ıgrafo. Neste d́ıgrafo os vértices represen- tam os estados da máquina enquanto que os arcos representam as transições da máquina de um estado para o outro. Por exemplo, o d́ıgrafo da Figura 1.18 representa um autômato finito determińıstico capaz de reconhecer sentenças formadas pelos śımbolos a e b com uma quantidade ı́mpar de a’s e uma quan- tidade ı́mpar de b’s. Os vértices são representados por S1, S2, S3 e S4 e os arcos têm origem e destino neste conjunto. Note que a seta que não possui origem em um destes estados e tem destino em S1, tem a função apenas de indicar o estado inicial da máquina, portanto não é um arco do d́ıgrafo. 1.7.6 Redes Neurais Artificiais Uma rede neural artificial é um modelo computacional utilizado na área de Inteligência Artificial para simular o funcionamento do cérebro humano. Ela é representada graficamente na forma de um d́ıgrafo, onde cada vértice cor- responde a um neurônio artificial e os arcos representam as conexões entre os neurônios, chamadas sinapses. As sinapses possuem um peso associado que pondera o sinal que flui entre os neurônios. Existem inúmeras formas de organização destes neurônios sendo a mais comum a estrutura multicamada mostrada na Figura 1.19. Nela a rede é organizada em camada de entrada, This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 30 Fundamentação Teórica camadas escondidas e camada de sáıda. Na figura, estas camadas são re- presentadas pelas letras A, B e C, respectivamente. O sinal flui da camada de entrada até a camada de sáıda de acordo com a orientação das sinapses. Portanto, o padrão de entrada é fornecido para a rede na camada de entrada e a rede produz um padrão de sáıda. O padrão de entrada poderia ser a postura (x, y, θ) de um robô em um ambiente e a sáıda poderia ser a variação angular ϕ a ser aplicada em suas rodas dianteiras para fazê-lo atingir uma posição destino. 1.8 Exerćıcios Exerćıcio 1.1. Mostre usando prova por indução que a soma total dos graus de todos os vértices de um grafo é sempre par Exerćıcio 1.2. Mostre que para qualquer grafo, o número de vértices com grau ı́mpar é par. Exerćıcio 1.3. Verifique se a seqüência de graus 3, 3, 3, 3, 3, 2, 2, 1 é gráfica. Se for desenhe o grafo simples correspondente. Exerćıcio 1.4. Dado um grafo simples G = (V,A), com |V | = n qual é o significado de ∑n j=1 ai,j para uma dada linha i da matriz de adjacência de G? Exerćıcio 1.5. Sendo M a matriz de adjacência de um grafo G, qual é o significado combinatorial de M2, ou seja, do produto M.M? Exerćıcio 1.6. Mostre que todo passeio de v até w contém um caminho de v até w. Exerćıcio 1.7. Mostre que todo grafo G simples com um caminho de compri- mento δ(G) ≥ 2 possui um ciclo de comprimento igual a no mı́nimo δ(G)+1. Exerćıcio 1.8. Mostre que se D é um d́ıgrafo com δ+(D) ≥ 1 (ou δ−(D) ≥ 1), então D contém um ciclo. Exerćıcio 1.9. Mostre que um grafo G de raio(G) ≤ k e ∆(G) ≥ 3 tem um número de vértices inferior a 1 + ∆(G) ∆(G)−2(∆(G)− 1) k. Exerćıcio 1.10. Mostre que com um conjunto de n vértices distintos é posśıvel gerar 2 ( n 2 ) grafos simples. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.8 Exerćıcios 31 Exerćıcio 1.11. Mostre que todo d́ıgrafo aćıclico(sem ciclos) possui vértice fonte e um vértice sumidouro. Exerćıcio 1.12. Mostre que um grafo simples G = (V,A) com δ(G) > 0 e |A| < |V | possui pelo menos dois vértices de grau 1. Exerćıcio 1.13. Mostre que todo grafo com dois ou mais vértices tem pelo menos dois vértices de mesmo grau. Exerćıcio 1.14. Mostre que um multigrafo conexo G = (V,A) é Euleriano sse o grau de todos os vértices de G for par. Exerćıcio 1.15. Mostre que dois vértices não adjacentes em um grafo de Petersen tem exatamente 1 vizinho em comum. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 32 Fundamentação Teórica (a) (b) Figura 1.16: Mapa topológico de um ambiente do tipo escritório. (a) mostra o ambiente e o mapa topológico na forma de um grafo (b) destacada o caminho escolhido para ir da sala A até a sala G. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 1.8 Exerćıcios 33 Figura 1.17: Relacionamento competitivo entre espécies. Figura traduzida do Livro [4]. Figura 1.18: Representação gráfica de um autômato finito determińıstico para reconhecer sentenças. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 34 Fundamentação Teórica Figura 1.19: Rede neural multicamada composto por 1 camada de entrada, 1 camada oculta e 1 camada de sáıda. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Caṕıtulo 2 Tipos de Grafos e Operações Este caṕıtulo apresenta diversos tipos especiais de grafos e a notação utili- zada, algumas operações unárias e binárias e exemplos de aplicações. Ini- cialmente, apresentamos conceitos referentes a grafos completos, vazios, to- talmente desconexo, entre outros. Em seguida, serão apresentadas algumas operações como complemento, união, remoção de vértices e arestas. 2.1 Grafos Especiais Esta seção apresenta algumas classes de grafos comumente usados em diversas aplicações e também como contra-exemplos. Grafo Trivial Um grafo trivial é um grafo com 1 ou nenhum vértice. Quando o grafo não possui vértices, ele é chamado de grafo vazio. Este tipo de grafo é tipicamente Grafo Vazio usado como passo inicial em provas por indução e como contra exemplo em alguns tipos de problemas. Grafo Totalmente Desconexo Um grafo totalmente desconexo não possui arestas unindo seus vértices. Grafo Completo ou Totalmente Conexo Um grafo completo com n vértices, denotado por Kn, é um grafo simples que possui uma aresta entre qualquer par de vértices. Devido a isto, este grafo possui exatamente 1 2 n(n − 1) arestas. A Figura 2.1 mostra alguns This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 36 Tipos de Grafos e Operações grafos completos com (a) 4 (b) 3 (c) 2 e (d) 1 vértices. (a) (b) (c) (d) Figura 2.1: Grafos Completos (a)K4 (b) K3 (c) K2 e (d) K1. Uma definição similar pode ser aplicada aos d́ıgrafos. Um d́ıgrafo é com- pleto se para qualquer par de vértices x e y, como x 6= y existem os doisDı́grafo Com- pleto arcos simétricos (x, y) e (y, x). Vários autores usam a mesma notação de grafo completo para d́ıgrafo completo, ou seja, Kn para um d́ıgrafo ou grafo completo com n vértices. Neste livro adotaremos esta prática e enfatizaremos se Kn refere-se a um d́ıgrafo ou a grafo. Um d́ıgrafo é semicompleto se paraDı́grafo Semi- completo cada par de vértices distintosx e y, existe ou o arco (x, y) ou o arco (y, x) ou ambos. Grafo Regular Um grafo G = (V,A) é regular de ordem r se todos os seus vértices tiverem o grau r, ou seja, ∀v ∈ V, δ(G) = ∆(G) = d(v) = r Este tipo de grafo também é chamado de grafo r-regular. Note que todo grafo completo Kn é um grafo (n− 1)-regular. Grafo caminho Um grafo G = (V,A) é um grafo caminho, Pn, composto por n vértices se ele corresponder a exatamente um caminho de comprimento n− 1. Neste caso, os vértices inicial e final do caminho possuem grau igual a 1, enquanto que os demais possuem grau igual a 2. Grafo Ciclo Um grafo ciclo Cn, com n ≥ 3, é composto por n vértices e n arestas que juntos formam um ciclo de tamanho n. Todos os vértices de Cn possuem grau igual a 2, logo, ele é um grafo 2-regular. A Figura 2.1(b) mostra um This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 2.1 Grafos Especiais 37 grafo completo K3 que é também um grafo ciclo C3. A Figura 2.2 mostra os grafos (a) C4, (b) C5 e (c) C6 . (a) (b) (c) Figura 2.2: Grafos Ciclo (a) C4 (b) C5 e (c) C6. Grafo Roda Um grafo roda Wn, com n ≥ 3, é igual ao grafo Cn adicionado de mais um vértice, o qual é adjacente a todos os demais. Um grafo Wn possui n+ 1 vértices e 2n arestas, onde o vértice adicionado ao Cn possui grau igual a n e os demais vértices grau igual a 3. A Figura 2.3 mostra os grafos (a) W4 e (b) W5. (a) (b) Figura 2.3: Grafos Roda (a) W4 e (b) W5. Grafo Estrela This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 38 Tipos de Grafos e Operações Um grafo estrela Sn, com n > 1, é igual a um grafo Wn sem as arestas que compõem o grafo Cn. Um grafo Sn possui n+1 vértices e n arestas, onde o vértice central possui grau igual a n, enquanto que os demais vértices grau possuem igual a 1. A Figura 2.4 mostra os grafos (a) S3 e (b) S5. (a) (b) Figura 2.4: Grafos Estrela (a) S3 e (b) S5. Grafo k-cubo Um grafo k-cubo, ou hipercubo k-dimensional, denotado por Qk, é um grafo cujos vértices são formados por seqüências binárias de tamanho k. Dois vértices são adjacentes neste grafo se suas seqüências correspondentes diferi- rem em apenas uma posição. Além disso, ele é um grafo regular de grau k. A Figura 2.5 mostra (a) um grafo Q1 (b) um grafo Q2 e (c) um grafo Q3 . (a) (b) (c) Figura 2.5: Grafos k-Cubo (a) Q1 (b) Q2 e (c) Q3. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 2.2 Operações com grafos 39 2.2 Operações com grafos Em diversos momentos, é necessário realizar algumas operações em grafos isolados ou pares de grafos. Elas podem ser desde operações para remoção de vértice/aresta até contrações. Abaixo, apresentamos as operações co- mumente utilizadas. Nas definições, utilizaremos os seguintes grafos G = (V,A, φ), G1 = (V1, A1, φ1) e G2 = (V2, A2, φ2). Como na maioria das vezes, a função de incidência φ destes grafos será a função identidade, então ela será omitida por conveniência. 2.2.1 União Dados dois grafos (ou d́ıgrafos) G1 e G2, definimos a operação de união por G1 ∪ G2. O grafo resultante G = (V1 ∪ V2, A, φ), tem seu conjunto de vértices oriundo da união dos conjuntos de vértices dos grafos originais. Por outro lado, o conjunto de arestas A inicialmente é igual a A1, i.e., A = A1 e φ(e) = φ1(e) ∀e ∈ A1. Cada aresta e′ ∈ A2 deve analisada cuidadosamente antes de ser inserida em A, pois uma aresta rotulada e′ pode pertencer tanto a A2 quanto a A1 com φ1(e) pode ser diferente de φ2(e). Sendo assim, para cada e′ ∈ A2, temos as seguintes situações • se e′ /∈ A, adicionamos e′ em A e assumimos φ(e′) = φ2(e′). • se e′ ∈ A e φ(e′) 6= φ2(e′), criamos uma nova aresta em A para e′, por exemplo e′′ e a adicionamos em A fazendo φ(e′′) = φ2(e ′). A Figura 2.6(c) ilustra a união de dois grafos (a) G1 e (b) G2. (a) (b) (c) Figura 2.6: A aplicação da operação de união dos grafos (a) G1 e (b) G2 resulta no grafo (c) G = G1 ∪G2. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 40 Tipos de Grafos e Operações 2.2.2 Junção A operação de junção, representada por + ou ∗, é efetuada em dois grafos G1 e G2 com conjuntos disjuntos de vértices e gera um novo grafo G = G1 +G2, onde G = (V,A), V = V1 ∪ V2 e A = A1 ∪ A2 ∪ A3, onde A3 é formado por todos pares não ordenados {v, w}, onde v ∈ V1 e w ∈ V2. Note que |V | = |V1|+ |V2| e |A| = |A1|+ |A2|+ |V1||V2|. A Figura 2.7 ilustra a junção dos grafos G1 e G2 produzindo o grafo G. As arestas mais grossas em (c) são as arestas novas, enquanto que as arestas mais finas são as arestas originais de G1 e G2. (a) (b) (c) Figura 2.7: A aplicação da operação de junção os grafos (a) G1 e (b) G2 resulta no grafo (c) G = G1 +G2. 2.2.3 Intersecção A intersecção de dois grafos G1 com G2 é denotada por G1 ∩ G2 e gera um grafo G = G1 ∩ G2, onde G = (V1 ∩ V2, A1 ∩ A2). Note que G possui conjuntos de vértices e de arestas que pertencem tanto a G1 quanto a G2. Se G = ∅ então G é um grafo trivial (ver Seção 2.1), caso contrário se V1 ⊂ V2 e A1 ⊂ A2, então G = G1, tendo G1 como subgrafo de G2. A Figura 2.8 ilustra a intersecção de G1 e G2 produzindo G = G1 ∩G2. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 2.2 Operações com grafos 41 (a) (b) (c) Figura 2.8: Operação de intersecção dos grafos (a) G1 e (b) G2 resulta no grafo (c) G = G1 ∩G2. 2.2.4 Produto O produto de dois grafos, G1 e G2, é denotado por G1 ×G2 e gera um grafo G = G1 × G2, onde V = V1 × V2 é o conjunto de todos os pares formados pelos vértices de V1 e V2 e A é o conjunto de arestas geradas da seguinte maneira. Considere pi = (ui, wi) e pj = (uj, wj) dois vértices do conjunto V , i.e., pi, pj ∈ V , onde ui, uj ∈ V1 e wi, wj ∈ V2. Eles são adjacentes se ui = uj e (wi, wj) ∈ A2 ou wi = wj e (ui, uj) ∈ A1. O grafo G resultante possui |V | = |V1||V2| vértices e |A| = |V1||A2|+ |V2||A1| arestas. A Figura 2.9 mostra (c) o grafo resultante do produto dos grafos (a) e (b). Note que os vértices em (c) são os pares ordenados dos vértices dos grafos (a) e (b), enquanto que as arestas foram geradas a partir da análise dos componentes dos pares associados às suas extremidades. Por exemplo, a aresta {(u1, w1), (u1, w2)} existe pois os primeiros componentes dos pares (u1, w1) e (u1, w2) são iguais e existe aresta entre w1 e w2 no grafo mostrado em (b). 2.2.5 Complemento O complemento de um grafo G = (V,A), denotado por Ḡ = (V,A1) é um grafo cujo conjunto de vértices é o mesmo de G, e com um conjunto de arestas definido da seguinte maneira A1 = {{u, v} : ({u, v} ∈ P(V )−A)∧ (u 6= v)}, ou seja, o conjunto A1 é formado por todas as arestas que correspondem aos pares não ordenados que não pertencem ao conjunto de arestas de G e não correspondem a laços. O complemento de um grafo Kn é um grafo com n vértices totalmente desconexo, e o complemento de um grafo desconexo de n This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 42 Tipos de Grafos e Operações (a) (b) (c) Figura 2.9: Operação de produto. (c) mostra o resultado do produtos dos grafos em (a) e (b). vértices é um grafo completo Kn. O complemento dos grafos mostrados nas Figuras 2.8(b) e (c) é apresentado nas Figuras 2.10 (a) e (b), respectivamente. (a) (b) Figura 2.10: Operação de complemento. (a) e (b) mostram o complemento dos grafos das Figuras 2.8(b) e (c), respectivamente. Quando um grafo é isomórfico ao seu complemento, então ele é chamado de grafo autocomplementar. Grafos Isomórficos são discutidos em detalhes no Caṕıtulo 1.6.Porém podemos adiantar informalmente, que dois grafos são isomórficos se eles possuem a relação de adjacência (estrutural) entre seus vértices. Figura 2.11(a) mostra um grafo G autocomplementar, e (b) seu complemento, Ḡ. Observe que tanto G quanto Ḡ correspondem a um C5. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 2.2 Operações com grafos 43 (a) (b) Figura 2.11: Grafo autocomplementar. (a) grafo exemplo e (b) seu comple- mento. 2.2.6 Remoção A operação de remoção aplicada a um grafo G = (V,A) retira ou um con- junto de arestas ou um conjunto de vértices e as arestas incidentes neste conjunto. Para um grafo G, a remoção de um vértice v, representada por G − v, causa a remoção tanto de v quanto das arestas incidentes a v. En- quanto que a operação G − e, com e = {u, v}, leva à retirada da aresta {u, v}. Seja Sv ⊆ V , então G1 = G−Sv é o grafo resultante da retirada de todos os vértices v ∈ Sv e de suas arestas incidentes. Logo, G1 = (V1, A1) onde V1 = V − Sv e A1 = {(u,w) ∈ A : u,w ∈ V1}. Observe que G1 = G[V − Sv], ou seja, é G1 é o subgrafo de G induzido por V − Sv. Seja Sa ⊆ A, então G2 = G − Sa é o grafo resultante da retirada das arestas a ∈ Sa. Logo, G2 = (V2, A2) onde V2 = V e A2 = A − Sa, i.e., G2 = G[A − Sa] é o subgrafo de G induzido por Sa. A Figura 2.12 ilustra (a) um grafo G e os grafos (b) G − Sv e (c) G − Sa, onde Sv = {1, 2} e Sa = {{1, 2}, {1, 4}, {1, 5}, {4, 5}, {2, 5}}. Note que os grafos (b) e (c) correspondem aos grafos induzidos G[V − Sv] e G[A− Sa], respectivamente. 2.2.7 Contração Uma operação de contração, também chamada de arco-contração, em um grafo G afeta uma aresta a, em particular, a transformando em um novo vértice v. Esta operação é representada por G/a e consiste na remoção da aresta a = {u,w} e de seus vértices u e w e subsequente inserção de um novo This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 44 Tipos de Grafos e Operações (a) (b) (c) Figura 2.12: Exemplo da aplicação da operação de remoção. (a) grafo G, (b) grafo G − Sv e (c) grafo G − Sa, onde Sv = {1, 2} e Sa = {{1, 2}, {1, 4}, {1, 5}, {4, 5}, {2, 5}}. vértice v e re-ligação das arestas incidentes tanto a u quanto a w em G a este novo vértice. Esta operação é particularmente importante para verificar a planaridade de certos grafos e para o cálculo do número de árvores de espalhamento de um grafo, como será discutido adiante no Caṕıtulo 7 e 6.3. Dependendo do grafo e da aresta escolhida é posśıvel que um grafo simples passe a ser multigrafo, ou um multigrafo passe a ser pseudografo. A Figura 2.13 ilustra (a) um grafo G e (b) a operação arco-contração G/a aplicada à aresta a. A aresta a deu origem ao vértice v, e todas as arestas incidentes às extremidades de a são agora incidentes em v. Enquanto G é simples, G/a é um multigrafo. (c) mostra a operação de arco-contração no grafo G/a aplicada à aresta b, produzindo (G/a)/b. A aresta b deu origem ao vértice m e a um laço. O multigrafo G/a passou a ser um pseudografo (G/a)/b. 2.2.8 Supressão e Subdivisão A operação de supressão de um vértice é realizada apenas em vértices de grau 2 e consiste no seguinte processo. Seja G = (V,A) um grafo qualquer e v um vértice adjacente a dois vértices u e w. A operação de supressão de v, remove v do conjunto V e cria uma aresta entre u e w produzindo um novo grafo G′ = (V ′, A′). O grafo G′ é chamado grafo reduzido de G ou grafo homeomorficamente reduzido de G. Ele possui V ′ = V − v eGrafo Homeo- morficamente Reduzido A′ = A− A1 + {u,w}, com A1 = {(v, u), (v, w)}. A operação inversa é chamada subdivisão de arestas. Ela consiste em Subdivisão de Grafo inserir vértices de grau 2 nas arestas do grafo criando subdivisões de ares- tas. Esta operação funciona da seguinte maneira. Seja G = (V,A) um grafo qualquer, v um vértice novo e uma aresta a = {u,w}. A operação de sub- This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 2.2 Operações com grafos 45 (a) (b) (c) Figura 2.13: Operação de arco-contração aplicada (a) ao grafo G na aresta a, resultado em (b) no grafo G/a. A figura (c) mostra o resultado da operação (G/a)/b. divisão de a, remove a aresta a, i.e., G − {u,w}, e cria duas novas arestas {u, v} e {v, w}. produzindo um novo grafo G′ = (V ′, A′). Este grafo possui V ′ = V ∪ {v} e A′ = A − {u,w} + A1, com A1 = {(v, u), (v, w)}. Logo, dizemos que G′ é uma subdivisão de G. As Figuras 2.14(a) e (b) ilustram os resultados das operações de subdi- visão e de supressão, respectivamente. (a) é subdivisão de (b) obtida a partir da subdivisão da aresta {4, 3} de (b). Enquanto que (b) é um grafo reduzido de (a), obtido a partir da supressão do vértice 7. 2.2.9 Decomposição A operação de decomposição de um grafo G gera um conjunto de subgrafos G1, G2, . . . tal que cada aresta de G aparece exatamente uma única vez em um único subgrafo, ou seja, considerando que o conjunto de arestas do grafo Gi é Ai, temos Ai ∩Aj = ∅, ∀ i 6= j. Os subgrafos gerados podem compartilhar vértices, entretanto não podem compartilhar arestas. Em algumas áreas, a decomposição é uma ferramenta útil, pois é posśıvel isolar cada parte do grafo, estudá-las separamente e em seguida combinar os resultados obtidos. O grafo 3-cubo, Q3, mostrado na Figura 2.15(a) é decomposto em 4 caminhos P4 ilustrados em (b). Estes caminhos são mostrados através de arestas grossas e finas. Considerando apenas os vértices temos os caminhos (1, 2, 6, 5), (3, 1, 5, 7), (2, 4, 8, 6) e (8, 7, 3, 4). This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 46 Tipos de Grafos e Operações (a) (b) Figura 2.14: Operações de Supressão e Subdivisão. (a) é uma subdivisão do grafo em (b), e (b) é um grafo reduzido de (a). 2.2.10 Operador Linha L Para facilitar a solução de certos problemas, convém realizar o mapeamento das linhas do grafo para vértices e vice-versa. Este mapeamento é realizado pelo operador L, o qual recebe como operando um grafo(ou um d́ıgrafo) e retorna um novo grafo (ou digrafo), chamado grafo linha (ou d́ıgrafo linha).Grafo Linha Dı́grafo Linha Dado um grafo G = (V,A), o grafo linha L(G) = (VL, AL) correspondente é constrúıdo da seguinte maneira. Cada aresta {v, u} ∈ A dá origem a um vértice vu em L(G), i.e., um vértice vu ∈ VL se e somente se {v, u} ∈ A. A adjacência entre os vértices em L(G) é definida da seguinte maneira. Dois vértices distintos uv, xw ∈ VL são adjacentes se as arestas correspondentes em G são adjacentes, i.e., {u, v} ∩ {x,w} 6= ∅. A Figura 2.16(a) mostra um grafo simples G composto de arestas com rótulos a − f , enquanto que (b) mostra o grafo linha L(G) correspondente. Cada aresta em (a) é mapeada para um vértice em (b). A adjacência dos vértices em L(G) é dada pela adjacência das arestas em G. Por exemplo, o vértice a em L(G) é adjacente aos vértices b, e, f , pois em G a aresta a é adjacente às arestas b, e, f , ou seja, ela compartilha vértices com as arestas b, e, f . O mesmo ocorre com o vértice c em L(G). Ele é adjacente aos vértices b, d, f , pois a aresta c no grafo G compartilha vértices com as arestas b, f, d. Um d́ıgrafo linha é constrúıdo a partir de idéias similares levando em consideração a orientação dos arcos do d́ıgrafo original. Dado um d́ıgrafo D = (V,A), o d́ıgrafo linha L(D) = (VL, AL) correspondente é constrúıdo da This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 2.3 Exerćıcios 47 (a) (b) Figura 2.15: Decomposição do (a) grafo Q3 em (b) quatro grafos P4. seguintemaneira. Cada arco (v, u) ∈ A dá origem a um vértice vu em L(D) e existe um arco com origem em vu ∈ AL e destino em xw ∈ AL se e somente se para os arcos correspondentes (v, u) e (x,w) em D, u = x, ou seja, se o vértice destino u do arco (v, u) for igual ao vértice origem do arco (x,w). A Figura 2.17(a) mostra um d́ıgrafo simples D = (V,A) composto de arestas com rótulos a− f , enquanto que (b) mostra o d́ıgrafo linha L(D) = (VL, AL) correspondende. Cada arco em (a) é mapeado para um vértice em (b). A adjacência entre os vértices em L(D) é dada considerando a orientação dos respectivos arcos. Grafos Linha são importantes em diversos problemas, como o problema de coloração de arestas. Para colorir as arestas de um grafo G podemos usar as técnicas padrão de coloração de vértices porém no grafo L(G). O cálculo dos emparalhemanto maximais segue a mesma idéia. Para encontrar os em- parelhamentos maximais de um grafo G, podemos empregar o método para encontrar os conjuntos independente em L(G). Estes problemas serão discu- tidos nas Seções 4.5 e 8, sobre emparelhamento e coloração, respectivamente. 2.3 Exerćıcios Exerćıcio 2.1. Determine o número de arcos de um d́ıgrafo completo Kn. Exerćıcio 2.2. Mostre que um grafo Kn possui 1 2 n(n− 1) arestas. Exerćıcio 2.3. Determine quantas arestas e quantos vértices possui um Qk. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 48 Tipos de Grafos e Operações (a) (b) Figura 2.16: Grafo linha (b) L(G) do grafo G em (a). Exerćıcio 2.4. Determine o grafo resultante da operação K2 +K3. Exerćıcio 2.5. Determine o grafo resultante da operação de arco contração na aresta {4, 7} no grafo na Figura 2.14(a). Em seguida o compare com o grafo mostrado na Figura 2.14(b). Exerćıcio 2.6. Mostre que o número máximo de aresta entre todos os p vértices de um grafo com nenhum triângulo é dp2/4e Exerćıcio 2.7. Dado um grafo G(V,A), mostre que para qualquer vértice v, dG(v) + dḠ(v) = n− 1, onde dG(v) é o grau do vértice v no grafo G. Exerćıcio 2.8. Prove ou refute : Se todo vértice de um grafo simples G = (V,A), com |V | = n, tiver grau 2, então G é um grafo Cn. Exerćıcio 2.9. Mostre que se G é um grafo simples então diam(G) ≥ 3 implica diam(Ḡ) ≤ 3. Exerćıcio 2.10. Mostre que Kn+p = Kn +Kp, i.e., a junção de dois grafos completos Kn e Kp é um grafo completo Kn+p. Exerćıcio 2.11. Mostre que o complemento de um caminho de comprimento 3 é um caminho de comprimento 3. Exerćıcio 2.12. Mostre que para qualquer Grafo G com 6 vértices, G ou Ḡ possui um triângulo. Exerćıcio 2.13. Prove que G ∼= H sse Ḡ ∼= H̄. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 2.3 Exerćıcios 49 (a) (b) Figura 2.17: Dı́grafo linha (b) L(D) do d́ıgrafo D em (a). This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 50 Tipos de Grafos e Operações This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Caṕıtulo 3 Conectividade Em vários problemas do mundo real é necessário verificar se existe ou não pelo menos um caminho entre um par de vértices u e v. Se este caminho existe e caso venha a ser bloqueado, é posśıvel ir de u para v (ou o contrário) através de um caminho alternativo? Se sim, por quantos caminhos alternati- vos? Responder estas e outras perguntas deste tipo é do interesse de diversas áreas, entre elas robótica e redes de computadores. Na robótica móvel, exis- tem diversos algoritmos baseados em busca em grafos que encontram um caminho ou o caminho mais curto entre duas posições desejadas a partir de um mapa dado, como discutido na Seção 1.7.2. Algoritmos, como estes, po- dem ser utilizados para planejar caminhos para robôs não-tripulados aéreos ou aquáticos; ou na área de redes de computadores, para a transmissão de dados entre computadores geograficamente distante. Nos exemplos acima, comentamos brevemente apenas a descoberta de ca- minhos entre dois pontos, porém de igual importância é considerarmos esta descoberta de caminhos quando ocorrem falhas. Por exemplo, se o cami- nho que um robô está seguindo estiver bloqueado por um obstáculo móvel, é posśıvel atingir a posição desejada por um caminho alternativo? Se durante a transmissão de um pacote, um computador, que faz parte do caminho que o pacote deverá seguir, falhar, este pacote será perdido ou seguirá por um caminho alternativo? Notem que em ambos os casos, é importante sabermos se existem ou não vários caminhos entre qualquer par de vértices e se não existirem, quais pares de vértices poderão ser afetados caso surja algum im- previsto? No caso da rede de computadores, a falha em um computador pode fazer com que uma parte da rede não se comunique mais com a(s) outra(s). Este seria o mesmo caso de um rompimento de um cabo de fibra ótica que This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 52 Conectividade liga dois servidores. Identificar o(s) computador(es) que gera(m) esta des- conexão é extremamente importante, pois é posśıvel tomar uma providência de forma a aumentar a tolerância a este tipo de falha. No caso de um robô móvel, este poderá ficar parado economizando energia ou retornar ao seu ponto de partida. Este caṕıtulo apresenta os aspectos teóricos subjacentes aos questionamentos apresentados. 3.1 Relação de Vizinhança Estendida e Fe- chamento Transitivo Na Seção 1.2 definimos as funções multivaloradas τ , τ+ e τ−, onde a função τ permite calcular os vértices vizinhos a um dado vértice em um grafo, en- quanto que as funções τ+ e τ− permitem determinar os vértices atinǵıveis e que atingem um dado vértice em um d́ıgrafo, respectivamente. Estas funções podem ser estendidas para considerar ao invés de um único vértice um sub- conjunto de vértices. Dados um grafo G = (V,A) e um d́ıgrafo D = (Vd, Ad), definimos a extensão das funções multivaloradas τ , τ+ e τ−, como Γ(S) = ⋃ v∈S τ(v), Γ+(Sd) = ⋃ v∈Sd τ+(v) e Γ−(Sd) = ⋃ v∈Sd τ−(v) onde S e Sd são subconjuntos não-vazio de vértices, S ⊆ V , Sd ⊆ Vd; Γ : 2V ; 2V é a função estendida de vizinhança; Γ+ : 2Vd ; 2Vd é a função estendidaFunções Esten- didas de Vizi- nhança em Gra- fos e Dı́grafos de vizinhança direta; e Γ− : 2Vd ; 2Vd é a função estendida de vizinhança inversa. A função Γ(S) mapeia S para o conjunto de vértices vizinhos aos vértices v ∈ S, enquanto que as funções Γ+(Sd) e Γ−(Sd) mapeiam Sd para o conjunto dos vértices atinǵıveis a partir de e que atingem os vértices vd ∈ Sd, respectivamente. Por definição Γ(∅) = Γ+(∅) = Γ−(∅) = ∅. Estas funções podem ser aplicadas sucessivamente para calcular os vizi- nhos de um vértice v a uma dada distância. Por exemplo, a composição Γ(Γ({v})) = Γ2({v}) fornece todos os vértices atinǵıveis por um passeio de comprimento 2 a partir de v, enquanto que Γn({v}), retorna todos os vértices atinǵıveis por um passeio de comprimento n. Analogamente, podemos apli- car sucessivamente as funções Γ+ e Γ−. Por exemplo, Γ+n({v}) fornece todos os vértices atinǵıveis por um passeio direcionado de comprimento n a partir de v, enquanto que Γ−n({v}) retorna todos os vértices que atingem v através de um passeio direcionado de comprimento n. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.1 Relação de Vizinhança Estendida e Fechamento Transitivo 53 Considere o grafo da Figura 3.1(a) e os seguintes conjuntos de vértices V1 = {1}, V2 = {2, 3} e V3 = {3, 4}. Abaixo são listados os resultados da aplicação da função Γ nestesconjuntos. Γ(V1) = Γ({1}) = τ(1) = {5}; Γ(V2) = Γ({2, 3}) = τ(2) ∪ τ(3) = {5, 6} ∪ {5, 4} = {4, 5, 6} Γ(V3) = Γ({3, 4}) = τ(3) ∪ τ(4) = {5, 4} ∪ {3, 6} = {3, 4, 5, 6} Usando o resultado anterior, calculamos Γ2 para cada conjunto novamente Γ2(V1) = Γ(Γ(V1)) = Γ({5}) = {1, 2, 3, 6}; Γ2(V2) = Γ(Γ(V2)) = Γ({4, 5, 6}) = τ(4) ∪ τ(5) ∪ τ(6) = {1, 2, 3, 4, 5, 6} Γ2(V3) = Γ(Γ(V3)) = Γ({3, 4, 5, 6}) = τ(3)∪τ(4)∪τ(5)∪τ(6) = {1, 2, 3, 4, 5, 6} (a) (b) Figura 3.1: Aplicação da função multivalorada no grafo em (a) e no d́ıgrafo em (b). Para o d́ıgrafo da Figura 3.1(b), encontramos os resultados abaixo para a aplicação das funções Γ+ e Γ− nos conjuntos de vértices V1 = {1}, V2 = {2, 3} e V3 = {3, 4}. Γ+(V1) = τ +(1) = {3, 5} Γ+(V2) = τ +(2) ∪ τ+(3) = {6} ∪ {5} = {5, 6} Γ+(V3) = τ +(3) ∪ τ+(4) = {5} ∪ {3} = {3, 5} Γ−(V1) = τ −(1) = ∅ Γ−(V2) = τ −(2) ∪ τ−(3) = {5} ∪ {1, 4} = {1, 4, 5} Γ−(V3) = τ −(3) ∪ τ−(4) = {1, 4} ∪ {6} = {1, 4, 6} A aplicação das funções Γ+2 e Γ−2 nos conjuntos V1, V2 e V3 resulta em Γ+2(V1) = Γ +({3, 5}) = τ+(3) ∪ τ+(5) = {2, 5, 6} This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 54 Conectividade Γ+2(V2) = Γ +({5, 6}) = τ+(5) ∪ τ+(6) = {2, 4, 6} Γ+2(V3) = Γ +({3, 5}) = τ+(3) ∪ τ+(5) = {2, 5, 6} Γ−2(V1) = Γ −(∅) = ∅; Γ−2(V2) = Γ −({1, 4, 5}) = τ−(1) ∪ τ−(4) ∪ τ−(5) = {1, 3, 6} Γ−2(V3) = Γ −({1, 4, 6}) = τ−(1) ∪ τ−(4) ∪ τ−(6) = {2, 5, 6} A partir das funções estendidas de vizinhança para grafos e d́ıgrafos, podemos definir a função de fechamento transitivo Γ̂ : V ; 2V para grafos,Função de Fe- chamento Tran- sitivo e as funções de fechamento transitivo direto Γ̂+ : Vd ; 2 Vd e inverso Γ̂− : Vd ; 2 Vd para d́ıgrafos. Dado um vértice v, a função Γ̂(v) é definida por Γ̂(v) = {v} ∪ Γ({v}) ∪ Γ2({v}) ∪ . . . ∪ Γn({v}) ∪ . . . e retorna todos os vértices que são atinǵıveis a partir de v através de um passeio de qualquer comprimento. A função Γ̂+(v) é definida por Γ̂+(v) = {v} ∪ Γ+({v}) ∪ Γ+2({v}) ∪ . . . ∪ Γ+n({v}) ∪ . . . e retorna o conjunto de todos os vértices que v consegue atingir a partir de um passeio direcionado de qualquer comprimento. Enquanto que a função Γ̂−(v) é definida por Γ̂−(v) = {v} ∪ Γ−({v}) ∪ Γ−2({v}) ∪ . . . ∪ Γ−n({v}) ∪ . . . e retorna todos os vértice que atingem v através de um passeio direcionado de qualquer comprimento. Aplicando a função Γ̂ no vértice 1 do grafo ilustrado na Figura 3.1(a), temos Γ̂(1) = {1} ∪ Γ({1}) ∪ Γ2({1}) ∪ . . . = {1, 2, 3, 4, 5, 6} Observe que temos Γ̂(v) = V para todo v ∈ V . A função Γ̂+ quando aplicada aos vértices do d́ıgrafo ilustrado na Fi- gura 3.1(b) resulta em Γ̂+(1) = {1} ∪ Γ+({1}) ∪ Γ+2({1}) ∪ . . . = {1, 2, 3, 4, 5, 6} Γ̂+(2) = Γ̂+(3) = Γ̂+(4) = Γ̂+(5) = Γ̂+(6) = {2, 3, 4, 5, 6} Como todos os vértices com exceção do vértice 1 estão dentro de um ciclo direcionado, um pode atingir o outro dentro do ciclo através de um caminho This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.2 Grafos Conexos e Desconexos 55 direcionado. Em relação à função Γ̂−, sua aplicação nos vértices do d́ıgrafo da Figura 3.1(b) resulta em Γ̂−(1) = {1} ∪ Γ−({1}) ∪ Γ−2({1}) ∪ . . . = {1} Γ̂−(2) = Γ̂−(3) = Γ̂−(4) = Γ̂−(5) = Γ̂−(6) = {1, 2, 3, 4, 5, 6} De forma similar ao apresentado anteriormente, com exceção do vértice 1, todos os vértices são atinǵıveis a partir dos demais vértices do d́ıgrafo. Em um d́ıgrafo se v é um vértice fonte então Γ̂−(v) = {v}, enquanto que se v for um vértice sumidouro, temos Γ̂+(v) = {v}. 3.2 Grafos Conexos e Desconexos Um grafo não vazio é chamado grafo conexo se existe um caminho entre Grafo Conexo qualquer par de vértices, caso contrário, ele é chamado grafo desconexo. A Grafo Desco- nexoFigura 3.2(a) mostra um exemplo de grafo conexo G1 = (V1, A1) onde existe um caminho1 entre cada par de vértices, por exemplo, existe um caminho de comprimento 1 entre os vértices 1 e 2, um caminho de comprimento 3 entre os vértices 2 e 5, etc. Observe que a função de fechamento transitivo quando aplicada a qualquer vértice de G1 retorna todo o seu conjunto de vértices, i.e., Γ̂(v) = V1, para todo v ∈ V1. Por outro lado, o grafo G2 = (V2, A2) ilustrado na Figura 3.2(b) mostra que existem vértices que não são atinǵıveis a partir de outros, por exemplo, não existe caminho entre os vértices 1 e 5, tão pouco entre os vértices 2 e 6. Logo, este grafo é desconexo, pois para qualquer vértice v ∈ V2, temos Γ̂(v) 6= V2. Qualquer grafo G = (V,A) possui um subgrafo G[V ′], induzido2 por um conjunto de vértices V ′ ⊆ V , que é conexo. Se V ′ não está contido pro- priamente em outro conjunto de vértices V ′′ de forma que o grafo, G[V ′′] , seja conexo, então G[V ′] é um subgrafo conexo maximal, sendo chamado de componente conexo de G. Componente Conexo Definição 3.1. Um componente conexo de um grafo G é um subgrafo conexo de G que não é um subgrafo próprio de outro subgrafo conexo de G. 1Para que um grafo seja conexo é importante que exista um caminho de qualquer comprimento entre cada par de vértices 2O conceito de grafo induzido é apresentado na Seção 1.1 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 56 Conectividade (a) (b) Figura 3.2: Conectividade: (a) grafo conexo e (b) grafo desconexo. Considere o grafo G1 = (V1, A1) na Figura 3.2(a), o grafo induzido,G1[V ′], pelo conjunto de vértices V ′ = {1, 2} é conexo. Porém, este grafo não é maximal, pois o grafo G1[V ′′] com V ′′ = {1, 2, 3} é conexo, i.e., G1[V ′] ⊂ G1[V ′′]. Entretanto G1[V ′′] ainda não é maximal pois o grafo G1[V1] é conexo, i.e., o grafo G1 induzido por todos os vértices de V1 ainda é conexo. Logo, G1 possui um único componente conexo que é o próprio grafo. Por outro lado, o grafo G2 = (V2, A2) na Figura 3.2(b) possui 2 componentes conexos, formados pelos grafos induzidos G2[V ′] e G2[V ′′], com V ′ = {1, 2, 3, 4} e V ′′ = {5, 6}. Observe que Γ̂(v′) = V ′, ∀v′ ∈ V ′ e Γ̂(v′′) = V ′′,∀v′ ∈ V ′′. Dado um grafo G, podemos então particionar seu conjunto de vértices V em subconjuntos V1, V2, . . . , Vn tal que⋃ i Vi = V e Vi ∩ Vj = ∅, ∀i 6= j de forma que G[V1], G[V2],. . . G[Vn] sejam subgrafos conexos maximais de G. Cada G[Vi] é um componente conexo e Ω(G) = n é o número de componentes conexos de G. Se G é um grafo conexo então Ω(G) = 1, caso contrário se G é desconexo, então Ω(G) > 1. Se G é um grafo vazio, então Ω(G) = 0. Usando o exemplo anterior, temos Ω(G1) = 1 e Ω(G2) = 2. 3.3 Vértice de Corte Em alguns grafos simples, a remoção de apenas um único vértice, chamado vértice de corte, faz com que o grafo se torne desconexo. Entretanto o au- mento do número de componentes conexo não é condição necessária para que um vértice seja de corte. Formalmente, um vértice de corte é qualquer This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.3 Vértice de Corte 57 vértice v de um grafo genérico G que permite particionar o conjunto de ares- tas de G em E1 e E2 de maneira que os grafos induzidos G[E1] e G[E2] por estes conjuntos tenham apenas v em comum. A Figura 3.3(a) mostra um grafo simples com os vértices de corte 4 e 5, enquanto que (b) mostra um pseudografo com os vértices de corte 2, 4, 5 e 6. (a) (b) Figura 3.3: Conectividade.(a) grafo simples com os seguintes vértices de corte {4, 5} e (b) pseudo grafo com os seguintes vértices de corte: {2, 4, 5, 6}. Quando o grafo é simples, a remoção de um vértice de corte apenas au- menta o número de seus componentes conexos. Se o grafo é um pseudografo, esta remoção pode não resultar no aumento do número de componentes co- nexos. Por exemplo, a remoção do vértice 6 no grafo 3.3(b) nãoaumenta a Vértice de Corte × Pseudografoquantidade de componentes conexo, porém este vértice permite particionar o conjunto de arestas em dois subconjuntos, um formado pelo laço em 6 e o outro formado pelas demais arestas, de maneira que tenham apenas o vértice 6 em comum. Para um grafo não trivial simples, um vértice v é chamado vértice de corte se e somente se Ω(G− v) > Ω(G). Quando um grafo não possui um vértice corte então ele é chamado grafo não separável. Um bloco de um grafo G é um subgrafo não separável maxi- Grafo não se- parável Bloco mal, i.e., este subgrafo não está contido propriamente em outro subgrafo não separável de G. Se todo o grafo é não separável então ele próprio é um bloco. O grafo da Figura 3.3(a) pode ser decomposto em 3 subgrafos, ilustrados na Figura 3.4, onde cada subgrafo é um bloco. Enquanto que o grafo da Figura 3.3(b) possui 4 blocos, ilustrados na Figura 3.5. Teorema 3.1. Para um vértice v de um grafo simples conexo G = (V,A), as seguintes afirmações são equivalentes: 1. o vértice v é um vértice de corte de G. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 58 Conectividade Figura 3.4: Blocos do grafo mostrado na Figura 3.3(a). Figura 3.5: Blocos do grafo mostrado na Figura 3.3(b). 2. existem vértices w e u distintos de v tal que todo caminho entre w e u passa por v. 3. existe um particionamento do conjunto de vértices V − v em dois sub- conjuntos V1 e V2 tal que qualquer caminho entre u ∈ V1 e w ∈ V2 passa obrigatoriamente pelo vértice v. Alguns grafos não possuem vértice de corte, porém possuem um subcon- junto de vértices cuja remoção resulta ou em um grafo desconexo ou em um grafo trivial. Para um grafo G, este subconjunto é chamado de conjunto separador de G. Um grafo é chamado k-conexo (ou k-vértice conexo) se oConjunto Sepa- rador tamanho do menor conjunto separador é k. Neste caso, dizemos que a co- nectividade de vértice ou apenas conectividade do grafo, representada porConectividade de Vértice κ(G), é igual a k, i.e., κ(G) = k. Por definição κ(G) = 0, se o grafo G é trivial ou desconexo, e κ(Kn) = n − 1, ∀n ≥ 1. Os conjuntos separadores que são minimais são comumente chamados de conjunto de corte de vértices, This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.4 Aresta de Corte 59 i.e., conjuntos separadores que não possuem um subconjunto próprio que é separador. Conjunto de Corte de Vértices O grafo G ilustrado na Figura 3.3(a) possui vários conjuntos separadores, entre eles, temos, V1 = {2, 3, 4}, V2 = {3, 4} e V3 = {5}. Apenas o conjunto V3 é um conjunto de corte de vértices, pois tanto V1 quanto V2 possuem subconjuntos próprios que são separadores. Por exemplo, V1 possui dois subconjuntos {2, 3} e {4} que são separadores e também conjunto de corte de vértices, sendo que o último possui um vértice de corte. Eles têm tamanho 2 e 1, respectivamente. Por outro lado, V2 possui o subconjunto {4} que é separador e também de corte de vértices. A conectividade de vértice deste grafo é κ(G) = 1, pois o menor conjunto de corte de vértices tem tamanho igual a 1. Logo, este grafo é um grafo 1-conexo ou 1-vértice conexo. Podemos definir a conectividade entre dois vértices não adjacentes u e v, Conectividade entre Vérticesdenotada por κ(u, v), como o menor número de vértices cuja remoção separa u de v, i.e., faz com que não exista um caminho entre u e v. Menger mostrou que esta conectividade está intimamente relacionada ao número de caminhos disjuntos que unem u e v no grafo. Baseado nisto temos abaixo uma das versões do Teorema do Menger. Teorema 3.2 ([5]). Considere um grafo G = (V,A) e dois vertices u, v ∈ V não adjacentes, o número mı́nimo de vértices que separam u de v é igual a número máximo de caminhos disjuntos entre u e v em G. A partir dáı temos o seguinte teorema sobre conectividade de vértices de um grafo qualquer. Teorema 3.3. Um grafo é k-vértice conexo se e somente se existem k cami- nhos disjuntos entre qualquer par de vértices. Para um grafo que não é completo G = (V,A), temos κ(G) = minκ(u, v) considerando todos os pares de vértices não adjacentes u, v ∈ V . 3.4 Aresta de Corte Uma aresta a de um grafo G é chamada de aresta de corte, ou ponte, se Ponte sua remoção aumentar o número de componentes conexos de G, ou seja, Ω(G−a) > Ω(G). A principal caracteŕıstica de uma aresta de corte é que ela não está contida nos ciclos de G. As Figuras 3.3(a) e (b) mostram as arestas de corte através de arestas mais grossas. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 60 Conectividade Teorema 3.4. Para uma aresta a de um grafo conexo G = (V,A), as se- guintes afirmações são equivalentes: 1. a aresta a é uma aresta de corte de G. 2. a aresta a não está contida nos ciclos de G. 3. existem vértices w e u distintos tal que todo caminho entre w e u passa por a. 4. existe um particionamento do conjunto de vértices V em dois subcon- juntos V1 e V2 tal que qualquer caminho entre u ∈ V1 e w ∈ V2 passa obrigatoriamente pela aresta a. De forma similar ao exposto para vértices de corte, alguns grafos não possuem aresta de corte, porém possuem um subconjunto de aresta cuja remoção resulta ou em um grafo desconexo ou em um grafo trivial. Para um grafo G, este conjunto é chamado de conjunto desconector de G. Portanto,Conjunto Desco- nector um grafo é chamado k-aresta conexo se o tamanho do menor conjunto des- conector é k. Neste caso, dizemos que a conectividade de aresta do grafo,Conectividade de Aresta representada por λ(G), é igual a k, i.e., λ(G) = k. Por definição λ(G) = 0, se o grafo for trivial ou desconexo e λ(G) = 1 se o grafo for conexo e possuir uma aresta de corte. Os conjuntos desconectores minimais são chamados deConjunto de Corte de Ares- tas conjunto de corte de arestas, i.e., conjuntos desconectores que não possuem um subconjunto próprio que é desconector. O grafo G ilustrado na Figura 3.3(a) possui vários conjuntos desconecto- res, entre eles, temos, D1 = {{2, 4}, {3, 4}, {2, 3}}, D2 = {{2, 4}, {3, 4}, {4, 5}} e D3 = {{5, 6}}. Apenas o conjunto D3 é um conjunto de corte de arestas, pois tanto D1 quanto D2 possuem subconjuntos próprios que são desconecto- res. Por exemplo, D1 possui o subconjunto {{2, 4}, {3, 4}} que é desconector e também um conjunto de corte de arestas de tamanho 2. D2 possui dois subconjuntos {{2, 4}, {3, 4}} e {{4, 5}} que são desconectores. O primeiro tem tamanho igual a 2 enquanto o segundo tem tamanho igual a 1. Este último é composto por uma aresta de corte. A conectividade de aresta deste grafo é λ(G) = 1, pois o menor conjunto de corte de arestas tem tamanho igual a 1. Logo, este grafo é um grafo 1-aresta conexo. Podemos definir a conectividade de aresta entre dois vértices u e v, deno-Conectividade de Aresta entre Vértices tada por λ(u, v), como o menor número de arestas cuja remoção separa u de v, i.e., que faz com que u não seja atingido por v (vice-versa). De forma simi- lar ao apresentado para vértices, a conectividade de aresta está intimamente This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.5 Conectividade em Dı́grafos 61 relacionada ao número de caminhos aresta-disjuntos que unem vértices u e v. Baseado nisto temos o seguinte Teorema. Teorema 3.5 ([5]). Considere um grafo G=(V,A) e dois vertices distintos v1, v2 ∈ V , o número mı́nimo de arestas que separam v1 de v2 é igual a número máximo de caminhos aresta-disjuntos entre v1 e v2 em G. A partir dáı temos o seguinte teorema sobre conectividade de aresta de um grafo qualquer. Teorema 3.6. Um grafo G = (V,A) é k-arestaconexo se e somente se ele possuir no k caminhos aresta-disjuntos entre qualquer par de vértices. Portanto para um grafo G = (V,A) não trivial, temos λ(G) = minλ(u, v) para qualquer par de vértices distintos u, v ∈ V . A relação entre a conecti- vidade de vértice, a conectividade de arestas e o menor grau de um grafo G é dada pelo seguinte Teorema. Teorema 3.7 ([6]). Para qualquer grafo G, κ(G) ≤ λ(G) ≤ δ(G) 3.5 Conectividade em Dı́grafos Quanto à conectividade, um d́ıgrafo pode ser classificado de três formas dis- tintas: • fracamente conexo ou fraco se seu grafo subjacente é conexo, ou seja, Dı́grafo Fraca- mente Conexopara cada par de vértices existe um semi-caminho. Note que todo d́ıgrafo conexo é fracamente conexo. • unilateralmente conexo ou unilateral se para cada par v e u de vértices Dı́grafo Uni- lateralmente Conexo existe um caminho direcionado ou de v para u ou de u para v ou ambos. • fortemente conexo ou forte se existe um caminho direcionado entre cada Dı́grafo Forte- mente Conexopar de vértices. Usando as funções de fechamento transitivo inverso e direto, um d́ıgrafo D = (V,A) é fortemente conexo se e somente se Γ̂+(v) = Γ̂−(v) = V , para todo v ∈ V . Ou seja, qualquer vértice pode atingir ou ser atingido pelos This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 62 Conectividade demais vértices do d́ıgrafo através de um caminho direcionado. A relação entre os diferentes tipos de d́ıgrafos é a seguinte d́ıgrafos fortes ⊂ d́ıgrafos unilaterais ⊂ d́ıgrafos fracos. De forma análoga aos grafos quantos aos componentes conexos, um d́ıgrafo pode possuir três diferentes tipos de componentes: • componente forte de um d́ıgrafo é um subd́ıgrafo forte maximal.Componente Forte • componente unilateral de um d́ıgrafo é um subd́ıgrafo unilateral maxi-Componente Unilateral mal. • componente fraco de um d́ıgrafo é um subd́ıgrafo fraco maximal.Componente Fraco A Figura 3.6(a) mostra um d́ıgrafo D e seus componentes fortes, delimita- dos por uma região pontilhada. Para cada componente forte é posśıvel plane- jar um caminho entre qualquer par de vértices do componente. O subd́ıgrafo formado pelos vértices 5 e 6 juntamente com os arcos (5, 6) e (6, 5) não for- mam um componente forte, mesmo existindo um caminho direcionado entre 5 e 6, e entre 6 e 5. Isto se deve ao fato de não ser maximal, pois ele é um subd́ıgrafo próprio do subd́ıgrafo formado pelos vértices 4, 5 e 6 e os arcos associados. (a) (b) Figura 3.6: Componentes fortes de um d́ıgrafo. (a) mostra um d́ıgrafo e seus componentes fortes delimitados por uma região pontilhada. (b) mostra o digrafo condensado de (a). De todos os tipos de componentes, os componentes fortes são os mais importantes, pois eles permitem gerar um novo d́ıgrafo através do processo This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.5 Conectividade em Dı́grafos 63 de condensação que mantém algumas das propriedades estruturais do d́ıgrafoCondensação original. Por exemplo, um d́ıgrafo D = (V,A) pode ter seu conjunto de vértices particionado em V1, V2, . . . , Vn, com⋃ i Vi = V e Vi ∩ Vj = ∅, ∀i 6= j, de forma que os subd́ıgrafos induzidos D[V1], D[V2], . . . , D[Vn] sejam os com- ponentes fortes de D. Se aplicarmos a função de fechamento transitivo direto e inverso a um vértice v ∈ Vi veremos que Γ̂+(v) pode ou não ser igual Γ̂−(v). Isto ocorre por que v pode atingir (e ser atingido por) vértices que não per- tençam ao seu componente forte. Como em um componente forte qualquer vértice tem que atingir os demais, se calcularmos a interseção do resultado das funções de fechamento transitivo direto e inverso para v ∈ Vi obtere- mos Vi, i.e., veremos que Γ̂ +(v) ∩ Γ̂−(v) = Vi, para qualquer v ∈ Vi. Na Seção 3.6 veremos como calcular de forma sistemática os componentes fortes de d́ıgrafos usando as funções de fechamento transitivo inverso e direto. Definição 3.2. Um d́ıgrafo condensado D(D) = (V(D),A(D)) do d́ıgrafo D Dı́grafo Conden- sadopossui um conjunto de vértices V(D) associados aos componentes fortes de D e um conjunto de arcos A(D) onde existe um arco entre os vértices de V(D) se existir pelo menos um arco entre os vértices dos respectivos componentes em D. A Figura 3.6(b) mostra o d́ıgrafo condensado D = (V ,A) do d́ıgrafo D mostrado em (a), onde V = {D[V1], D[V2], D[V3]}3 e A(D) = {(D[V1], D[V2]), (D[V1], D[V3]), (D[V2], D[V3])}. Existe um arco com origem em D[V1] e des- tino em D[V2], pois existe um arco com origem no vértice 2 e destino no vértice 4 em D. Definição 3.3. Um d́ıgrafo inverso I(D) = (V ,A) de um d́ıgrafo D = (V,A) Dı́grafo Inverso é um d́ıgrafo que possui os mesmos vértices de D e um arco (v, w) ∈ A se e somente se (w, v) ∈ A. Se cada aresta de um grafo simples G é substitúıda por um arco e o d́ıgrafo resultante D é forte então dizemos que D é uma orientação forte de G. Assim, um grafo é fortemente orientável, ou seja pode ser transformado em um d́ıgrafo fortemente conexo, se ele tem uma orientação forte. Baseado nisto, temos o seguinte teorema. 3D[Vi] é apenas um rótulo que representa o subd́ıgrafo induzido. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 64 Conectividade Teorema 3.8 ([7]). Um grafo conexo G é fortemente orientável se e somente se ele é conexo e não possui pontes. Para que um grafo G conexo e sem pontes seja transformado em um d́ıgrafo fortemente conexo D, devemos orientar suas arestas de forma a criar ćıclos direcionados. Inicialmente, selecionamos um ciclo e orientamos suas arestas de maneira a produzir um ciclo direcionado. Se todas as arestas estiverem neste ciclo então G foi transformado em D, caso contrário devemos orientar as arestas restantes considerando a orientação feita anteriormente. Isto irá gerar um conjunto de ciclos onde um vértice de um ciclo pode alcançar qualquer vértice do mesmo ou de outro ciclo. A Figura 3.7(a) mostra um grafo conexo G sem pontes sendo transformado em (d) um d́ıgrafo fortemente conexo D. Inicialmente, (b) um ciclo direcionado é constrúıdo definindo uma orientação para as arestas do ciclo (1, 2, 4, 7, 3) em (a). Em (c) constrúımos o novo ciclo direcionado (4, 7, 3, 6, 5) aproveitando a orientação dos arcos definida previamente. Finalmente em (d), orientamos as arestas restantes de forma a fechar ciclos direcionados. A transformação exemplificada acima é apenas um simples exemplo, já que existem inúmeras maneiras de transformar G em D. Quando escolhemos uma orientação para as arestas de um grafo completo, o d́ıgrafo resultante é chamado de torneio. A Figura 3.8 ilustra dois torneios obtidos orientandoTorneio as arestas de um grafo K5. As diferenças entre estes torneios estão nos arcos entre os vértices 1 e 2, 1 e 4 e 2 e 3. Se o torneio possuir um ciclo direcionado de espalhamento então ele é chamado torneio forte. Os torneios apresentadosTorneio Forte na Figura 3.8 são fortes. Para (a), temos o seguinte ciclo de espalhamento (1, 5, 2, 3, 4, 1) enquanto que para (b) temos o ciclo (1, 3, 4, 5, 2, 1). Para um torneio, o grau de sáıda de um vértice é chamado escore e a seqüência dos graus de sáıda de todos vértices define a seqüência de escores. ASeqüência de Es- cores partir desta seqüência é posśıvel determinar a seqüência de graus de entrada, pois para um vértice v, temos δ+(v)+δ−(v) = n−1. Note que se eliminarmos a orientação dos arcos que têm origem e destino em v, temos n − 1 arestas incidentes a v. A seqüência de escore para o torneio ilustrado na Figura 3.8(a) é (3, 2, 1, 2, 2). Quando um vértice consegue alcançar qualquer vértice através de um caminho direcionado de comprimento no máximo igual a 2, então eleVértice Rei é chamado vértice rei. Em relaçãoà conectividade de vértices e arestas para grafos apresentada nas seções 3.3 e 3.4, os d́ıgrafos possuem conceitos similares. Um conjunto separador é um conjunto de vértices de um d́ıgrafo D que quando removido This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.5 Conectividade em Dı́grafos 65 (a) (b) (c) (d) Figura 3.7: Transformação de (a) um grafo conexo sem pontes em (d) um d́ıgrafo fortemente conexo. (b) e (c) são os passos intermediários. faz com que D deixe de ser fortemente conexo. Um conjunto de corte de vértices de um d́ıgrafo é o conjunto separador minimal, ou seja, que não possui subconjunto próprio que seja um conjunto separador. A conectividade forte de vértice de um d́ıgrafo D = (V,A), definido por κ(D) corresponde ao Conectividade Forte de Vérticemenor conjunto de vértices S ⊆ V tal que D − S não é fortemente conexo ou tem apenas um vértice. Se κ(D) = k, então dizemos que D é um k- vértice conexo ou k-conexo. Analogamente ao conceito de grafos, um d́ıgrafo completo Kn possui κ(Kn) = n − 1. Se um d́ıgrafo D não é forte, então κ(D) = 0. Um conjunto desconector é um conjunto de arcos de um d́ıgrafo D que quando removido faz com que D deixe de ser fortemente conexo. Um con- junto de corte de arcos de um d́ıgrafo é o conjunto desconector minimal, ou seja, que não possui subconjunto próprio que seja um conjunto separador. A conectividade forte de arco de um d́ıgrafo D = (V,A), definido por λ(D) cor- Conectividade Forte de Arco This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 66 Conectividade (a) (b) Figura 3.8: Exemplos de torneio forte para o grafo K5. responde ao menor conjunto de corte S ⊆ A tal que D− S não é fortemente conexo. Se λ(D) = k, então dizemos que D é k-arco conexo. Se D não é forte, então λ(D) = 0. Existe relação entre a conectividade de arco e vértices para d́ıgrafos da mesma forma que para grafos. Esta relação de dada pela seguinte desigual- dade. Teorema 3.9 ([8]). Para qualquer d́ıgrafo D, κ(D) ≤ λ(D) ≤ min{δ−(D), δ+(D)} As variações do Teorema de Menger para conectividade de vértice e arcos em d́ıgrafos são apresentadas abaixo. De forma similar ao apresentado para grafos, estas conectividades estão intimamente relacionadas ao número de ca- minhos direcionados disjuntos e arco-disjuntos para qualquer par de vértices no d́ıgrafo. Teorema 3.10 ([5]). Considere um d́ıgrafo D = (V,A) e dois vertices u, v ∈ V não adjacentes, o número mı́nimo de vértices que separam u de v, i.e., vértices cuja remoção elimina todos os caminhos direcionados de u para v, é igual a número máximo de caminhos direcionados disjuntos de u para v em D. Teorema 3.11. Um d́ıgrafo é k-vértice conexo se e somente se existem k caminhos direcionados disjuntos entre qualquer par de vértices. Teorema 3.12 (Teorema de Menger(Dı́grafos)[5]). Considere um d́ıgrafo D=(V,A) e dois vertices distintos u, v ∈ V , o número mı́nimo de arcos cuja This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.6 Cálculo de Componentes 67 remoção separam u de v, i.e., vértices cuja remoção eliminam todos os ca- minhos direcionados de u para v, é igual a número máximo de caminhos direcionados arcos-disjuntos de u para v em D. Teorema 3.13. Um d́ıgrafo D = (V,A) é k-arco conexo se e somente se ele possui k caminhos direcionados arco-disjuntos entre qualquer par de vértices. Em um d́ıgrafo, a conectividade entre dois vértices não adjacentes u e v, Conectividade entre Vérticesdenotada por κ(u, v), corresponde ao número máximo de caminhos direcio- nados disjuntos de u para v, enquanto que a conectividade de arco entre dois vértices u e v não adjacentes, denotada por λ(u, v) é o número máximo de Conectividade de Arco entre Vértices caminhos arco-disjuntos de u para v. Para qualquer d́ıgrafo D, temos κ(D) = minκ(u, v) e λ(D) = minλ(u, v) considerando todos os pares de vértices não adjacentes u e v. 3.6 Cálculo de Componentes Como comentado na seção anterior, as funções de fechamento transitivo po- dem ser utilizada para calcular os componentes conexos de grafos e os com- Método Malgrangeponentes fortes de d́ıgrafos. O seu uso neste cálculo dá origem ao método chamado Malgrange. Inicialmente, será apresentada a aplicação do método em d́ıgrafos e em seguida em grafos. Dado um d́ıgrafo D = (V,A) realizamos os seguintes passos: • selecionamos um vértice v1 ∈ V e calculamos as funções de fechamento transitivo direto, Γ̂+(v1), e inverso, Γ̂ −(v1), e em seguida calculamos a interseção destes resultados, ou seja, Γ̂+(v1)∩Γ̂−(v1). Esta interseção dá origem ao conjuntos de vértices V1 ⊆ V que está associado ao primeiro componente forte D[V1]. • se V1 = V então o d́ıgrafo é fortemente conexo tendo como componente forte ele próprio, i.e., D[V1] = D[V ]. Caso contrário, selecionamos um vértice v2 ∈ V −V1 e repetimos o processo calculando Γ̂+(v2)∩ Γ̂−(v2). Isto dá origem ao segundo conjunto de vértices V2 e consequentemente ao segundo componente forte D[V2]. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 68 Conectividade • na i-ésima iteração, selecionamos vi ∈ V − i−1⋃ j=1 Vj repetindo o processo descrito anteriormente. • O método pára quando após a n-ésima iteração temos n⋃ i=1 Vi = V. Neste momento os d́ıgrafos induzidos D[V1], D[V2], . . . , D[Vn] corres- pondem a todos os componentes fortes de D. A aplicação do método no d́ıgrafo D = (V,A) da Figura 3.9 é como segue. Sorteamos um vértice v1 do conjunto V , por exemplo, v1 = 3. Calculamos Γ̂+(v1) e Γ̂ −(v1) que correspondem respectivamente a Γ̂+(v1) = {2, 3, 6, 8, 9} e Γ̂−(v1) = {3, 5, 6} Figura 3.9: Dı́grafo fracamente conexo com quatro componentes fortes. A interseção destes resultados Γ̂+(v1) ∩ Γ̂−(v1) = V1 = {3, 6} e D[V1] é o subd́ıgrafo induzido pelos vértices em V1 que corresponde ao primeiro componente forte de D. Como V1 6= V , então selecionamos o vértice v2 do conjunto V −V1 = {1, 2, 4, 5, 7, 8, 9}, por exemplo v2 = 2. Calculamos Γ̂+(v2) e Γ̂−(v2) que correspondem respectivamente a Γ̂+(v2) = {2, 8, 9} e Γ̂−(v2) = {2, 3, 5, 6, 8, 9} This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.6 Cálculo de Componentes 69 O resultado da interseção Γ̂+(v1)∩ Γ̂−(v1) = V2 = {2, 8, 9} dá origem a D[V2] que é segundo componente forte de D. Selecionando v3 do conjunto V − (V1 ∪ V2) = {1, 4, 5, 7}, por exemplo v3 = 5, temos Γ̂+(v3) = {2, 3, 5, 6, 8, 9}, Γ̂−(v3) = {5} e V3 = {5}, onde D[V3] é o terceiro componente forte. Repe- tindo o processo anterior, selecionamos v4 de V − (V1 ∪ V2 ∪ V3) = {1, 4, 7}, por exemplo, v4 = 1, obtendo Γ̂ +(v4) = {1, 4, 7} e Γ̂−(v4) = {1, 4, 5, 7}. Logo temos V4 = {1, 4, 7} e o quarto componente forte D[V4]. Como V1 ∪ V2 ∪ V3 ∪ V4 = V, o processo pára e temos D[V1], D[V2], D[V3], D[V4] como os componentes for- tes de D. A aplicação do método de Malgrange em um grafo é sutilmente diferente da utilizada em d́ıgrafos. Se analisarmos atentamente uma aresta {a, b} em um grafo, ela tem a mesma funcionalidade que a presença de ambos os arcos (a, b) e (b, a) em um d́ıgrafo. Portanto, em grafos é usada apenas a função de fechamento transitivo Γ̂ ao invés das funções Γ̂+ e Γ̂− usadas em d́ıgrafos. Considere um grafo G = (V,A), realizamos os seguintes passos: • selecionamos um vértice v1 ∈ V e calculamos a função de fechamento transitivo Γ̂(v1). O conjunto de vértices resultante V1 dá origem ao primeiro componente conexo G[V1]. • se V1 = V então o grafo é conexo tendo como único componente conexo, o próprio grafo. Caso contrário, selecionamosum vértice v2 ∈ V − V1 e repetimos o processo. Calculando Γ̂(v2) que dá origem ao segundo conjunto de vértices V2 e consequentemente ao segundo componente G[V2]. • na i-ésima iteração, selecionamos vi ∈ V − i−1⋃ j=1 Vj repetindo o processo descrito anteriormente. • O método pára quando após a n-ésima iteração temos n⋃ i=1 Vi = V. Neste momento os grafos induzidos G[V1], G[V2], . . . , G[Vn] correspon- dem a todos os componentes de G. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 70 Conectividade A aplicação do método no grafo G = (V,A) representado na Figura 3.10 é como segue. Sorteamos um vértice v1 do conjunto V , por exemplo, v1 = 3 e calculamos Γ̂(v1). O conjunto resultante V1 = {2, 3, 6, 8, 9} dá origem ao primeiro componente G[V1] do grafo. Figura 3.10: Grafo desconexo com três componentes conexos. Como V1 6= V , selecionamos outro vértice v2 do conjunto V − V1 = {1, 4, 5, 7}, por exemplo v2 = 5 e calculamos V2 = Γ̂(v2) dando origem ao conjunto V2 = {5} e portanto ao segundo componente G[V2]. Repetindo o processo anterior, selecionamos v3 ∈ V − (V1 ∪ V2) = {1, 4, 7}, por exemplo, v3 = 4 e calculamos V3 = Γ̂(v3), o que nos leva a V3 = {1, 4, 7} e ao terceiro componente G[V3]. Como V1 ∪V2 ∪V3 = V, o processo pára com G[V1], G[V2] e G[V3] como os componentes conexos de G. 3.7 Exerćıcios Exerćıcio 3.1. Mostre que se G = (V,A) é um grafo simples e δ(G) > d|V |/2e − 1 então G é conexo. Exerćıcio 3.2. A partir do grafo mostrado na Figura 3.2(a), determine os grafos induzidos pelo particionamento das arestas que possuam apenas o vértice 4 em comum. Faça o mesmo para Figura 3.2(b) considerando um a um os vértices 4, 5 e 6. Exerćıcio 3.3. Determine a conectividade de vértice e de aresta do grafo da Figura 3.2(b) This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 3.7 Exerćıcios 71 Exerćıcio 3.4. Existe alguma relação entre conjunto de corte de arestas e conjunto de corte de vértices? Se sim, comente. Exerćıcio 3.5. Mostre que uma aresta é uma aresta de corte se e somente se ela não pertence aos ciclos do grafo. Exerćıcio 3.6. Mostre que se G possui p vértices e δ(G) ≥ dp/2e, então λ(G) = δ(G). Exerćıcio 3.7. Mostre que para todos os grafos com p vértices e q arestas, a conectividade máxima é 0 quando q < p− 1 e é d2q/pe, quando q ≥ p− 1. Exerćıcio 3.8. Qual o significado de κ(G) = 1 para o grafo G subjacente a uma rede de computador? Exerćıcio 3.9. Quantas ruas bloqueadas são necessárias para fazer com que um robô partindo de uma posição p1 não consiga atingir p2, considerando que o grafo subjacente G ao mapa do ambiente possui λ(G) = 4. Existe alguma situação onde uma quantidade de cruzamento de ruas menor que λ(G) pode fazer o robô deixar de atingir seu objetivo? Se sim, desenhe um mapa que ilustre esta situação. Exerćıcio 3.10. Mostre que se G é um grafo k-aresta conexo, com k > 0, e se A′ é um subconjunto de arestas de G de tamanho k, então Ω(G−A′) ≤ 2. Exerćıcio 3.11. Mostre que se G é um grafo r-regular com κ(G) = 1 então λ(G) ≤ dr/2e. Exerćıcio 3.12. Mostre que um d́ıgrafo sem ciclos ou laços possui pelo me- nos um vértice fonte (ou sumidouro). Exerćıcio 3.13. Mostre que um d́ıgrafo condensado D(D) não possui ciclos direcionados. Exerćıcio 3.14. Determine a quantidade de d́ıgrafos simples fracamente co- nexo que podemos obter a partir de um grafo simples conexo G = (V,A). Exerćıcio 3.15. Dado V = {1, 2, . . . , n}, um conjunto de vértices, determine a quantidade de d́ıgrafos fracamente conexos ou não (com no máximo 1 laço por vértice) que podemos gerar usando V . Exerćıcio 3.16. Determine a quantidade de torneios que podemos obter a partir de um grafo Kn. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 72 Conectividade Exerćıcio 3.17. Mostre que todo grafo simples G = (V,A) com |V | > |A| implica Ω(G) ≥ |V | − |A|. Exerćıcio 3.18. Mostre que um grafo simples G = (V,A) tem uma quanti- dade de arestas que satisfaz a seguinte desigualdade |V | − Ω(G) ≤ |A| ≤ 1 2 (|V | − Ω(G))(|V | − Ω(G) + 1) Exerćıcio 3.19. Utilize o método de Malgrange para calcular os componentes fortes do d́ıgrafo ilustrado na Figura 3.11 e encontre o digrafo condensado correspondente. Figura 3.11: Dı́grafo Exemplo This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Caṕıtulo 4 Relacionamentos V-A Neste caṕıtulo apresentamos alguns dos inúmeros conceitos associados ao relacionamento entre vértices e arestas, ou vértice e arco, que chamaremos de relacionamento V-A. Inicialmente apresentaremos o relacionamento entre vértices que dá origem ao conceito de clique, i.e, de subgrafos completos ma- ximais, seguido do conceito de conjunto independente que está associado a subgrafos totalmente desconexos. Em seguida mostraremos o relacionamento entre arestas que dá origem ao conceito de emparelhamento ou acoplamento, finalizando com o conceito de cobertura de vértices que mostra o relaciona- mento entre arestas e vértices de maneira espećıfica. Tentaremos sempre que posśıvel fazer ligações com exemplos do mundo real. 4.1 Clique O primeiro relacionamento V-A diz respeito ao relacionamento vértice-vértice intitulado clique. Um clique em um grafo G é um subgrafo completo de G. O fato de um clique ser um subgrafo completo implica que todos os vértices no clique são adjacentes entre si. Um clique é maximal quando ele não é um subgrafo próprio de outro subgrafo completo. O estudo de cliques foca principalmente em cliques que são maximais e máximos, portanto vários autores quando fazem referência a cliques estão considerando cliques maximais. Adotaremos esta mesma referência neste livro. Quando um clique não for maximal deixaremos expĺıcita esta informação. Um subgrafo é um clique em um pseudografo(ou multigrafo) se e somente se ele for um clique no grafo subjacente ao pseudografo(ou multigrafo). Em um d́ıgrafo(simples This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 74 Relacionamentos V-A ou não), um clique maximal é um subd́ıgrafo completo maximal, onde para cada par de vértices u e v, existem dois arcos (u, v) e (v, u). Como um clique é um subgrafo(ou subd́ıgrafo) completo, ele pode ser descrito apenas pelos seus vértices. A Figura 4.1 mostra (a) um grafo e seus (b) quatro cliques formados pelos seguintes conjuntos de vértices {1, 5}, {5, 6}, {1, 2, 3} e {2, 3, 4, 6}, e destacados usando linhas de diferentes espessuras e formatos. Observe que uma aresta é um subgrafo completo, e em diversos casos ela é clique não maximal. Este é o motivo para que a aresta {1, 5} seja um clique maximal e a {2, 3} não seja. Note que {2, 3} está contida propriamente no subgrafo completo formado pelos vértices {1, 2, 3}, enquanto que {1, 5} não está con- tida em nenhum subgrafo completo. Outro ponto importante é que cliques podem compartilhar tanto arestas quanto vértices. Este é o caso dos cliques formados pelos vértices {1, 2, 3} e {2, 3, 4, 6} que compartilham os vértices 2 e 3 e aresta {2, 3}. A Figura 4.2(b) mostra os cliques do d́ıgrafo em (a). Estes cliques estão marcados com arestas grossas e pontilhadas e são formados pelos seguintes conjuntos de vértices {1, 3, 5} {2, 3, 4, 6} de tamanhos 3 e 4, respectivamente. Diferente do exemplo anterior, apenas um único arco entre um par de vértices não forma um clique. Este é o caso dos pares de vértices 1 e 2, e 5 e 6. Para que eles fossem candidatos a cliques maximais, eles teriam que ter não somente o arco (2, 1), mas também o arco (1, 2). O mesmo se aplica aos vértices 5 e 6. Um grafo oud́ıgrafo G pode possuir vários cliques de diferentes tamanhos, como foi posśıvel ver nos exemplos acima. O maior clique em G é chamado clique máximo e define o número de clique de G, representado por ω(G). EsteClique Máximo Número de Clique número é igual ao tamanho do clique máximo, o qual é dado pelo número de vértices do clique. Mais formalmente ω(G) = r onde r é o maior inteiro tal que Kr ⊆ G. Esta medida é muito importante em problemas, como o de coloração de grafos como veremos no Caṕıtulo 8. O grafo G na Figura 4.1 e o d́ıgrafo D na Figura 4.2 possuem ambos número de clique igual a 4, i.e., ω(G) = 4 e ω(D) = 4. Um grafo ou d́ıgrafo Kn possui um único clique, representado por si próprio. Logo, ω(Kn) = n. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.1 Clique 75 (a) (b) Figura 4.1: Exemplo de cliques em grafos. (b) destaca através de linhas de diferentes espessuras e estilos os quatro cliques do grafo em (a). This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 76 Relacionamentos V-A (a) (b) Figura 4.2: Exemplo de cliques em d́ıgrafos. (b) destaca através de linhas grossa e pontilhada os cliques do d́ıgrafo em (a). This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.2 Conjunto Independente 77 4.2 Conjunto Independente Este relacionamento V-A é outro exemplo de relacionamento vértice-vértice, porém oposto ao apresentado na seção anterior. Ele está associado aos sub- grafos totalmente desconexos maximais chamados conjuntos independentes, ou simplesmente, co− clique. Um conjunto independente é um conjunto de Co-Clique vértices que não são adjacentes entre si. Ele é maximal se não é subconjunto próprio de outro conjunto independente. De forma análoga, um grafo ou Conjunto Independente Máximo d́ıgrafo G pode possuir vários conjuntos independentes de diferentes tama- nhos, sendo este tamanho definido pela cardinalidade do conjunto. O maior conjunto independente é chamado conjunto independente máximo e sua car- dinalidade é usada para definir o número de independência de G, denotado Número de In- dependênciapor α(G). Analogamente ao número de clique, α(G) = r onde r é o maior inteiro tal que K̄r ⊆ G. Um grafo ou d́ıgrafo Kn possui α(Kn) = 1. A Figura 4.3(b) ilustra um exemplo de conjunto independente dado pelos vértices brancos do grafo em (a). Este grafo possui os seguintes conjuntos independentes maximais: {1, 2, 3, 6, 7, 8}, {1, 3, 5, 7} e {4, 6}. O conjunto independente máximo é definido por {1, 2, 3, 6, 7, 8}, logo o número de inde- pendência do grafo é igual a 6. Note que o subconjunto de vértices {1, 3, 7} não é um conjunto independente maximal, pois ele está contido nos subcon- juntos {1, 2, 3, 6, 7, 8} e {1, 3, 5, 7}. Existe uma ı́ntima relação entre conjuntos independentes e cliques. Um clique maximal em um grafo G é um subgrafo completo, que no complemento de G se torna um subgrafo totalmente desconexo, i.e., um conjunto indepen- dente maximal. Esta constatação permite usar algoritmos aplicados a cliques em conjuntos independentes e vice-versa. A presença de vários conjuntos independentes maximais dá origem a um tipo especial de grafo chamado grafo K-partido. Um grafo G = (V,A) é chamado k-partido se os seguintes critérios forem obedecidos Grafo k-partido • for posśıvel particionar o conjunto de vértices em k conjuntos não vazios V1, V2, . . . , Vk, de forma que eles sejam disjuntos dois a dois, i.e., Vi ∩ Vj = ∅, para i 6= j, e a união dos elementos destes conjuntos seja o conjunto de vértices original, ou seja, V1 ∪ V2 ∪ . . . ∪ Vk = V . • cada aresta a ∈ A, tem extremidades em conjuntos distintos, i.e., se a = {v, u}, então v ∈ Vi e u ∈ Vj, onde i 6= j, ou seja, os vértices de cada conjunto não são adjacentes entre si. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 78 Relacionamentos V-A (a) (b) Figura 4.3: Exemplo de conjunto independente em grafos.(b) ilustra um conjunto independente, denotado pelos vértices branco, do grafo em (a). This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.2 Conjunto Independente 79 (a) (b) Figura 4.4: Exemplos de particionamento dos vértices do grafo na Fi- gura 4.3(a) em três conjuntos independentes, mostrados em cores distintas. • k é o menor inteiro que ainda garante os critérios anteriores, caso contrário qualquer grafo com n vértices seria um grafo n partido. Cada conjunto Vi é chamado partição do conjunto de vértices e corres- ponde a um conjunto independente que pode ou não ser maximal. Se existem arestas entre qualquer par de vértices de conjuntos distintos então temos o que é chamado de grafo k-partido completo, denotado por Kn1,n2,...,nk , onde Grafo K-partido Completocada ni = |Vi|. Ele pode ser visto como o resultado da junção de vários complementos de grafos completos, i.e., Kn1,n2,...,nk = K̄n1 + K̄n2 + . . .+ K̄nk A Figura 4.4(a) e (b) ilustram o particionamento dos conjuntos de vértices do grafo na Figura 4.3(a), através de cores distintas, onde vértices com a mesma cor pertencem ao mesmo conjunto independente. Este grafo é um 3- partido, possuindo em cada exemplo três partições onde algumas correspon- dem a conjuntos independentes maximais. Por exemplo, na Figura 4.4(a), temos {4, 6} como conjunto independente maximal, porém {1, 3, 5} não é um conjunto independente maximal, já que está contido propriamente no conjunto independente {1, 3, 5, 7}. A mesma análise pode ser feita na Fi- gura 4.4(b). Um caso particular de um grafo k-partido, é o grafo 2-partido. Este grafo é composto por apenas duas partições, sendo comumente chamado de grafo bipartido. O uso deste tipo de grafo é amplo e é focado em problemas de emparelhamento. Um exemplo foi já mostrado anteriormente na Seção 1.7.1 e corresponde ao problema de associação de tarefas. Neste problema temos This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 80 Relacionamentos V-A (a) (b) Figura 4.5: Exemplos de (a) grafo 3-partido completo e (b) grafo biclique. que associar pessoas e tarefas de forma que cada tarefa seja realizada e cada pessoa esteja vinculada a uma dada tarefa. Este problema é analisado uti- lizando grafos bipartidos, onde um conjunto de vértices está associado às pessoas enquanto que o outro conjunto está associado às tarefas. Existem arestas apenas entre vértices de diferentes conjuntos, já que o emparelha- mento deve ser constitúıdo por elementos de conjuntos diferentes. Quando um grafo bipartido possui aresta entre qualquer par de vértices de conjuntos distintos ele é chamado de grafo bipartido completo ou biclique,Grafo Bipartido Completo Biclique sendo denotado por Kr,s , onde r e s são os tamanhos dos dois particiona- mentos. O termo biclique é curioso e não é facilmente identificado olhando diretamente para o grafo, porém calculando K̄r,s, observaremos que os dois conjuntos independentes serão ambos cliques. As Figuras 4.5(a) e (b) ilus- tram um grafo 3-partido completo K3,3,3 e um biclique K3,3 respectivamente. Em ambos os casos, temos um particionamento do conjunto de vértices, onde cada partição é um conjunto independente. O seguinte Teorema permite verificar rapidamente se um grafo é ou não bipartido. Teorema 4.1. Um grafo G é bipartido se e somente se ele não possui ciclos de comprimento ı́mpar. A definição de d́ıgrafo k-partido é similar ao exposto anteriormente paraDı́grafo k-partido grafos, com a diferença que estamos lidando com arcos ao invés de arestas.Portanto, a origem e destino de cada arco devem situar-se em partições dis- tintas. A relação entre grafos e d́ıgrafos k-partidos é a seguinte. Um d́ıgrafo D é k-partido se e somente se seu grafo simples subjacente G é k-partido. Um This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.3 Cobertura de Vértices 81 (a) (b) Figura 4.6: Exemplos de (a) d́ıgrafo 3-partido e (b) d́ıgrafo 3-partido com- pleto. d́ıgrafo é k-partido completo se para cada par de vértices v ∈ Vi e u ∈ Vj, com Dı́grafo k-partido Completo i 6= j, existe pelo menos um arco entre u e v [9]. Ele usa a mesma notação empregada em grafos, i.e., Kn1,n2,...,nk , onde cada ni = |Vi|. A Figura 4.6 ilustra (a) um d́ıgrafo 3-partido, onde os vértices de uma mesma partição possuem mesma cor. Enquanto que (b) é um d́ıgrafo 3-partido completo, K3,1,1 pois existe pelo menos um arco entre cada par de vértices oriundos de partições diferentes. O que difere entre os d́ıgrafos em (a) e em (b), é que em (a) estão faltando alguns arcos entre vértices de partições distintas, por exemplo, falta um arco entre o vértice preto mais à direita e o vértice cinza. Um d́ıgrafo D = (V,A) é d́ıgrafo bipartido direcionado se o grafo subjacente Dı́grafo Bipar- tido Direcionadoé bipartido com partições V1 e V2, tal que para cada arco (u, v) ∈ A, u ∈ V1 e v ∈ V2, ou seja, u é uma fonte e v é um sumidouro. A adaptação do Teorema 4.1 para d́ıgrafos é a seguinte Teorema 4.2. Um d́ıgrafo fortemente conexo D é bipartido se e somente se ele não possui ćıclos direcionados de comprimento ı́mpar. 4.3 Cobertura de Vértices Este relacionamento V −A lida simultaneamente com vértices e arestas. Ele é chamado cobertura de vértices e está intimamente associado aos conceitos anteriores. Dizemos que um vértice cobre uma aresta quando ele é uma de This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 82 Relacionamentos V-A suas extremidades. Dado um grafo G = (V,A), sabemos que V cobre todas as arestas no conjunto A, porém o que é de interesse prático é saber o menor número de vértices que conseguem cobrir todas as arestas. Uma cobertura de vértices de um grafo G é um subconjunto S dos vérticesCobertura Mini- mal de G, S ⊆ V , que cobrem todas as arestas de G, i.e., todas as arestas são inci- dentes a pelo menos um vértice de S. De forma similar, ao apresentado ante- riormente, buscamos as coberturas minimais de vértices, ou seja, coberturasCobertura Mı́nima de vértices que não possuem subconjunto próprio que seja uma cobertura de vértices. A menor cobertura de vértices é chamada cobertura mı́nima de vértices e sua cardinalidade define o número de cobertura de vértices, β(G).Número de Cobertura de Vértices O relacionamento entre cobertura de vértices e conjunto independente é direta. Considere o conjunto independente maximal I ⊆ V . Todos os vértices em v ∈ V − I são adjacentes a pelo menos um vértice em I, pois se existe um vértice v que não é adjacente a outro em I, então o conjunto I não é maximal. Portanto podemos pensar que cada aresta de G possui uma extremidade em V − I e outra em I. Porém algumas arestas são incidentes a vértices apenas do conjunto V − I. Logo, os vértices em I não cobrem todas as arestas de G, porém os vértices em V − I cobrem. Este fato dá origem ao seguinte Teorema. Teorema 4.3. Dado um grafo G = (V,A), um conjunto S ⊆ V é um con- junto independente maximal de G se e somente se V − S é uma cobertura minimal de vértices. Este Teorema nos leva ao seguinte corolário Corolário 4.1. Dado um grafo G = (V,A), β(G) = |V | − α(G) A Figura 4.7 mostra um grafo roda W5 = (V,A) e exemplos de conjuntos independentes maximais e coberturas de vértices. O conjunto I1 formado apenas pelo vértice f , destacado em cinza, é um conjunto independente ma- ximal de tamanho |I1| = 1, enquanto que V − I1 é uma cobertura de vértices de tamanho |V − I1| = 5. Por outro lado, os vértices b e e, destacados em branco, correspondem a um conjunto independente maximal I2 de tamanho |I2| = 2, enquanto que V − I2 é uma cobertura de vértices de tamanho |V −I2| = 4. O conjunto I2 é um exemplo de conjunto independente máximo e consequentemente V −I2 é uma cobertura mı́nima de vértices. Observe que This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.3 Cobertura de Vértices 83 os vértices em I2 são adjacentes a todos os demais vértices do grafo, porém eles não correspondem a uma cobertura, já que as arestas que unem vértices do conjunto V − I2, como a aresta {d, c}, não são cobertas pelos vértices em I2. Figura 4.7: Exemplos de Conjunto Independente e Cobertura de Vértices. O cálculo da cobertura mı́nima tem várias aplicações práticas. Por exem- plo, imagine que queiramos descobrir a quantidade mı́nima de guardas que devemos colocar no cruzamento de ruas em uma rede de estradas de forma que cada estrada seja vigiada por pelo menos um guarda. A rede seria re- presentada por um grafo, tendo como vértices os cruzamentos entre as ruas e como arestas as ruas. Um guarda em um cruzamento seria capaz de monito- rar as ruas que interceptam o cruzamento. A quantidade de guardas afetam diretamente o custo da solução, por isso, a quantidade mı́nima é o foco prin- cipal do problema. Caso contrário, podeŕıamos pensar em associar à cada cruzamento um guarda. Esta solução é direta, porém é a que causa maior impacto financeiro. Outro exemplo é o problema para determinar o menor número de câmeras a serem utilizadas em um ambiente estruturado de forma a inspecioná-lo completamente. O ambiente seria representado pelo grafo e os vértices estariam associados às regiões de monitoramento. Similarmente, queremos a solução de menor custo. Em ambos os exemplos, buscamos mi- nimizar uma função de custo, que é representada ou pelo número de câmeras ou pelo número de guardas, portanto, estes problemas são de minimização. Para um d́ıgrafo, a definição de cobertura mı́nima é a mesma da usada This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 84 Relacionamentos V-A para um grafo, porém todos os cálculos são realizados utilizando seu grafo subjacente. Notem que nesta definição a orientação dos arcos está sendo totalmente desconsiderada, pois o que importa é saber a menor quantidade de vértices que cobrem todos os arcos. Em geral, esta definição de cobertura de vértices, para d́ıgrafos tem pouca importância prática, já que caracteŕısticas importantes sobre d́ıgrafos estão sendo desconsideradas. Para contornar este problema, Ferro e Ferrarello [10] definem os conceitos cobertura de fonte e cobertura de sumidouro. Dado um digrafo D = (V,A),Cobertura de Fonte Cobertura de Sumidouro uma cobertura de fonte para D é um conjunto de vértices S ⊆ V , tal que cada arco em D parte de algum vértice em S, i.e., para cada vértice v ∈ S existe pelo menos um arco a = (v, u) ∈ A. De forma análoga, uma cobertura de sumidouro para D é um conjunto de vértices S ⊆ V , tal que para cada u ∈ S existe pelo menos um arco a = (v, u) ∈ A. Como buscamos sempre conjuntos mı́nimais, temos que considerar a menor cobertura de fonte(ou de sumidouro) que não está contida propriamente em outra cobertura de fonte(ou de sumi- douro). A partir dáı definimos para um d́ıgrafo D, o número de cobertura de fonte, β+(D) e o número de número de cobertura de sumidouro, β−(D). ONúmero de Co- bertura de Fonte Número de Co- bertura de Su- midouro primeiro está associado ao tamanho da cobertura mı́nima de fonte, ou seja, à menor cobertura de fonte, enquanto que o segundo está associado ao ta- manho da cobertura mı́nima de sumidouro.Considerando S e S ′ coberturas de fonte e sumidouro respectivamente para um d́ıgrafo D, se S ∩ S ′ = ∅, com S 6= ∅ e S ′ 6= ∅, então D é um d́ıgrafo bipartido direcionado, conformeDı́grafo Bipar- tido Direcionado discutido na Seção 4.2. Problemas de cobertura de vértices, fonte e sumidouro em d́ıgrafos, resi- dem em problemas de contagem. Por exemplo, a partir de um d́ıgrafo quantos ciclos direcionados de um dado comprimento são necessários para cobrir to- dos os vértices[11] ou a quantidade de maneiras que i caminhos direcionados podem cobrir todos os vértices do d́ıgrafo[12]. Um problema similar ao de cobertura de vértices, independente se é em grafos ou não, é ao invés de focar nas arestas/arcos para serem cobertos focar nos vértices. Isto dá origem ao conceito de conjunto dominante que será apresentado na próxima seção. 4.4 Conjunto Dominante Este relacionamento V −A é um relacionamento vértice-vértice similar àquele definido pela cobertura de vértices, porém com um foco sutilmente diferente. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.4 Conjunto Dominante 85 Uma cobertura de vértice é um subconjunto de vértice que cobrem todas as arestas de um grafo. Por sua vez, um conjunto dominante é também um subconjunto de vértices, porém, com a diferença de que estes vértices devem cobrir (ou dominar) todos os vértices do grafo que não participam do con- junto. A dominância entre vértices em um grafo é definida pela relação de Relação de Do- minância em Grafos adjacência entre eles. Se um vértice v é adjacente a outro vértice u, então v, além de dominar a si próprio, também domina u e vice-versa. Portanto, dizemos que v domina a si próprio e seus vizinhos, τ(v). De forma análoga ao apresentado na seção anterior, os problemas associados aos conjuntos do- minantes objetivam encontrar sempre os conjuntos dominantes minimais e mı́nimos. Formalmente um conjunto dominante S para um grafo G = (V,A) é um subconjunto de vértices S ⊆ V , tal que todo vértice v ∈ V − S é dominado por pelo menos um vértice de S, i.e., τ(v)∩S 6= ∅, ∀v ∈ (V −S). A Figura 4.8 ilustra dois conjuntos dominantes minimais, através dos vértices brancos e cinzas, para um grafo G. O tamanho do menor conjunto define o número de dominância de um grafo G, o qual é denotado por γ(G). Portanto, os Número de Do- minânciavértices em cinza compõe o conjunto dominante mı́nimo e definem o número de dominância γ(G) = 3. Figura 4.8: Exemplos de Conjuntos Dominantes. Como é posśıvel observar neste exemplo, todos os vértices que não partici- pam do conjunto dominante são dominados por pelo menos um vértice deste conjunto. Por exemplo, considerando o conjunto dominante S = {e, c, i}, cada vértice em V − S = {a, b, d, f, g, h, j} possui um vizinho em S. Como o conjunto dominante foca nos vértices, podem existir arestas descobertas, This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 86 Relacionamentos V-A como as arestas {a, g} e {b, h}. Os números de dominância e de cobertura de vértices possuem a seguinte relação γ(G) ≤ β(G) para qualquer grafo G que não possua vértices isolados. Neste caso, qualquer cobertura é um conjunto dominante que pode ou não ser minimal. As Figuras 4.9(a) e (b) mostram uma cobertura de vértices e um conjunto dominante, respectivamente, destacados pelos vértices em cinza. Notem que o conjunto dominante é um subconjunto próprio da cobertura de vértices, logo γ < β. Em grafos estrelas Sn, γ = β, pois apenas o vértice central é necessário para cobrir todos os vértices do grafo e todas as arestas. A diferença entre os tamanhos da cobertura de vértices e do conjunto de dominante por variar bastante. Por exemplo, para um grafo completo Kn, temos γ(Kn) = 1 e β(Kn) = n− 1. (a) (b) Figura 4.9: Exemplos de Conjuntos Dominantes. Em um d́ıgrafo, a relação de dominância é definida pela orientação de cada arco. Em um arco (v, u), dizemos que o vértice v domina o vértice u e u é dominado por v. Notem que esta relação não é necessariamenteRelação de Do- minância em Dı́grafos simétrica, diferente da dominância em grafos, onde em uma aresta qualquer, um vértice domina o outro e (vice-versa). Devido a isso temos os conceitos de dominância de sáıda e dominância de entrada [13]. Dado um d́ıgrafo D = (V,A), um conjunto dominante de entrada S é umConjunto Do- minante de Entrada subconjunto de vértices S ⊆ V , tal que todo vértice v ∈ V − S domina pelo menos um vértice de S, i.e., τ+(v) ∩ S 6= ∅, ∀v ∈ (V − S). Enquanto que, um conjunto dominante de sáıda S é um subconjunto de vértices S ⊆ V , talConjunto Domi- nante de Sáıda que todo vértice v ∈ V −S é dominado por pelo menos um vértice de S, i.e., τ−(v) ∩ S 6= ∅, ∀v ∈ (V − S). Os tamanhos do menor conjunto dominante de entrada e do menor conjunto dominante de sáıda de um d́ıgrafo D são This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.4 Conjunto Dominante 87 chamados de números de dominância de entrada e de sáıda, respectivamente, Números de Do- minância de En- trada e de Sáıda e denotados por γ−(D) e γ+(D). A partir da idéia de dominância, um vértice v ∈ V de D é k-rei se todos os vértices puderem ser alcançados a partir de v por um caminho de comprimento no máximo k. Se k = 1, v domina todos os vértices. A Figura 4.10 ilustra um d́ıgrafo D = (V,A) e dois conjuntos dominantes minimais de entrada. Os vértices em cinza compõem o conjunto D1 = {b, c} e os vértices em branco compõem o conjunto dominante D2 = {a, d, f}. Todos os vértices que não estão no conjunto D1(ou D2) dominam pelo menos um vértice do conjunto D1(ou D2). Por exemplo, considerando o conjunto D1, o vértice b é dominado pelos vértices a, c, d e f . Enquanto que o vértice c é dominado pelos vértices a, b e e. Notem que os vértices que V −D1 = {a, d, e, f} dominam pelo menos um vértice de D1. Em relação ao conjunto D2, todos os vértices em V − D2 = {b, c, e} dominam pelo menos um vértice em D2 = {a, d, f}. A partir de um conjunto dominante de entrada podemos extrair um con- junto dominante de sáıda, porém este pode não ser minimal. Por exemplo, V −D1 = {a, d, e, f} é um conjunto dominante de sáıda porém não é mini- mal, já que ele possui um subconjunto próprio {a, e} que é dominante. O mesmo acontece com o conjunto V − D2 = {b, c, e} que possui um subcon- junto próprio formado pelos vértices c e e que é minimal. A obtenção de um conjunto não minimal não é o único problema. É posśıvel que em al- guns casos, um conjunto dominante de sáıda fique de fora do resultado. Esta situação será ilustrada na Seção 5.3.4. Os vértices c e e são vértices 2-rei. Uma variação destas relações de dominância para d́ıgrafos foi proposta por Chartrand[14]. Ela é chamada relação de dominância gêmea, e é definida Relação de Do- minância Gêmeacomo segue. Dado um d́ıgrafo D = (V,A), um conjunto dominante gêmeo S é Conjunto Domi- nante Gêmeo um subconjunto de vértices S ⊆ V , tal que todo par de vértices u, v ∈ S(onde u pode ou não ser igual a v), existem dois arcos (u,w), (w, v) ∈ A para todo w ∈ V − S. Ou seja, todo vértice em V − S domina e é dominado por vértices do conjunto S. Notem que esta dominância é uma combinação das dominâncias de entrada e a de sáıda. O tamanho do menor conjunto dominante gêmeo de entrada de um d́ıgrafo D é chamado de número de dominância gêmea, sendo denotado por γ∗(D). A relação entre a dominância Números de Do- minância Gêmeagêmea e as outras dominâncias é dada por max{γ+(D), γ−(D)} ≤ γ∗(D) ≤ γ+(D) + γ−(D) A dominância gêmea é fortemente motivada por aplicações em redes de This work is licensedunder CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 88 Relacionamentos V-A Figura 4.10: Exemplos de Conjuntos Dominantes de Entrada. computadores. Como exemplo, considere que cada vértice no conjunto domi- nante S esteja associado a um servidor que forneça serviços espećıficos para outros computadores da rede. A comunicação entre os vértices fora e dentro do conjunto dominante é bidirecional, i.e., existindo a dominância gêmea, pois, dados u e w, onde u ∈ S e w ∈ V − S, temos os arcos (u,w) e (w, u) que denotam a direção da comunicação entre u e w. Como um servidor em geral é muito caro, objetiva-se encontrar o menor número de servidores que atendam todos os computadores da rede, ou seja, minimizar o tamanho do conjunto dominante gêmeo. Ainda considerando o d́ıgrafo D ilustrado na Figura 4.10, um exemplo de conjunto dominante gêmeo minimal é o conjunto S = {b, c, d}. Observem que os vértices em V −S = {a, e, f} dominam e são dominados pelos vértices do conjunto S. Por exemplo, os vértices a e e dominam e são dominados pelo vértice c; enquanto que o vértice f domina o vértice b e é dominado pelo vértice d, que participam de S. Para este d́ıgrafo γ∗(D) = 3. 4.5 Emparelhamento Outro relacionamento V-A importante é o emparelhamento1, também cha- mado de acoplamento ou casamento. Ele é um relacionamento aresta-arestaAcoplamento Casamento 1Emparelhamento é a tradução do inglês da palavra Matching. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.5 Emparelhamento 89 similar ao relacionamento vértice-vértice definido através dos conjuntos in- dependentes. Ele considera a adjacência entre as arestas2 e visa encontrar o maior conjunto de arestas não adjacentes entre si. Portanto, um emparelha- mento M em um grafo G = (V,A) é um subconjunto de arestas, M ⊆ A, que não correspondem a laços e que não compartilham vértices entre si. Portanto duas arestas ai, aj ∈ A, onde ai = {vi, ui} e aj = {vj, uj} e i 6= j, pertencem ao emparelhamento M , se vi 6= vj 6= ui 6= uj. Esta mesma definição serve para d́ıgrafos porém consideramos arcos e não arestas. De forma análoga aos Emparelhamentos em Dı́grafosrelacionamentos anteriores, temos interesse em saber os emparelhamentos maximais e máximo, ou seja, nos emparelhamentos que não são subcon- Emparelhamento Máximojuntos próprios de outros emparelhamento e nos maiores emparelhamentos existentes. O tamanho de um emparelhamento M é definido pela quantidade de arestas e representado por |M |, e o tamanho do maior emparelhamento de um grafo G é denotado por α′(G). Quando uma aresta de M é incidente a um vértice v ∈ V , então dizemos que v é saturado por M . Quando o emparelhamento satura todos os vértices Vértice Saturadodo grafo, então dizemos que o emparelhamento é perfeito. A Figura 4.11(a) mostra um exemplo de emparelhamento maximal de tamanho 2 em um grafo W5. Todas as arestas do grafo compartilham vértices com as arestas do emparelhamento, porém este emparelhamento não é perfeito pois existem Emparelhamento Perfeitovértices que não são saturados, como os vértices b e d. A Figura 4.11(b) mostra um emparelhamento máximo de tamanho α′(G) = 3 que satura todos os vértices. Na Seção 1.7.1, apresentamos um exemplo de emparelhamento envol- vendo um conjunto de pessoas e um conjunto de tarefas. As arestas mais grossas destacadas na Figura 1.15(b) compõem um posśıvel emparelhamento do grafo mostrado em (a). Notem que ele é perfeito pois todos os vértices estão saturados, i.e., as arestas são incidentes a todos os vértices do grafo. Este emparelhamento é máximo de tamanho igual a α′(G) = 4. Existem outros emparelhamentos posśıveis, como os mostrados nas Figuras 4.12(a) e (b) através de arestas mais grossas. O que diferencia um emparelhamento do outro, neste problema, é a soma dos tempos associados às suas arestas. Portanto cada emparelhamento tem uma soma que pode ou não ser diferente da soma dos outros emparelhamentos. Como buscamos aquele com a menor soma posśıvel, este problema em particular pode ser visto com um problema de minimização. 2Duas arestas são adjacentes se compartilham vértices. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 90 Relacionamentos V-A (a) (b) Figura 4.11: Exemplos de emparelhamentos de um grafo W5. Um ponto importante é como saber se um emparelhamento é maximal ou máximo. Ele é maximal se não for posśıvel adicionar mais arestas deEmparelhamento Máximo × Em- parelhamento Perfeito forma a garantir que as arestas não compartilham vértices. Portanto, apenas o conjunto formado pela aresta {t1, e4} na Figura 4.12(a) não representa um emparelhamento maximal, já que é posśıvel adicionar a aresta {t2, e1} neste conjunto. Para saber se o emparelhamento é máximo, podemos inicialmente verificar se ele é perfeito. Se for então o emparelhamento é máximo, caso contrário temos que verificar a existência de caminhos de aumento. Por exemplo, nas Figuras 4.12 (a) e (b) os emparelhamentos são perfeitos, logo são máximos. Antes de definirmos um caminho de aumento, precisamos definir o con- ceito de caminho alternante. Um caminho alternante em um emparelhamentoCaminho Alternante M é um caminho cujas arestas alternam entre aquelas que estão e aquelas que não estão em M . Por exemplo, o grafo 4.11(a) possui vários caminhos alter- nantes como p1 = {d, {d, e}, e, {e, a}, a, {a, b}, b} e p2 = {b, {b, c}, c, {c, f}, f, {f, e}, e, {e, a}, a}. Notem que tanto em p1 quanto em p2, as arestas do caminho alternam entre aquelas que estão e aquelas que não estão em M . Quando as extremidades de um caminho alternante não são saturadas, então ele é chamado caminho de aumento. Por exemplo, as extremidades d e b doCaminho de Aumento caminho p1 não são saturadas. Logo, temos um caminho de aumento. Quando um emparelhamento possui um caminho de aumento P , basta This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.5 Emparelhamento 91 (a) (b) Figura 4.12: Exemplos de Emparelhamentos Perfeito. substituir em M as arestas de P que estão pelas que não estão em M . Isto irá aumentar em uma unidade o tamanho de M . Se M não possuir mais caminhos de aumento então M é máximo. Usando esta estratégia, a partir do caminho p1, obtemos o emparelhamento ilustrado na Figura 4.13 de tamanho 3, enquanto que com a presença do caminho de aumento p1 o emparelhamento tinha tamanho 2. A relação entre caminho de aumento e emparelhamento máximo foi mostrada por Berge, em 1957 através do seguinte Teorema. Teorema 4.4 ([15]). Um emparelhamento M em um grafo G é máximo se e somente se M não possui caminhos de aumento. Em problemas de emparelhamento envolvendo grafos bipartidos, podemos ter situações onde os conjuntos independentes têm tamanhos diferentes. Por exemplo, no caso ilustrado na Seção 1.7.1 o conjunto de tarefas e de pessoas possuem o mesmo tamanho, porém podemos ter casos, onde o número de tarefas é muito maior que de pessoas. Nesta situação o que nos interessa saber é se todo emparelhamento maximal nesta instância do problema irá associar todas as pessoas a alguma tarefa, i.e., se os vértices associados às pessoas serão saturados. Para responder a este problema, Hall em 1935 provou o seguinte Teorema. Teorema 4.5 ([16]). Um grafo bipartido, com dois conjuntos independentes This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 92 Relacionamentos V-A Figura 4.13: Emparelhamento Máximo X e Y , tem um emparelhamento que satura X se e somente se para todo S ⊆ X, |Γ(S)| ≥ |S|. Quando |X| = |Y |, este teorema é chamadoTeorema de Casamento (Mar- riage Theorem). Existe um relacionamento interessante entre cobertura de vértices e em- parelhamento. Como foi visto anteriormente, uma cobertura de vértices é um conjunto de vértices que cobre todas as arestas do grafo, i.e., as arestas do grafo possuem pelo menos uma das extremidades na cobertura, enquanto que um emparelhamento consiste em um conjunto de arestas que não com- partilham vértices3 e que são adjacentes a todas as arestas do grafo. Como as arestas no emparelhamento são adjacentes a todas as arestas do grafo, então podemos imaginar que a cobertura pode ser constrúıda selecionando pelo menos um vértice de cada aresta. Isso nos leva a concluir que o tamanho de qualquer cobertura de vértices de um grafo G é no mı́nimo o tamanho do menor emparelhamento maximal de G. Para grafos bipartidos existe uma prova matemática, que mostra que obtendo um emparelhamento e uma co- bertura de vértices de mesmo tamanho, então tem-se um resultado ótimo para cada um deles. Esta prova segue os prinćıpios da relação min-max. Uma relação min-max prova que quando temos dois problemas duais sobre a mesma classe de instâncias(neste caso, grafos), a igualdade de resultados 3Notem que nenhum vértice pode cobrir duas arestas de um emparelhamento, já que nesse caso as arestas seriam adjacentes This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.5 Emparelhamento 93 destes problemas prova que ambos são ótimos para a instância analisada. Neste caso, os problemas tratados são o de maximização, associado ao empa- relhamento, e o de minimização, associado à cobertura de vértices. Portanto, se dado um grafo obtivermos como resultado o mesmo valor para ambos os problemas, então o que temos é um resultado ótimo. As Figuras 4.12(a) e (b) mostram a aplicação deste Teorema. Observe que o tamanho do empa- relhamento máximo é igual ao de cobertura mı́nima para ambos os grafos. Logo, os resultados são ótimos. Isto nos leva à relação min-max definida pelo Teorema 4.6, chamado König-Egervary. Teorema 4.6 ([17]). Se G é um grafo bipartido, então o tamanho do empare- lhamento máximo de G é igual ao tamanho da cobertura mı́nima de vértices de G, i.e., α′(G) = β(G). As Figuras 4.14(a) e (b) mostram o emparelhamento através de arestas grossas e a cobertura de vértices através dos vértices cinza. Cada vértice da cobertura foi escolhido a partir das arestas do emparelhamento. Note que neste exemplo, qualquer uma das coberturas terá dois vértices de pelo menos uma aresta do emparelhamento. Em ambos os casos a cobertura tem tamanho igual a 4 que é igual ao β(W5) = 4, discutido através do exemplo da Figura 4.7 (a) (b) Figura 4.14: Emparelhamento e Cobertura This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 94 Relacionamentos V-A Os conceitos de conjunto independente e de emparelhamento possuem uma relação interessante. O primeiro é um conjunto maximal(ou máximo) de vértice que não são adjacentes entre si, enquanto que o último corres- ponde a um conjunto maximal(ou máximo) de arestas que não compartilham vértices, ou seja, não são adjacentes entre si. O fato de um lidar com vértices e o outro com arestas faz com que ambos consigam usar o mesmo método de enumeração. Por exemplo, o método que lista os conjuntos independentes maximais em um grafo G é o mesmo método que lista os emparelhamentos maximais de G, porém neste último recebe como entrada L(G), que cor- responde ao grafo linha de G, ao invés de G. Na Seção 2.2.10 mostramos que qualquer grafo G possui um grafo linha correspondente L(G), onde as arestas de G são mapeadas para vértices em L(G). Portanto, um conjunto independente em L(G) está associado a um conjunto de arestas em G que não são adjacentes. Isto nos leva a α′(G) = α(L(G)), i.e., o tamanho do emparelhamento máximo em G é igual a tamanho do conjunto independente máximo em L(G). Usaremos este prinćıpio na Seção 5.2.4 para enumerarmos os emparelhamentos maximais de grafos. 4.6 Exerćıcios Exerćıcio 4.1. Mostre que um grafo completo Kn pode ser expresso como a união de k grafos bipartidos sse n ≤ 2k Exerćıcio 4.2. Mostre que o grafo de Petersen não é um grafo bipartido, e determine seu número de independência e seu número de clique. Exerćıcio 4.3. Mostre que qualquer grafo k-cubo é um grafo bipartido. Exerćıcio 4.4. Mostre que α(G) ≥ |V | ∆(G)+1 para qualquer grafo G. Exerćıcio 4.5. Mostre que qualquer árvore T tem no máximo um empare- lhamento que é perfeito. Exerćıcio 4.6. Encontre a menor árvore onde o número de dominância e o número de cobertura de vértices seja diferente. Exerćıcio 4.7. Determine o número de dominância de um grafo Cn Exerćıcio 4.8. Prove que se o diamêtro de um grafo G é no mı́nimo igual a 3, então o número de dominância do complemento de G será menor ou igual a 2. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 4.6 Exerćıcios 95 Exerćıcio 4.9. Mostre que qualquer grafo G = (V,A) k-regular, tem um conjunto dominante com no mı́nimo |V |/(k + 1) vértices. Exerćıcio 4.10. Determine quantos emparelhamentos perfeitos um biclique Kr,s possui. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 96 Relacionamentos V-A This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Caṕıtulo 5 Enumeração Neste caṕıtulo apresentamos o método de Maghout que é utilizado para cal- Método de Maghoutcular os relacionamentos V-A discutidos no caṕıtulo anterior. Este método usa as leis da álgebra booleana para encontrar os conjuntos minimais e ma- ximais do problema de interesse o qual pode ter sido modelado usando tanto grafos quanto d́ıgrafos. O método explora as inter-relações existentes entre os relacionamentos V-A para a obtenção do resultado desejado. Por exemplo, sabemos que um conjunto independente maximal em um grafo G é um clique em Ḡ. Portanto, o mesmo método pode ser utilizado tanto para enumerar os cliques maximais quanto os conjuntos independentes de um grafo G. O que difere é o grafo fornecido como entrada para o método que pode ser o próprio G ou Ḡ. 5.1 Método de Maghout Para facilitar a compreensão, focaremos inicialmente no problema de cober- tura minimal de vértices. A obtenção dos conjuntos independentes maximais e cliques é direta, tendo sido discutida anteriormente nas respectivas seções. Todavia, o cálculo dos conjuntos dominantes e dos emparelhamentos, exige uma pequena modificação do método a qual discutiremos oportunamente nas seções subsequentes. Considere um grafo simples G = (V,A) composto pelos seguintes conjun- tos de vértices V = {v1, v2, v3} e de arestas A = {{v1, v2}, {v2, v3}}. Como queremos saber as coberturas minimais de vértices deste grafo, então deve- mos selecionar para cada aresta uma de suas extremidades. Neste caso, para This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 98 Enumeração a aresta a1 = {v1, v2}, podemos escolher ou o vértice v1 ou o vértice v2, e para a aresta a2 = {v2, v3}, a escolha pode ser feita entre os vértices v2 e v3. Notem que no nosso exemplo, existem apenas duas coberturas minimais posśıveis: {v2} e {v1, v3}. A escolha do vértice que irá cobrir cada aresta pode ser modelada pelo operador lógico ou. Considerando v̇i a variável lógica associada ao vértice vi, podemos associar as seguintes somas lógicas às arestas a1 e a2, respectiva- mente (v̇1 + v̇2) e (v̇2 + v̇3) O produto destas duas somas (v̇1 + v̇2).(v̇2 + v̇3) combinatodas as possi- bilidades existente de escolha de vértices, onde . representa o operador lógico e. Portanto realizando este produto encontramos, v̇1.v̇2 + v̇1.v̇3 + v̇2.v̇2 + v̇2.v̇3 Cada um destes termos é uma posśıvel cobertura. Por exemplo, o termo v̇1.v̇2 está associado aos vértices v1 e v2 e representa uma cobertura, porém que não é minimal. Por outro lado, o termo v̇1.v̇3 contém uma cobertura minimal definida pelos vértices v1 e v3. A importância da álgebra booleana aparece neste momento. O termo v̇2.v̇2 possui uma referência repetida ao vértice v2. Isto indica que v2 é extremidade de ambas as arestas. Para eliminar esta repetição aplicamos a lei da idempotência1 no termo v̇2.v̇2 que leva ao termo v̇2. Logo, o novo resultado intermediário é v̇1.v̇3 + v̇1.v̇2 + v̇2 + v̇2.v̇3 O termo v̇2 já representa nossa primeira cobertura de vértices. Todavia, existem as coberturas v̇1.v̇2 e v̇2.v̇3 que não são minimais e que devem ser eliminadas do resultado final. Para eliminar estas coberturas utilizamos a lei da absorção2 nos três últimos termos do resultado anterior encontrando v̇1.v̇3 + v̇2 Logo, para o primeiro termo temos a seguinte cobertura {v1, v3} e para o segundo termo temos a cobertura {v2}. A obtenção do conjunto inde- pendente é direta, pois sabemos que se V é o conjunto de vértices e C é a 1A lei da idempotência diz que p ∧ p ⇔ p e que p ∨ p ⇔ p para qualquer proposição lógica p. 2A lei da absorção diz que p∨(p∧q)⇔ p e que p∧(p∨q)⇔ p para quaisquer proposições lógicas p e q. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.1 Método de Maghout 99 cobertura, o conjunto independente associado à C é igual a I = V −C. Logo, o conjunto independente associado ao primeiro termo é {v2} e ao segundo termo é {v1, v3}. Casualmente os conjuntos independentes e as coberturas são iguais ao resultado encontrado anteriormente, porém invertidos. Vale ressaltar que isto não é uma regra. A versão geral deste processo é definida da seguinte maneira. Se G = (V,A) é um pseudografo ou multigrafo, devemos considerar seu grafo simples subjacente. Para cada vértice v ∈ V , é criada uma variável lógica v̇ e para cada aresta a = {vi, vj} ∈ A é criada a seguinte soma lógica (v̇i + v̇j) a partir das variáveis lógicas associadas aos vértices da aresta. Usando o produto de variáveis lógicas definido por n∧ i=m v̇i = v̇m.v̇m+1. . . . .v̇n−1.v̇n calculamos ∧ (vi,vj)∈A (v̇i + v̇j) (5.1) Lembrando que as operações . e + correspondem às operações lógicas e e ou, respectivamente. Esta expressão possuirá vários produtos do seguinte tipo (v̇i + v̇j).(v̇k + v̇m), que através da lei da distributividade 3 da operação e, se tornará v̇i.v̇k + v̇i.v̇m + v̇j.v̇k + v̇j.v̇m, ou simplesmente, v̇iv̇k + v̇iv̇m + v̇j v̇k + v̇j v̇m, para facilitar a visualização. Quando um vértice vi for adjacente a vários vértices, ele participará de várias somas lógicas neste produto. Sem perda de generalidade, considere os vértices ordenados w1, w2,. . . , wm que correspondem aos m vizinhos 4 de vi, i.e., wi ∈ τ(vi). Focando apenas em vi e sua vizinhança teremos o seguinte produto lógico m∧ j=1 (v̇i + ẇj) = v̇i + m∧ j=1 ẇj (5.2) Em algumas situações, teremos várias variáveis lógicas participando de diversas somas ao invés de apenas uma. Este é o caso do cálculo dos conjuntos 3A lei da distributividade diz que p ∨ (r ∧ q) ⇔ (p ∨ r) ∧ (p ∨ q) e que p ∧ (r ∨ q) ⇔ (p ∧ r) ∨ (p ∧ q) para quaisquer proposições lógicas p, r e q. 4A ordem é imposta apenas para facilitar a compreensão do processo, pois dois vértices consecutivos wi e wi+1 podem corresponder a dois vértices no grafo original vk e vl, com |k − l| > 1, i.e., com ı́ndices não consecutivos. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 100 Enumeração dominantes minimais como veremos na Seção 5.2.3. Neste caso, teremos o seguinte produto lógico k∧ j=1 (Ṡ + Ṙj) = Ṡ + k∧ j=1 Ṙj (5.3) onde Ṡ = s∑ i=1 ṡi e Ṙj = rj∑ l=1 ṙj,l e k é a quantidade de termos que possuem em comum a soma lógica Ṡ constitúıda das variáveis lógicas ṡi, com 1 ≤ i ≤ s. Enquanto que o termo Ṙj representa a soma das variáveis restantes no j-ésimo termo composta pelas variáveis ṙj,l, com 1 ≤ l ≤ rj, onde rj representa a quantidade de variáveis que não participam de Ṡ no j-ésimo termo. Esta quantidade pode variar para cada termo, pois podemos encontrar termos distintos cujas somas restantes possuem tamanhos diferentes. A ordem imposta nos ı́ndices das variáveis constituintes de Ṡ e Ṙj visa apenas facilitar a compreensão do processo pois duas variáveis consecutivas, como por exemplo, ṡi e ṡi+1 podem corresponder a dois vértices no grafo original vk e vl com ı́ndices não consecutivos. Um caso particular deste produtório é o seguinte Ṡ k−1∧ j=1 (Ṡ + Ṙj) = Ṡ (5.4) onde Ṡ participa como sub-soma em vários termos e como um termo inte- gralmente. Após sucessivas aplicações das leis da álgebra booleana(distributividade, absorção, idempotência, etc.) no produtório da Equação 5.1, encontramos um somatório de termos, onde cada termo permite extrair as coberturas minimais de vértices. Considere o n-ésimo termo Pn = {p1, p2, p3, . . . , pl}, representado na forma de conjunto, onde pk é a k-ésima variável do termo. A cobertura de vértices minimal Cn associada ao conjunto Pn é formada por todos os vértices vj ∈ V , tal que a variável v̇j ∈ Pn, ou seja, a variável associada ao vértice vj aparece no termo. Formalmente, a cobertura Cn é definida como Cn = {v ∈ V | v̇ ∈ Pn} De forma similar ao ilustrado no exemplo no inicio desta seção, a obtenção do conjunto independente maximal é direta. Para cada cobertura Cn, o This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.2 Enumeração em Grafos 101 conjunto independente maximal In = V − Cn. Se consideramos novamente o n-ésimo termo Pn, o conjunto independente maximal é formado por todos os vértices vj ∈ V , tal que a variável v̇j /∈ Pn, ou seja, a variável associada ao vértice vj não aparece no termo. Formalmente In = {v ∈ V | v̇ /∈ Pn} Para sabermos se o resultado da simplificação não produziu conjuntos que não sejam maximais, temos que verificar se dados dois termos Pj e Pk, as variáveis de um termo aparecem completamente no outro termo. Se Pj ⊆ Pk, então Pk produzirá uma cobertura de vértices que não é minimal (vice-versa). Este prinćıpio pode ser utilizado durante a fase intermediária do processo para remover termos que sabidamente gerarão conjuntos independentes não maximais. Como a relação entre cliques e conjuntos independentes é direta. A obtenção dos cliques de um grafo G é feita obtendo os conjuntos indepen- dentes maximais em Ḡ. Como sabemos, o conjunto independente em G é um clique em Ḡ, e um clique em G é um conjunto independente em Ḡ. 5.2 Enumeração em Grafos Esta seção apresenta o uso do método de Maghout para o cálculo de cobertu- ras de vértices, conjuntos independentes, conjuntos dominantes e emparelha- mentos. Em todos os casos, selecionamos grafos e d́ıgrafos para exemplificar a aplicação do método. 5.2.1 Coberturas de Vértices e Conjuntos Independen- tes A partir da descrição anterior, vamos aplicar o método de Maghout no grafo G = (V,A)ilustrado na Figura 5.1. Os vértices a − e serão representados por A− E, respectivamente. Usando a Equação 5.1 encontramos o seguinte produto (A+B)(B +D)(B + C)(A+ E)(D + E)(D + C) (5.5) O desenvolvimento deste produto pode ser feito por partes começando pe- las variáveis que aparecem com mais freqüência nas somas, i.e., pela variável associada ao vértice com maior grau. Neste caso, temos os vértices b e d. Selecionamosum deles por exemplo, o vértice b, e focamos o desenvolvimento This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 102 Enumeração Figura 5.1: Grafo exemplo no produto das somas que contêm B, ou seja, em (A + B)(B + D)(B + C). Para facilitar as visualização das operações realizadas destacaremos os termos usados a cada passo, colocando os em negrito. (A+B)(B+D)(B+C)⇒ distributividade (AB+AD+BB+BD)(B+C)⇒ idempotência (AB+B+BD+AD)(B+C)⇒ absorção (B+AD)(B+C)⇒ distributividade (BB+BC+ABD+ACD)⇒ idempotência (B+BC+ABD+ACD)⇒ absorção (B+ACD) Notem que o resultado encontrado é o mesmo aplicando a Equação 5.2 em (A+B)(B+D)(B+C). Usando a Equação 5.2 no produto (A+E)(D+E) temos E +AD. Compondo os resultados e continuando o processo temos os seguintes passos This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.2 Enumeração em Grafos 103 (A+B)(B+D)(B+C)(A+E)(D+E)(D+C) ⇒ Equação 5.2 (B+ACD)(E+AD)(D+C)⇒ distributividade (BE+ABD+ACDE+ACD)(D+C)⇒ absorção (BE+ABD+ACD)(D+C)⇒ distributividade (BDE+ABDD+ACDD+BCE+ABCD+ACCD)⇒ idempotência (BDE+ABD+ACD+BCE+ABCD+ACD)⇒ absorção (BDE+ABD+ACD+BCE) Após esta simplificação, devemos verificar se ainda existe algum termos que pode ser absorvido por outro. Se isto não for posśıvel, então chegamos Coberturas Minimais de Vértices ao resultado final. Como temos quatro termos, o grafo possui as seguintes quatro coberturas minimais de vértices. C1 = {b, d, e}, C2 = {b, c, e}, C3 = {a, b, d}, C4 = {a, c, d} Logo, temos número de cobertura de vertices β(G) = 3. O conjunto indepen- Conjuntos Inde- pendentes Maxi- mais dente maximal In é obtido por In = V − Cn. Portanto, temos os seguintes conjuntos independentes maximais I1 = {a, c}, I2 = {a, d}, I3 = {c, e}, I4 = {b, e} e número de independência do grafo α(G) = 2. 5.2.2 Cliques A aplicação do método de Maghout para o cálculo de cliques é direta. Se queremos calcular os cliques de um grafo G, devemos encontrar os conjuntos independentes maximais presentes em Ḡ. Isto nos levará diretamente aos cli- ques em G. Portanto dado o grafo G ilustrado na Figura 5.1, primeiramente temos que calcular o complemento de G. O grafo Ḡ é ilustrado na Figura 5.2. Em seguida, é realizado o mesmo processo apresentado na seção anterior. A partir de Ḡ, realizamos as seguintes operações This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 104 Enumeração Figura 5.2: Complemento do grafo ilustrado na Figura 5.1 (A+D)(A+C)(C+E)(E+B) ⇒ Equação 5.2 (A+CD)(E+BC)⇒ distributividade AE+ABC+CDE+BCD Os termos encontrados correspondem às seguintes coberturas minimais de vértices {a, e}, {a, b, c}, {c, d, e}, {b, c, d} A partir destas coberturas encontramos os seguintes conjuntos indepen- dentes maximais em Ḡ, {b, c, d}, {d, e}, {a, b}, {a, e} que correspondem aos cliques maximais em G. Isto nos leva ao número de clique do grafo igual a ω(G) = 3. 5.2.3 Conjuntos dominantes O uso do método de Maghout para o cálculo dos conjuntos dominantes em grafos segue uma lógica muito similar àquela descrita na Seção 5.1. É impor- tante considerar que para o cálculo da cobertura de vértices, criamos uma soma lógica u̇ + v̇ para cada aresta {u, v}. Esta soma indica que podemos selecionar ou o vértice u ou o vértice v para compor a cobertura de vértices. Este mesmo processo de escolha será usado para o cálculos dos conjuntos dominantes maximais. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.2 Enumeração em Grafos 105 Dado o grafo G = (V,A), ilustrado na Figura 5.1, para cada vértice criaremos uma variável lógica. Neste caso, os vértices a− f estão associados às variáveis lógicas A − F , respectivamente. Em seguida, para cada vértice v criamos uma soma lógica contendo todas as variáveis dos vértices que são dominadas por v5. Por exemplo, para o vértice a, criamos a seguinte soma lógica (A+B + E) para o vértice b temos a seguinte soma (A + B + C + D), e assim por di- ante. Portanto para este grafo temos o seguinte produto destacando o vértice dominante embaixo da sua respectiva soma lógica. (A+B + E)︸ ︷︷ ︸ a (A+B + C +D)︸ ︷︷ ︸ b (B + C +D)︸ ︷︷ ︸ c (B + C +D + E)︸ ︷︷ ︸ d (A+D + E)︸ ︷︷ ︸ e Em seguida realizamos os seguintes passos (A+B+E)(A+B+C+D)(B+C+D)(B+C+D+E) (A+D+E) ⇒ Equação 5.3 (A+E+BD)(A+B+C+D)(B+C+D)(B+C+D+E) ⇒ Equação 5.4 (A+E+BD)(B+C+D) ⇒ distributividade AB+AC+AD+BE+CE+DE+BD+BCD+BD ⇒ absorção AB+AC+AD+BE+CE+DE+BD Cada termo encontrado representa um conjunto dominante minimal com- posto pelos vértices que têm suas variáveis lógicas presentes no termo. Por- tanto, a partir deste resultado temos os seguintes dominantes para G {a, b}, {a, c}, {a, d}, {b, e}, {c, e}, {d, e}, {b, d} os quais indicam que o número de dominância de G é igual a γ(G) = 2. 5Um vértice v domina um vértice u, se existe a aresta {v, u} no conjunto de arestas do grafo. Além disso, é importante considerar que v domina a si próprio. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 106 Enumeração 5.2.4 Emparelhamentos Na Seção 4.5, discutimos a relação entre emparelhamento maximal e conjunto independente maximal. Vimos que um emparelhamento maximal em um grafo G corresponde a um conjunto independente maximal no grafo linha L(G). Usando esta relação, aplicaremos o método de Maghout no grafo linha L(G) ao invés de utilizá-lo diretamente no grafo G original para enumerar todos os seus emparelhamentos maximais. Para facilitar a compreensão do método, reapresentamos o grafo G = (V,A) da Figura 4.13 na Figura 5.3(a), dando ênfase às suas arestas. A Fi- gura 5.3(b) mostra o grafo linha L(G) = (VL, AL) associado a G. As arestas de G possuem rótulos a−j que serão usados como rótulos dos vértices corres- pondentes em L(G). Dois vértices em L(G) são adjacentes se compartilham vértices em G. Por exemplo, as arestas a e b em G compartilham vértices, logo os vértices correspondentes são adjacentes em L(G), como podemos ver na Figura 5.3(b). Por outro lado, como as arestas a e c não compartilham vértices, seus vértices a, c ∈ VL correspondentes em L(G) não são adjacentes. (a) (b) Figura 5.3: Grafo Roda (a) W5 e seu grafo linha (b) L(W5) correspondente. De forma similar ao apresentado na seção anterior, a partir do grafo L(G), criaremos as variáveis lógicas A−J que estarão associadas aos vértices a − j, respectivamente. Em seguida, para cada aresta (u, v) ∈ AL criamos a seguinte soma lógica U + V e realizamos o produto das somas lógicas This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.2 Enumeração em Grafos 107 associadas às arestas de L(G). Este produto é ilustrado abaixo (A+B)(A+F )(A+J)(A+E)(B+F )(B+G)(B+C)(C+G)(C+H)(C+D) (D+H)(D+I)(D+E)(E+I)(E+J)(J+F )(J+G)(J+H)(J+I)(F+G)(F+H) (F + I)(G+H)(G+ I)(H + I)(I + J) Como este produto possui vários termos, iremos focar inicialmente apenas em algumas partes. Por exemplo, aplicando a Equação 5.2 nas somas que possuem em comum a variável F obtemos F + ABGHIJ Realizando o mesmo processo porém focando nos vértices G,H, I e J , encon- tramos G+BCHIJ, H +CDIJ, I +DEJ e J +AE respectivamente. O produto original se transforma em (A+B)(A+ E)(B + C)(C +D)(D + E)︸ ︷︷ ︸ P1 (F + ABGHIJ)(G+BCHIJ)(H + CDIJ)(I +DEJ)(J + AE)︸ ︷︷ ︸ P2 ou seja, P1.P2. Podemos simplificar P1, através dos seguintes passos (A+B)(A+E)(B+C)(C+D)(D+E)⇒ Equação 5.2 (A+BE)(B+C)(C+D)(D+E)⇒ Equação 5.2 (A+BE)(C+BD)(D+E) ⇒ distributividade (AC+ABD+BCE+BDE)(D+E) ⇒ distributividadeACD+ACE+ABD+ABDE+BCDE+ BCE BDE+BDE ⇒ absorção ACD+ACE+ABD+BCE+BDE Realizando o mesmo processo com P2, temos This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 108 Enumeração (F+ABGHIJ)(G+BCHIJ)(H+CDIJ) (I+DEJ)(J+AE)⇒ distributividade (FG+BCFHIJ+ABGHIJ+ABCGHIJ) (H+CDIJ)(I+DEJ)(J+EA)⇒ absorção (FG+BCFHIJ+ABGHIJ)(H+CDIJ) (I+DEJ)(J+AE)⇒ distributividade (FG+BCFHIJ+ABGHIJ) (HI+DEHJ+CDIJ+CDEIJ)(J+AE) ⇒ absorção (FG+BCFHIJ+ABGHIJ) (HI+DEHJ+CDIJ)(J+AE) ⇒ distributividade (FG+BCFHIJ+ABGHIJ) (HIJ+HIEA+DEHJ+DEHJA+CDIJ+CDIJEA)⇒ absorção (FG+BCFHIJ+ABGHIJ) (HIJ+HIEA+DEHJ+DEHJA+CDIJ)⇒ absorção (FG+BCFHIJ+ABGHIJ) (HIJ+HIEA+DEHJ+CDIJ)⇒ distributividade FGHIJ+FGHIEA+FGDEHJ+FGCDIJ+BCFHIJ+ BCFHIJEA+ BCFHIJDE+BCFHIJD+ABGHIJ +ABGHIJE+ ABGHIJDE+ ABGHIJCD⇒ absorção FGHIJ+FGHIEA+FGDEHJ+FGCDIJ+ BCFHIJ+ BCFHIJEA+BCFHIJDE +BCFHIJD+ABGHIJ⇒ absorção FGHIJ+FGHIEA+FGDEHJ+FGCDIJ+ BCFHIJ+ABGHIJ O cálculo de P1.P2 resulta nos seguintes passos. Devido à quantidade de termos manipulados a cada passo, omitimos o nome das operações aplicadas, entretanto, continuamos destacados os termos usados nas operações. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.2 Enumeração em Grafos 109 (ACD+ACE+ABD+BCE+BDE) (FGHIJ+AEFGHI+DEFGHJ+CDFGIJ+BCFHIJ+ABGHIJ)⇒ ACDFGHIJ+ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+BDEFGHIJ+ ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ABDEFGHI+ ACDEFGHJ+ACDEFGHJ+ABDEFGHJ+BCDEFGHJ+BDEFGHJ+ ACDFGIJ+ACDEFGIJ+ABCDFGIJ+BCDEFGIJ+BCDEFGIJ+ ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+BCEFHIJ+BCDEFHIJ+ ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ ⇒ ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+BDEFGHIJ+ ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ABDEFGHI+ ACDEFGHJ+ACDEFGHJ+ABDEFGHJ+BCDEFGHJ+BDEFGHJ+ ACDFGIJ+BCDEFGIJ+BCDEFGIJ+ ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+BCEFHIJ+BCDEFHIJ+ ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒ ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+BDEFGHIJ+ ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ ACDEFGHJ+ACDEFGHJ+ABDEFGHJ+BCDEFGHJ+BDEFGHJ+ ACDFGIJ+BCDEFGIJ+BCDEFGIJ+ ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+BCEFHIJ+BCDEFHIJ+ ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒ ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+ ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ ACDEFGHJ+ACDEFGHJ+BDEFGHJ+ ACDFGIJ+BCDEFGIJ+BCDEFGIJ+ ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+BCEFHIJ+BCDEFHIJ+ ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒ ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+ ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ ACDEFGHJ+ACDEFGHJ+BDEFGHJ+ ACDFGIJ+BCDEFGIJ+ ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+ BCEFHIJ+ BCDEFHIJ+ ABCDGHIJ+ABCEGHIJ+ ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒ This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 110 Enumeração ACEFGHIJ+ABDFGHIJ+ ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ ACDEFGHJ+ACDEFGHJ+BDEFGHJ+ ACDFGIJ+BCDEFGIJ+ ABCDFHIJ+ABCDFHIJ+BCEFHIJ+ ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒ ACEFGHIJ+ABDFGHIJ+ ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ ACDEFGHJ+ACDEFGHJ+BDEFGHJ+ ACDFGIJ+BCDEFGIJ+ ABCDFHIJ+BCEFHIJ+ ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒ ACEFGHIJ+ABDFGHIJ+ ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ ACDEFGHJ+BDEFGHJ+ ACDFGIJ+ BCDEFGIJ ABCDFHIJ+ BCEFHIJ ABCDGHIJ+ ABCEGHIJ+ ABDGHIJ+ ABCEGHIJ+ ABDEGHIJ⇒ ABDFGHIJ+ ACEFGHI+ABDEFGHI+ ACDEFGHJ+BDEFGHJ+ ACDFGIJ+ BCDEFGIJ ABCDFHIJ+ BCEFHIJ ABCDGHIJ+ ABCEGHIJ+ ABDGHIJ+ ABCEGHIJ+ ABDEGHIJ⇒ ACEFGHI+ABDEFGHI+ ACDEFGHJ+BDEFGHJ+ ACDFGIJ+ BCDEFGIJ ABCDFHIJ+ BCEFHIJ ABCEGHIJ+ ABDGHIJ+ ABCEGHIJ⇒ ACEFGHI+ABDEFGHI+ACDEFGHJ+BDEFGHJ+ACDFGIJ+ BCDEFGIJ+ABCDFHIJ+BCEFHIJ+ABCEGHIJ+ABDGHIJ This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.3 Enumeração em Dı́grafos 111 Baseado no processo descrito na Seção 5.2.1, sabemos que os termos acima representam as seguintes coberturas de vértices minimais em L(G). {a, c, e, f, g, h, i}, {a, b, d, e, f, g, h, i}, {a, c, d, e, f, g, h, j}, {b, d, e, f, g, h, j}, {a, c, d, f, g, i, j}, {b, c, d, e, f, g, i, j}, {a, b, c, d, f, h, i, j}, {b, c, e, f, h, i, j}, {a, b, c, e, g, h, i, j}, {a, b, d, g, h, i, j} Os conjuntos independentes são obtidos calculando VL − C, para cada cobertura C. Portanto, os conjuntos independentes maximais de L(G) são {b, d, j}, {c, j}, {b, i}, {a, c, i}, {b, e, h}, {a, h}, {e, g}, {a, d, g}, {d, f}, {c, e, f} os quais correspondem aos emparelhamentos maximais em G. Observe que α(L(G)) = α′(G) = 3, i.e, o número de independência de L(G) é igual ao tamanho do maior emparelhamento em G. 5.3 Enumeração em Dı́grafos Nesta seção aplicamos o método de Maghout em d́ıgrafos para obter as co- berturas de vértices, conjuntos independentes, cliques, conjuntos dominan- tes (entrada, sáıda e gêmeos) e emparelhamentos. Em todos os casos, sele- cionamos um d́ıgrafo e aplicamos o método apresentando passo a passo as operações realizadas. Em algumas situações re-aproveitamos os resultados já calculados na seção anterior, que é o caso da seção de emparelhamento. 5.3.1 Coberturas de Vértices e Conjuntos Independen- tes A aplicação do método de Maghout em d́ıgrafos é direta. Independente se o d́ıgrafo é simples ou não, utilizamos seu grafo simples subjacente. Note que Grafo Simples Subjacenteo grafo subjacente a um multigrafo direcionado é um multigrafo. Podemos aplicar o método neste grafo, porém existirá redundância de esforço já que múltiplas arestas entre um mesmo par de vértices irão aparecer várias vezes no produtório. Para minimizar isto utilizamos o grafo subjacente ao mul- tigrafo que é simples. Por exemplo, o d́ıgrafo D = (V,A) da Figura 4.2(a) This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 112 Enumeração possui os seguintes grafos: o grafo subjacente ao d́ıgrafo, que é um multi- grafo, e o grafo subjacente a este multigrafo. Estes grafos são ilustrados nas Figuras 5.4(a) e (b), respectivamente. O produtório da Equação 5.1 para o multigrafo na Figura 5.4(a) é (1̇+3̇)2(1̇+5̇)2(5̇+3̇)2(2̇+3̇)2(2̇+4̇)2(2̇+6̇)2(3̇+4̇)2(3̇+6̇)2(4̇+6̇)2(1̇+2̇)(5̇+6̇) onde (v̇ + u̇)k = (v̇ + u̇)(v̇ + u̇). . . . .(v̇ + u̇)︸ ︷︷ ︸ k vezes e k corresponde à multiplicidade da aresta {v, u}. Enquanto que para o grafo ilustrado na Figura 5.4(b), temos (1̇ + 3̇)(1̇ + 5̇)(5̇ + 3̇)(2̇ + 3̇)(2̇ + 4̇)(2̇ + 6̇)(3̇ + 4̇)(3̇ + 6̇)(4̇ + 6̇)(1̇ + 2̇)(5̇ + 6̇) Usando a simplificação mostrada na Equação 5.2 juntamente com a lei de idempotência do operador lógico e, é posśıvel mostrar que as expressões para o multigrafo e para grafo são equivalentes. Portanto, aplicando o método de Maghout na expressão acima temos a seguinte seqüência de passos. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.3 Enumeração em Dı́grafos 113 (1̇ + 3̇)(1̇ + 5̇)(5̇ + 3̇)(2̇ + 3̇)(2̇ + 4̇)(2̇ + 6̇) (3̇ + 4̇)(3̇ + 6̇)(4̇ + 6̇)(1̇ + 2̇)(5̇ + 6̇)⇒ Equação 5.2 (3̇ + 1̇2̇4̇5̇6̇)(1̇ + 5̇)(2̇ + 4̇)(2̇ + 6̇)(4̇ + 6̇) (1̇ + 2̇)(5̇ + 6̇)⇒ Equação 5.2 (3̇ + 1̇2̇4̇5̇6̇)(1̇ + 5̇)(2̇ + 4̇)(6̇ + 2̇4̇5̇)(1̇ + 2̇)⇒ Equação 5.2 (3̇ + 1̇2̇4̇5̇6̇)(6̇ + 2̇4̇5̇)(2̇ + 1̇4)(1̇ + 5̇)⇒ distributividade (3̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇ + 1̇2̇4̇5̇6̇)(2̇ + 1̇4)(1̇ + 5̇)⇒ idempotência (3̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇)(2̇ + 1̇4̇)(1̇ + 5̇)⇒ distributividade (3̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇)(1̇2̇ + 2̇5̇ + 1̇4̇ + 1̇4̇5̇)⇒ absorção (3̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇)(1̇2̇ + 2̇5̇ + 1̇4̇)⇒ distributividade 1̇2̇3̇6̇ + 2̇3̇5̇6̇ + 1̇3̇4̇6̇ + 1̇2̇3̇4̇5̇ + 2̇3̇4̇5̇ + 1̇2̇3̇4̇5̇+ 1̇2̇4̇5̇6̇ + 1̇2̇4̇5̇6̇ + 1̇2̇4̇5̇6̇⇒ idempotência 1̇2̇3̇6̇ + 2̇3̇5̇6̇ + 1̇3̇4̇6̇ + 1̇2̇3̇4̇5̇ + 2̇3̇4̇5̇+ 1̇2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇⇒ absorção 1̇2̇3̇6̇ + 2̇3̇5̇6̇ + 1̇3̇4̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇ Após este processo, obtivemos cinco termos indicando que temos as se- guintes coberturas de vértices minimais {1, 2, 3, 6}, {2, 3, 5, 6}, {1, 3, 4, 6}, {2, 3, 4, 5}, {1, 2, 4, 5, 6}A obtenção dos conjuntos independentes maximais é feita como mostrada na seção anterior. Dada uma cobertura minimal de vértices C, o conjunto independente maximal é V −C. Logo, os conjuntos independentes maximais de D são {4, 5}, {1, 4}, {2, 5}, {1, 6}, {3} e o número de independência do d́ıgrafo é α(D) = 2. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 114 Enumeração Figura 5.4: Enumeração de Conjuntos Independentes em Dı́grafos. (a) grafo subjacentes e (b) grafo simples subjacente ao d́ıgrafo ilustrado na Figura 4.2 5.3.2 Coberturas de Fonte e Sumidouro Como as coberturas de fonte e sumidouro podem ser obtidas diretamente a partir dos arcos do d́ıgrafo, o método de Maghout não é utilizado nesta seção. Dado um d́ıgrafo D = (V,A), as coberturas de fonte e sumidouro Cf ⊆ V e Cs ⊆ V , respectivamente, correspondem a subconjuntos de vértices tal que para todo arco (u, v) ∈ A, u ∈ Cf e v ∈ Cs, i.e., para cada arco, o vértice origem compõe a cobertura de fonte enquanto que o vértice destino compõe a cobertura de sumidouro. Note que o fato de v ∈ Cf , não implica que v é um vértice fonte. Isto indica apenas que existem arcos que têm v como origem. A mesma idéia está relacionada aos vértices em Cs. Para ilustrar estas coberturas, considere os d́ıgrafos ilustrados na Fi- gura 5.5. Para o d́ıgrafo D1 em (a), as coberturas de fonte e de sumidouro são Cf = {a, e} e Cs = {b, c, d, f}, respectivamente. Como Cf ∩Cs = ∅, logo D1 é um d́ıgrado bipartido direcionado com as partições definidas por Cf e Cs. Neste caso, para cada arco (u, v), u é vértice fonte e v é vértice sumi- douro. Para o d́ıgrafo D2 em (b), Cf = {a, b, e} e Cs = {c, d, e, f}. D2 é um d́ıgrafo bipartido, pois seu grafo subjacente é bipartido possuindo os seguin- tes conjuntos independentes {a, e} e {b, c, d, f}. Todavia, D2 não é bipartido direcionado pois Cf ∩ Cs 6= ∅, i.e., D2 não possui apenas vértices fonte e su- midouro. O d́ıgrafo D3 em (c), possui Cf = {a, b, c, d, e} e Cs = {a, b, c, d, f}. Este d́ıgrafo não é bipartido, pois o grafo subjacente possui ciclos de tamanho 3. Ele é um d́ıgrafo 3-partido cujo conjunto de vértices pode ser dividido nas seguintes partições {a, e}, {b, d} e {c, f}. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.3 Enumeração em Dı́grafos 115 (a) (b) (c) Figura 5.5: Cobertura de Fonte e Sumidouro 5.3.3 Cliques O cálculo de cliques maximais em d́ıgrafos é similar ao cálculo realizado para grafos. Inicialmente calculamos o complemento do d́ıgrafo e encontramos seu grafo simples subjacente, pelos motivos apresentados na Seção 5.3.1. Em seguida aplicamos o método de maghout. Considere, o d́ıgrafoD, ilustrado na Figura 4.2. O Complemento deste d́ıgrafo D̄ e seu grafo simples subjacente, são ilustrados nas Figuras 5.6(a) e (b), respectivamente. (a) (b) Figura 5.6: Enumeração de Cliques em Dı́grafos. (a) Complemento e (b) grafo simples subjacente do d́ıgrafo ilustrado na Figura 4.2. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 116 Enumeração A partir do grafo simples subjacente, temos os seguintes passos (1̇ + 2̇)(1̇ + 4̇)(1̇ + 6̇)(5̇ + 2̇)(5̇ + 4̇)(5̇ + 6̇)⇒ Equação 5.2 (1̇ + 2̇4̇6̇)(5̇ + 2̇4̇6̇)⇒ Equação 5.2 1̇5̇ + 2̇4̇6̇ Os termos encontrados correspondem às seguintes cobertura de vértices minimais {1, 5}, {2, 4, 6} Usando este resultado encontramos os seguintes conjuntos independentes maximais em D̄, {2, 3, 4, 6}, {1, 3, 5} que correspondem aos cliques maximais em D. Logo, o número de clique do d́ıgrafo é ω(D) = 4. 5.3.4 Conjuntos Dominantes O uso do método de Maghout para o cálculo dos conjuntos dominantes em d́ıgrafos segue uma lógica muito similar àquela descrita na Seção 5.1. Ini- cialmente apresentaremos o cálculo dos conjuntos dominantes de entrada e em seguida mostraremos como os conjuntos dominantes de sáıda serão cal- culados. Finalizaremos com o cálculo dos conjuntos dominantes minimais gêmeos. É importante considerar que para o cálculo da cobertura de vértices, criamos uma soma lógica u̇+ v̇ para cada aresta {u, v}. Esta soma indica que podemos selecionar ou o vértice u ou o vértice v para compor a cobertura de vértices. Este mesmo processo de escolha será usado para o cálculos dos conjuntos dominantes maximais. Dado o d́ıgrafo D = (V,A), ilustrado na Figura 4.10, para cada vértice criaremos uma variável lógica. Neste caso, os vértices a− f estão associados às variáveis lógicas A − F , respectivamente. Em seguida, para cada vértice v criamos uma soma lógica contendo todas as variáveis dos vértices que são dominadas por v6. Por exemplo, para o vértice a, criamos a seguinte soma lógica (A+B + C) 6Um vértice v domina um vértice u, se existe o arco (v, u) no d́ıgrafo. Além disso, é importante considerar que v domina a si próprio. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.3 Enumeração em Dı́grafos 117 para o vértice b temos a seguinte soma (B + C + D), e assim por diante. Portanto para este d́ıgrafo temos o seguinte produto destacando o vértice dominante embaixo da sua respectiva soma lógica. (A+B + C)︸ ︷︷ ︸ a (B + C +D)︸ ︷︷ ︸ b (A+B + C + E)︸ ︷︷ ︸ c (B +D + F )︸ ︷︷ ︸ d (C +D + E + F )︸ ︷︷ ︸ e (B + F )︸ ︷︷ ︸ f Em seguida realizamos os seguintes passos (A+B+C)(B+C+D)(A+B+C+E)(B+D+F) (C+D+E+F)(B+F)⇒ Equação 5.4 (A+B+C)(B+C+D)(B+D+F)(C+D+E+F)(B+F)⇒ Equação 5.4 (A+B+C)(B+C+D)(C+D+E+F) (B+F)⇒ Equação 5.3 (B+C+AD)(C+D+E+F)(B+F)⇒ Equação 5.3 (B+(C+AD)F )(C+D+E+F)⇒ distributividade (B+CF+ADF)(C+D+E+F)⇒ distributividade BC+BD+BE+BF+CF+CDF+CEF+ CF+ACDF+ +ADF+ADEF+ADF⇒ absorção BC+BD+BE+BF+CF+ADF+ADEF+ADF⇒ absorção BC+BD+BE+BF+CF+ ADF Portanto, os conjuntos dominantes de entrada para D são Conjuntos Do- minantes de Entrada{b, c}, {b, d}, {b, e}, {b, f}, {c, f}, {a, d, f} e o número de dominância de entrada é γ−(D) = 2. Calcular o conjunto dominante de sáıda a partir do conjunto dominante de entrada através de This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 118 Enumeração Cs = V −Ce , onde Ce é o conjunto dominante de entrada e Cs é o conjunto dominante de sáıda, pode levar a resultados incompletos ou não minimais. Por exemplo, os conjuntos obtidos a partir do resultado anterior são {a, d, e, f}, {a, c, e, f}, {a, c, d, f}, {a, c, d, e}, {a, b, d, e}, {b, c, e} Note que o conjunto {a, d, e, f} não corresponde a um conjunto minimal pois {a, e} é o conjunto dominante de sáıda minimal. Além disso, alguns conjuntos que compõem o resultado correto, como {b, c, f}, não aparecem. Este conjunto é dominante de sáıda e não é subconjunto próprio de outro conjunto. Para obtermos os conjuntos dominantes de sáıda minimais, realizamos um processo similar ao exposto anteriormente. Porém ao invés de escrevermos para cada vértice v a soma lógica das variáveis que são dominadas por v, escrevemos a soma lógica das variáveis que dominam v. Para o mesmo d́ıgrafo D, a soma associada ao vértice a é dada apenas por (A + C). Em seguida realizamos o produto das somas obtidas para cada vértice. Isto resultado no seguinte produto (A+ C)︸ ︷︷ ︸ a (A+B + C +D + F )︸ ︷︷ ︸ b (A+B + C + E)︸ ︷︷ ︸ c (B +D + E)︸ ︷︷ ︸ d (C + E)︸ ︷︷ ︸ e (D + E + F )︸ ︷︷ ︸ f Em seguida realizamos os seguintes passos (A+C)(A+B+C+D+F)(A+B+C+E)(B+D+E) (C+E)(D+E+F)⇒ Equação 5.4 (A+C)(B+D+E)(C+E)(D+E+F)⇒ Equação 5.3 (A+C)(D+E+BF)(C+E)⇒ Equação 5.3 (C+AE)(D+E+BF)⇒ distributividade CD+CE+CBF+ADE+AE+ABEF⇒ absorção CD+CE+CBF+AE This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license,visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.3 Enumeração em Dı́grafos 119 Portanto, os conjuntos dominantes de sáıda para D são Conjuntos Do- minantes de Sáıda {c, d}, {c, e}, {c, b, f}, {a, e} e o número de dominância de sáıda é γ+(D) = 2. O cálculo dos conjuntos dominantes gêmeos minimais segue diretamente do resultado obtido nos cálculos anteriores. Sabemos que para um d́ıgrafo D = (V,A), um conjunto dominante gêmeo S é um subconjunto de vértices S ⊆ V , tal que todo par de vértices u, v ∈ S existem dois arcos (u,w), (w, v) ∈ A para todo w ∈ V − S. Nos conjuntos dominantes de entrada S1, todos os vértices em V −S1 dominam pelo menos um vértice em S1, enquanto que nos conjuntos dominantes de sáıda S2, todos os vértices em V −S2 são dominados pelos vértices em V2. Portanto V − (S1 ∪ S2) correspondem aos vértices que dominam os vértices em S1 e são dominados pelos vértices em S2. Considerando os resultados anterioresR1 =BC+BD+BE+BF+CF+ ADF e R2 =CD+CE+CBF+AE associados aos conjuntos dominantes de entrada e de sáıda respectivamente. Os conjuntos dominantes gêmeos são obtidos através dos seguintes passos This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 120 Enumeração R1.R2=(BC+BD+BE+BF+CF+ ADF) (CD+CE+CBF+AE)⇒ distributividade BCD+BCE+BCF+ABCE+BCD+BCDE+BCDF+ ABDE+BCDE+BCE+BCEF+ABE+BCDF+BCEF+ BCF+ABEF+CDF+CEF+BCF+ACEF+ACDF+ ACDEF+ABCDF+ADEF⇒ absorção BCD+BCE+BCF+ABCE+ ABDE+BCE+BCEF+ABE+BCEF+ BCF+ABEF+CDF+CEF+BCF+ACEF+ACDF+ ACDEF+ADEF⇒ absorção BCD+BCE+BCF+ ABDE+ABE+ BCF+ABEF+CDF+CEF+BCF+ACEF+ACDF+ ACDEF+ADEF⇒ absorção BCD+BCE+BCF+ ABDE+ABE+ ABEF+CDF+CEF+ACEF+ACDF+ ACDEF+ADEF⇒ absorção BCD+BCE+BCF+ ABE+CDF+CEF+ACEF+ACDF+ ACDEF+ADEF⇒ absorção BCD+BCE+BCF+ABE+ +CDF+CEF+ACDF+ADEF⇒ absorção BCD+BCE+BCF+ABE+ CDF+CEF+ADEF Portanto, os conjuntos dominantes gêmeos para D sãoConjuntos Dominantes Gêmeos {b, c, d}, {b, c, e}, {b, c, f}, {a, b, e}, {c, d, f}, {c, e, f}, {a, d, e, f} e o número de dominância gêmeo é γ∗(D) = 3. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.4 Exerćıcios 121 5.3.5 Emparelhamentos Na Seção 5.2.4, vimos explicitamente o relacionamento entre emparelhamento maximal e conjunto independente maximal através da relação entre um grafo G e seu grafo linha L(G). Observamos que os emparelhamentos de G po- deriam ser obtidos calculando os conjuntos independentes em L(G). Isto permitiu o uso do método de Maghout em L(G) para enumerar todos os emparelhamentos maximais de G. Na Seção 4.5, discutimos que o conceito de emparelhamento para gra- fos e d́ıgrafos era o mesmo, porém com a diferença de que para o primeiro considerávamos arestas enquanto para o último considerávamos arcos. En- tretanto, em ambos os casos, o emparelhamento buscava sempre um conjunto de arcos ou arestas que não compartilhavam vértices e não correspondiam a laços. Nesta seção iremos usar os resultados obtidos anteriormente para grafos e apresentados na Seção 5.2.4. Considerando o d́ıgrafo D = (V,A) mostrado Grafo Subja- cente ao Dı́grafona Figura 5.7, a enumeração dos emparelhamentos é feita a partir do grafo subjacente a D, o qual chamaremos de D′. Usando D′, aplicamos o método Grafo Linha de Maghout no grafo linha L(D′). O grafo D′ é o grafo da Figura 5.3 que foi utilizado na Seção 5.2.4 para exemplificar o cálculo dos emparelhamentos ma- ximais. Portanto os passos mostrados naquela seção assim como o resultado obtido são também válidos para o d́ıgrafo D. Assim, os emparelhamentos maximais para D correspondem aos seguintes conjuntos de arcos {b, d, j}, {c, j}, {b, i}, {a, c, i}, {b, e, h}, {a, h}, {e, g}, {a, d, g}, {d, f}, {c, e, f} e α′(D) = 3 indicando que o tamanho do maior emparelhamento de D é igual a 3. 5.4 Exerćıcios Exerćıcio 5.1. Liste todos os conjuntos independentes do grafo ilustrado na Figura 4.1(a) e determine seu número de independência. Exerćıcio 5.2. Liste todos os conjuntos independentes e cliques do grafo ilustrado na Figura 5.8. Em seguida determine seus números de clique e de independência. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 122 Enumeração Figura 5.7: Dı́grafo usando para o cálculo do emparalhamento. Exerćıcio 5.3. Liste todos os conjuntos independentes e cliques do comple- mento do grafo ilustrado na Figura 5.8. Em seguida determine seus números de clique e de independência. Compare os resultados obtidos com os do exerćıcio anterior. Exerćıcio 5.4. Quantos conjuntos independentes e cliques possui: (a)Kn e (b) Cn Exerćıcio 5.5. Mostre para qualquer grafo G, ω(G) = α(Ḡ) e α(G) = ω(Ḡ) Exerćıcio 5.6. Mostre que para qualquer inteiro positivo n ≥ 2, o número de Ramsey r(n, 2) é igual a n. Exerćıcio 5.7. Determine |V | e |A| de um grafo biclique Kr,s = (V,A). Exerćıcio 5.8. Quantos automorfismos possui um biclique Kr,s com (a) r 6= s e (b) r = s? Exerćıcio 5.9. Dado um grafo G = (V,A), mostre que d(vi)∧ j=1 (ui + ui+j) = ui + d(vi)∧ j=1 (ui+j) considerando que ui é a variável lógica associada ao vértice vi ∈ V e ui+j é a variável lógica associada ao vértice wj ∈ τ(vi). Exerćıcio 5.10. Determine os conjuntos independentes maximais e os cli- ques do d́ıgrafo ilustrado na Figura 5.9 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 5.4 Exerćıcios 123 Figura 5.8: Grafo Exemplo Figura 5.9: Dı́grafo Exemplo This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 124 Enumeração Exerćıcio 5.11. Dada uma aresta com multiplicidade k ≥ 1, mostre que (v̇ + u̇)k = (v̇ + u̇), onde + é a operação lógica ou. Exerćıcio 5.12. Seja G = G1 +G2, i.e., o resultado da operação de junção sobre os grafos G1 e G2. Prove que ω(G) = ω(G1) + ω(G2). Exerćıcio 5.13. Mostre que um grafo G é bipartido se e somente se α(H) ≥ 1 2 |H| para todo subgrafo H de G, i.e., H ⊆ G. Exerćıcio 5.14. Mostre que para qualquer k > 0, todo grafo k-regular bipar- tido tem um emparelhamento perfeito. Exerćıcio 5.15. Determine a quantidade de emparelhamentos perfeitos de um grafo completo Kn. Exerćıcio 5.16. Prove que para qualquer grafo G = (V,A), α(G) ≥ |V | ∆(G)+1 Exerćıcio 5.17. Mostre que max{γ+(D), γ−(D)} ≤ γ∗(D) ≤ γ+(D) + γ−(D) This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Caṕıtulo 6 Árvores Este caṕıtulo apresenta os principais conceitos relacionados a um tipo parti- cular de grafo chamado Árvore. Uma árvore pode ser vista ou como um grafo conexo ou como um d́ıgrafo conexo sem ciclos. Árvores vêm sendo estudadas deste 1857 por Cayley em processos de contagem de componentes qúımicos e possuem inúmeras aplicações práticas, sendo freqüentemente empregadas em algoritmos que necessitam realizar buscas rápidas de itens em uma lista; representar dados eficientemente para armazenamento ou transmissão; mo- delar explicitamente um processo de decisão, entre outros. 6.1 Conceitos Básicos Definição 6.1. Uma árvore é um grafo conexo aćıclico, i.e., sem ciclos de qualquer tamanho. Qualquer grafo simples conexo que não possui ciclos é uma árvore. Quando o grafo é simples e apenas aćıclico, temos uma floresta, onde cada componente Floresta conexo é uma árvore. Se ele possui apenas um único componente conexo, então ele é uma árvore que consiste em uma floresta conexa. A Figura 6.1 ilustra vários grafos aćıclicos que representam árvores, em particular, (a) é um grafo caminho P6 e (b) é um grafo estrela S6. Observe que em todos os casos, o número de arestas é uma unidade a menos que o númerode vértices. A união de todas as árvores nesta figura compõe uma floresta com 3 compo- nentes conexos. O fato de uma árvore ser um grafo aćıclico leva ao seguinte Teorema. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 126 Árvores (a) (b) (c) Figura 6.1: Exemplo de árvores. O grafo resultante da união das árvores (a), (b) e (c) corresponde a uma floresta. Teorema 6.1. Em uma árvore, existe um único caminho entre qualquer par de vértices. A presença de um ciclo em um grafo leva a pelo menos dois caminhos entre algum par de vértices na árvore. Como uma árvore não possui ciclos nem laços então o número de arestas é limitado pelo número de vértices. Teorema 6.2. Uma árvore T = (V,A) possui |A| = |V | − 1. O fato do número de arestas ser limitado pelo número de vértices em uma árvore T , nos leva ao seguinte teorema relacionado ao conjunto de árvores que formam uma floresta. Teorema 6.3. Uma floresta F = (V,A) composta por n árvores Ti = (Vi, Ai), com 1 ≤ i ≤ n, possui uma quantidade de aresta igual a |A| = n∑ i=1 |Vi| − n. Uma árvore possui inúmeras caracteŕısticas que são equivalentes entre si e que a individualizam dos demais grafos. Estas caracteŕısticas são destacadas no seguinte Teorema. Teorema 6.4. Para um grafo T = (V,A) de n ≥ 1 vértices, as seguin- tes afirmações são equivalentes e caracterizam T como uma árvore com n vértices. (i) T é conexo e tem n− 1 arestas; This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.1 Conceitos Básicos 127 (ii) Para qualquer par de vértices v, u ∈ V , existe apenas um único caminho de v a u (e vice-versa) em T ; (iii) T é minimamente conexo, i.e., T é conexo porém a remoção de qualquer aresta qualquer torna T desconexo. (iv) T é maximamente aćıclico, i.e., T não possui ciclos entretanto a adição de uma aresta entre qualquer par de vértices não adjacentes gera um ciclo em T . A partir do ı́tem (iii) do Teorema 6.4, temos os seguintes Corolários Corolário 6.1. Cada aresta de uma árvore é uma aresta de corte (Verifique!). Corolário 6.2. Um vértice v de uma árvore é um vértice de corte se e somente se d(v) > 1 (Verifique!). Portanto qualquer árvore T com mais de n ≥ 2 vértices possui conectivi- dades de vértice e de aresta iguais a 1, i.e., λ(T ) = κ(T ) = 1. É comum lidarmos com árvores cujos vértices possuam rótulos. Uma árvore com vértices rotulados com letras ou número é chamada árvore ro- tulada. Duas árvores rotuladas T = (V,A) e T ′ = (V ′, A′) são idênticas se Árvore Rotulada V = V ′ e A = A′, i.e., se tanto o conjunto de aresta quanto o conjunto de vértices forem iguais. Se ambas as árvores possúırem a mesma forma, porém com conjunto de arestas distintos, devido aos rótulos, elas serão consideradas diferentes. Neste caso, dizemos que são árvores isomórficas, porém diferen- Árvores Isomórficastes. Isomorfismo em grafos é discutido em maiores detalhes na Seção 1.6. As árvores mostradas na Figura 6.1 não são rotuladas. Por outro lado, as árvores das Figuras 6.2(a) e (b) são rotuladas e distintas, mesmo que elas representem grafos estrela S6. O que difere nestas árvores é o conjunto de arestas. A aresta {d, c} está contida apenas na árvore em (a), enquanto que a aresta {a, c} está presente apenas na árvore em (b). Na Seção 1.4 apresentamos o conceito de centro de um grafo que consiste em um grafo induzido pelos vértices de excentricidade mı́nima. Este conceito Centro de Árvoresé válido para árvores com adição da informação de que o centro de uma árvore é um vértice ou uma aresta. Este resultado foi obtido por Jordan e apresentado através do seguinte Teorema. Teorema 6.5 ([18]). O centro de uma árvore é um vértice ou uma aresta. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 128 Árvores (a) (b) Figura 6.2: Exemplo de árvores rotuladas. Considerando a Figura 6.2, o centro da árvore em (a) é o vértice d, en- quanto que o centro da árvore em (b) é o vértice a. O vértice d em (a) possui menor excentricidade dentre todos os vértices, sendo igual a �(d) = 1, enquanto que os demais vértices possuem excentricidade igual a 2. A mesma situação é encontrada em (b), porém o vértice que possui a menor excen- tricidade é o vértice a. Por outro lado, os vértices da árvore ilustrada na Figura 6.3(a) possuem as seguintes excentricidades: �(a) = 3, �(b) = 3, �(c) = 3, �(d) = 2, �(e) = 2, �(f) = 3 e �(g) = 3. Portanto os vértices d e e possuem os menores valores de excentricidade e correspondem ao centro desta árvore. 6.2 Árvores Enraizadas Em inúmeras aplicações um dado vértice é designado para se tornar um vértice raiz. A partir dele podemos associar uma direção à cada aresta deVértice Raiz forma a criar um caminho direcionado do vértice raiz para cada vértice da árvore. Isto leva ao conceito de árvore enraizada e também à definição deÁrvore Enrai- zada uma hierarquia entre os vértices. As Figuras 6.3(b) e (c) mostram árvores enraizadas geradas a partir da árvore em (a), tendo como ráızes os vértices a e e respectivamente. É posśıvel alcançar qualquer vértice da árvore através de um único caminho direcionado a partir do vértice raiz. Se T = (V,A) é uma árvore enraizada e v, u ∈ V são vértices quaisquer, então u é pai de v e v é filho de u se existe um arco (u, v) ∈ A. Dois vérticesVértices Pai, Fi- lho e Irmão são chamados irmãos quando possuem o mesmo pai. Um vértice u é ancestral Vértices Ances- tral, Descen- dente, Folha e Interno This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.2 Árvores Enraizadas 129 (a) (b) (c) Figura 6.3: Exemplo de árvores enraizadas. (b) e (c) são árvores enraizadas geradas a partir de (a), com ráızes a e e respectivamente This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 130 Árvores de outro vértice v, se e somente existe um caminho direcionado na árvore de u para v. Neste caso, v é um vértice descendente de u. Vértices que não possuem descendentes são chamados vértices folha, e os demais vértices são chamados vértices internos da árvore. O vértice raiz é um vértice interno a não ser que ele seja o único na árvore. Neste caso, ele é considerado como sendo um vértice folha. Toda árvore com no mı́nimo dois vértices tem no mı́nimo duas folhas. Um vértice folha v possui grau d(v) ≤ 1, onde d(v) = 0, quando a árvore for composta apenas por ele. Um vértice interno u de uma árvore possui grau d(u) ≥ 1. A remoção de uma folha de uma árvore com n vértices resulta em outra árvore porém com n − 1 vértices. Portanto, para qualquer árvore T=(V,A) não trivial temos d(v) ≥ 1 ,∀v ∈ V . Usando esta informação e os Teoremas 1.1 e 6.2, temos o seguinte Corolário Corolário 6.3. Para uma árvore T = (V,A), temos∑ v∈V d(v) = 2|A| = 2|V | − 2 Uma subárvore T ′ = (V ′, A′) de uma árvore T = (V,A), i.e., denotadaSubárvore por T ′ ⊆ T , possui como raiz um vértice interno v de T e como vértices internos todos os vértices descendentes de v e todas as arestas incidentes a estes vértices em T . Formalmente, se T ′ ⊆ T e v é raiz de T ′, então u ∈ V ′ se u ∈ V e é descendente da raiz v em T , ou seja, se existe um caminho direcionado em T com origem em v e destino em u. Em relação aos arcos, a = (x, y) ∈ A′ se (x, y) ∈ A e x, y ∈ V ′. As Figuras 6.4(a) e (b) apresentam duas sub-árvores da árvore na Figura 6.3(b) com vértices ráız e e d, respectivamente. Todos os vértices descendentes do vértice e da árvore na Figura 6.3(b) compõem a sub-árvorena Figura 6.4(a), juntamente com os respectivos arcos. O mesmo se aplica à sub-árvore da Figura 6.4(b). Quando todos os vértices internos de uma árvore enraizada possuem no máximo p filhos, então dizemos que ela é uma árvore p-ária. Uma árvore enraizada é p-ária completa se todos os seus vértices internos possuem exa-Árvore p-ária, e p-ária Completa tamente p filhos. Quando p = 2, temos uma árvore binária composta por vértices com no máximo dois filhos. Nesta árvore, dizemos que um vértice Árvore Binária, Subárvores Di- reita e Esquerda com dois filhos possui um filho à esquerda e outro à direita. A subárvore enraizada com raiz no filho à esquerda é chamada subárvore esquerda, en- quanto que a outra subárvore é chamada subárvore direita. Árvores binárias são comumente usadas para estruturar informação para que esta seja aces- This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.2 Árvores Enraizadas 131 (a) (b) Figura 6.4: Exemplo de sub-árvores. (a) e (b) são sub-árvores da árvore da Figura 6.3(b) com ráızes e e d, respectivamente. sada de forma eficiente. Nestes casos, elas são chamadas de árvores binárias de pesquisa. A árvore mostrada na Figura 6.3(c) é um exemplo de árvore 3-ária, também chamada de ternária. Esta árvore é completa pois todos os vértices internos possuem exatamente 3 vértices filhos. Por outro lado, embora a árvore mostrada na Figura 6.3(b) seja uma árvore ternária, ela não é com- pleta, pois o vértice e possui apenas dois filhos. Outro exemplo pode ser visto na Figura 6.1(b) se considerarmos o vértice central como sendo um vértice raiz. Neste caso, teremos uma árvore 6-ária. A árvore ilustrada na Figura 6.1(c) pode também ser vista como árvore completa 3-ária se consi- derarmos que o vértice do topo como vértice raiz. O comprimento do caminho do vértice ráız até um vértice v qualquer define o ńıvel do vértice v, denotado por l(v)1. O ńıvel de um vértice é Nı́vel de um vérticetambém chamado de altura do vértice na árvore. Por exemplo, considere a árvore T = (V,A) ilustrada na Figura 6.3(c). Os vértices de T possuem os seguintes ńıveis l(a) = 2, l(b) = 1, l(c) = 2, l(d) = 1, l(e) = 0 e l(f) = 2. Note que o ńıvel do vértice raiz e é igual a 0, por outro lado o ńıvel do vértice a é igual a 2. A partir desta informação é posśıvel calcular a altura da árvore Altura de uma ÁrvoreT , denotada por h(T )2. Ela é definida pelo maior valor de ńıvel encontrado considerando todos os vértices de T , i.e., h(T ) = max v∈V l(v). Uma árvore p-ária de altura h é chamada balanceada se todos os vértices Árvore Balance- ada1l é a inicial da palavra level que corresponde à palavra ńıvel em inglês 2h é a inicial da palavra height que corresponde à palavra altura em inglês This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 132 Árvores (a) (b) Figura 6.5: Exemplo de árvore balanceada. (a) é uma árvore ternária balan- ceada, enquanto que (b) é binária porém não balanceada. folha possuem ńıvel igual ou a h ou h− 1. Se esta árvore é completa e todos os seus vértices folhas estiverem a uma altura h, então ela é chamada árvore p-ária cheia. A Figura 6.5(a) mostra uma árvore ternária com raiz no vérticeÁrvore p-ária Cheia a e altura igual a 3. Esta árvore é balanceada pois todos os vértices folha, diferentes do vértice b, possuem altura igual a 3, enquanto b possui altura igual a 2. Por outro lado, a árvore binária em (b) não é balanceada pois ela possui altura igual a 3 e contém um vértice folha b com altura igual a 1. A quantidade de vértices que uma árvore p-ária de altura h possui é obtida somando o número de vértices a uma distância 0, 1, . . ., h da ráız. Assim temos que Teorema 6.6. Uma árvore p-ária de altura h possui no máximo ph vértices This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.3 Árvores de Espalhamento 133 (a) (b) (c) Figura 6.6: Exemplo de árvores de espalhamentos. (a) mostra um grafo G e (b) e (c) mostram duas árvores de espalhamentos de G. folha e no máximo ∑h−1 i=0 p i = p h−1 p−1 vértices internos. 6.3 Árvores de Espalhamento Como discutido na Seção 1.1, qualquer grafo G possui um subgrafo, chamado subgrafo de espalhamento ou subgrafo gerador, que contém todos os vértices do grafo original. Quando este subgrafo não possui ciclos ele é comumente chamado de árvore de espalhamento ou árvore geradora. Quando o subgrafo de espalhamento é desconexo, então temos uma floresta de espalhamento, Floresta de Es- palhamentoonde cada componente conexo é uma árvore de espalhamento. A Figura 6.6(a) mostra um grafo G e duas árvores de espalhamentos de G em (b) e (c). Cada árvore possui o mesmo conjunto de vértices de G e um subconjunto das arestas que não formam ciclos. Uma questão que se colocar diretamente após a apresentação destas árvores é quantas árvores de espalhamento podem ser obtidas a partir de um grafo This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 134 Árvores G. Uma solução simples e elegante para este problema foi dada por Cayley através do seguinte Teorema. Teorema 6.7. O número de árvores de espalhamento de um grafoG = (V,A) é dado por T (G) = T (G− a) + T (G/a) onde a ∈ A e não corresponde a um laço. Através deste Teorema podemos observar que o número de árvores de espalhamento de G é obtido de forma recursiva. Inicialmente selecionando uma aresta a qualquer e a usamos para realizar duas operações em G, já discutidas na Seção 2.2: a remoção de a, dada por G − a, e a operação de arco contração em a, dada por G/a. A partir dáı, o número de árvores de espalhamento de G é igual a soma do número de árvores de espalhamento de G após a remoção da aresta a, e de G após a operação de arco-contração na aresta a. Para exemplificar este processo usaremos o grafo G = (V,A) ilustrado na Figura 6.7 e a aresta a em destaque. De acordo com o Teorema 6.7, temos que calcular G1 = G− a e G2 = G/a, pois T (G) = T (G1) + T (G2) Figura 6.7: Grafo G exemplo para o cálculo do número de árvores de espa- lhamento. A aresta em negrito é a selecionada para o Teorema 6.7. Os grafos G1 e G2 são ilustrados nas Figura 6.8(a) e (d), respectivamente. Como estes grafos são complexos, não é posśıvel saber diretamente o número de árvores de espalhamento de cada um deles. Devido a isto, utilizamos novamente o Teorema 6.7 em G1 e G2. Para G1, selecionamos a aresta b, This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.3 Árvores de Espalhamento 135 como ilustrado na Figura 6.8(a) a fim de obter G′1 = G1 − b e G′′1 = G1/b, ambos ilustrados em (b) e (c), respectivamente. Enquanto que para G2, selecionamos a aresta c, ilustrada na Figura 6.8(d) para calcular G′2 = G2− c e G′′2 = G2/c, ambos ilustrados em (e) e (f), respectivamente. Dessa forma temos, T (G1) = T (G′1) + T (G′′1) e T (G2) = T (G′2) + T (G′′2) A partir destes grafos e analisando as Figuras 6.8(a)-(f), sabemos que T (G′1) = 1 e T (G′′1) = 2. Estes resultados se devem ao fato de G′1 já ser uma árvore, e G′′1, para se tornar uma árvore deve selecionar uma das duas ares- tas que são incidentes no mesmo par de vértices. Cada uma destas arestas juntamente com as demais dá origem a uma única árvore de espalhamento. Portanto G′′1 possui exatamente duas árvores de espalhamento. Através des- tes resultados obtemos T (G1) = 3. Usando o mesmo processo, sabemos que T (G′2) = 2 e T (G′′2) = 4, e consequentemente, T (G2) = 6. Utilizando os resultados obtidosconclúımos que T (G) = 9. (a) (b) (c) (d) (e) (f) Figura 6.8: Árvores intermediárias utilizadas no cálculo do número de árvores de espalhamento do grafo G ilustrado na Figura 6.7. (a) G1 = G − a e (b) G′1 = G1 − b (c) G′′1 = G1/b (d) G2 = G/a (e) G′2 = G2 − c (f) G′′2 = G2/b. Devido à recursividade, este processo pode ser muito complicado e demo- rado quando o grafo é muito grande. Felizmente existe uma maneira mais This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 136 Árvores direta de calcular o número de árvores de espalhamento de grafos genéricos. Ele foi desenvolvido por Kirchhoff [19] e é baseado no cálculo de determinante de matrizes. Kirchhoff mostrou que o número de árvores de espalhamento de um grafo G é determinado a partir do cofator3 da matriz resultante da subtração da matriz de graus4 pela matriz de adjacência, ambas do grafo G, o que é expresso através do o seguinte Teorema. Teorema 6.8 (Teorema de Matriz-Árvore [20]). Dados um grafo G = (V,A) sem loops com V = {v1, v2, . . . , vn}, a matriz de adjacência D = [di,j] de G, onde di,j representa o número de arestas entre os vértices vi e vj, e a matriz de graus M = [mi,j] de G, onde mi,i = d(vi) e mi,j = 0, para i 6= j, o número de árvores de espalhamento de G pode ser obtido por T (G) = (−1)i+j detQi,j onde Qi,j é a matriz resultante da eliminação da linha i e coluna j, relativos ao elemento qi,j, da matriz Q = M −D. A aplicação do Teorema 6.8 no grafo da Figura 6.7 é direta. Para facilitar a visualização da solução, os vértices serão associados aos rótulos de 1 a 5, conforme podemos ver na Figura 6.9. Figura 6.9: Grafo G exemplo para o cálculo do número de árvores de espa- lhamento. Inicialmente calculamos sua matriz de adjacência D e a matriz de graus 3Dada uma matriz quadrada A = [ai,j ] de ordem n, o cofator Ai,j = (−1)i+j |Dij |, onde |Dij | é o determinante da matriz resultante da remoção da linha i e coluna j da matriz A. 4A matriz de graus M = [mi,j ] de um grafo é uma matriz diagonal tal que mi,i = d(vi) e mi,j = 0, para i 6= j, e d(vi) corresponde ao grau do vértice vi. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.3 Árvores de Espalhamento 137 M , as quais são mostradas abaixo. D = 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 e M = 2 0 0 0 0 0 2 0 0 0 0 0 4 0 0 0 0 0 2 0 0 0 0 0 2 A matriz Q resultante da subtração da matriz M pela matriz D é dada por Q = 2 −1 −1 0 0 −1 2 −1 0 0 −1 −1 4 −1 −1 0 0 −1 2 −1 0 0 −1 −1 2 O cálculo do cofator é realizado selecionando qualquer elemento da matriz Q, o qual, por conveniência, será o elemento q1,1. Portanto o número de árvores de espalhamento é dado por. T (G) = (−1)1+1 det ∣∣∣∣∣∣∣∣∣ 2 −1 0 0 −1 4 −1 −1 0 −1 2 −1 0 −1 −1 2 ∣∣∣∣∣∣∣∣∣ = 9. Quando o grafo é completo é posśıvel calcular facilmente o número de árvores de espalhamento através de uma expressão simples desenvolvida por Cayley [21] e apresentada pelo seguinte Teorema Teorema 6.9 ([21]). Para um grafo completo Kn, o número de árvores de espalhamento é dado por T (Kn) = nn−2 Este teorema permite também obter a resposta para a seguinte pergunta: quantas árvores rotuladas podemos gerar com um conjunto de n vértices, de maneira que qualquer par de vértices possa ser adjacente. Observe que esta pergunta é análoga à aquela que consiste em determinar o número de árvores de espalhamento a partir de um grafo totalmente conexo com n vértices. Vale ressaltar que o resultado obtido diz respeito ao número de árvores distintas, This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 138 Árvores onde estas árvores podem ou não ser isomórficas entre si. Isomorfismo será discutido no Caṕıtulo 1.6. Se considerarmos o conjunto de vértices de Kn sendo definido por N = {1, 2, . . . , n} notaremos que nn−2 corresponde ao número de sequências de tamanho n− 2 que podemos formar com os elementos definidos no conjunto N . A relação entre estas seqüências e as posśıveis árvores geradoras associa- das ao grafo Kn é devido também ao trabalho de Prüfer. Prüfer [22] mostrou que existe uma correspondência direta entre o conjunto de árvores de espa- lhamento de Kn e o conjunto de todas as seqüências de tamanho n − 2, de maneira que cada árvore seja identificada de forma uńıvoca por uma dada seqüência. A esta seqüência é dado o nome código prüfer.Código Prüfer O código Prüfer é obtido através do seguinte processo. Considere uma árvore T = (V,A) com n vértices rotulados de 1 a n. Por conveniência denotaremos a árvore no instante i > 0 por Ti, o vértice selecionado no instante i por si e o vértice vizinho a si por ti. Note que T1 = T , i.e., no instante 1 a árvore T1 é exatamente igual a árvore original T . Os vértices vizinhos assumem papel fundamental na construção do código, pois eles compõem o código Prüfer. Por exemplo, para a árvore T , o código Prüfer é dado por (t1, t2, t3, . . . , tn−2). A questão principal é como escolher si. Esta escolha é fácil pois o vértice si corresponde sempre ao vértice folha de menor ı́ndice na árvore Ti. Os passos abaixo descrevem o processo de obtenção do código Prüfer: 1. No primeiro passo do cálculo do código, s1 é o vértice folha com menor ı́ndice na árvore T . 2. Em seguida, identificamos seu vértice vizinho t1 para ser o primeiro elemento do código Prüfer. 3. Removemos s1 e sua aresta incidente em T1 dando origem à árvore T2. Nas demais iterações temos os seguintes passos. A cada instante i, 1. O vértice si é determinado e seu vértice vizinho ti passa a integrar a i-ésima posição do código Prüfer. 2. Em seguida, si é removido da árvore Ti, através da operação Ti − si, dando origem a uma nova árvore Ti+1. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.3 Árvores de Espalhamento 139 Este processo pára após a execução da iteração n− 2, i.e., quando sobrarem apenas dois vértices na árvore. Neste momento temos todos os vizinhos dos vértices selecionados e por conseguinte uma seqüência de tamanho n− 2 que corresponde ao código Prüfer. Figura 6.10: Árvore usada para o cálculo do código Prüfer. Os passos realizados para obter o código Prüfer da árvore ilustrada na Figura 6.10 são mostrados na Tabela 6.1. Esta tabela mostra a árvore cor- rente Ti, através apenas de seus vértices, o vértice selecionado si e seu vértice vizinho ti, e o código Prüfer corrente. Como a árvore possui 9 vértices, este processo tem apenas 7 iterações. Ao final da sétima iteração temos o código Prüfer para T . É importante enfatizar que este código permite distinguir a árvore das demais, i.e., nenhuma outra árvore de 9 vértices com os rótulos de 1− 9 possui este código. Iteração i Árvore Ti si ti código Prüfer 1 {1, 2, 3, 4, 5, 6, 7, 8, 9} 1 4 (4) 2 {2, 3, 4, 5, 6, 7, 8, 9} 3 4 (4, 4) 3 {2, 4, 5, 6, 7, 8, 9} 6 5 (4, 4, 5) 4 {2, 4, 5, 7, 8, 9} 7 2 (4, 4, 5, 2) 5 {2, 4, 5, 8, 9} 8 2 (4, 4, 5, 2, 2) 6 {2, 4, 5, 9} 2 4 (4, 4, 5, 2, 2, 4) 7 {4, 5, 9} 4 5 (4,4,5,2,2,4,5) Tabela 6.1: Passos realizados para obter o código Prüfer da árvore na Fi- gura 6.10 Existem alguns pontos interessantes no código que merecem destaque. Se analisarmos o código juntamente com sua árvore, veremos que cada vértice v This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 140 Árvores aparece no código d(v)− 1 vezes, onde d(v) é o grau do vértice v. Isso ocorre por alguns motivos. Primeiro é importante enfatizarque os vértices folha são usados apenas para a seleção dos vértices que irão compor o código, os quais correspondem aos vértices internos da árvore. Cada vértice interno v possuirá no máximo d(v)− 1 folhas, o que fará com que este vértice apareça no código exatamente d(v)− 1 vezes. Quando todas as suas d(v)− 1 folhas forem removidas ele próprio se tornará folha. Neste momento, ele apenas contribuirá com o processo informando o seu vértice vizinho que irá compor o código. A partir de um código Prüfer P , podemos recuperar a árvore associada da seguinte maneira. Primeiro, criamos um conjunto de vértices S que contenha todos os vértices da árvore que não aparecem no código P . Como para uma árvore com n vértices, temos sempre os rótulos de 1 a n, basta verificar quais rótulos não aparecem no código e adicioná-los a S. À cada iteração, o conjunto S sofrerá alterações na quantidade de seus elementos, por isso, usaremos o termo Si para representar o conjunto S no instante i. No primeiro passo de iteração, quando i = 1, o conjunto S1 contém todos os vértices originais de S. De forma análoga, temos o código intermediário Pi definido na iteração i, e quando i = 1, P1 é exatamente igual ao código original P . Além deles, usamos os termos si, que corresponde ao elemento de menor rótulo do conjunto Si, e o pi que corresponde sempre ao primeiro elemento do código Pi , i.e, o elemento mais à esquerda de Pi. A partir destas informações, a recuperação da árvore associada ao código Prüfer é feita pelos seguintes passos: 1. No passo inicial, i = 1, selecionamos o vértice s1, de menor ı́ndice do conjunto S1, e o primeiro elemento p1 do código P1 para compor a primeira aresta {s1, p1} da árvore que está sendo recuperada. 2. Em seguida, removemos s1 de S1, gerando o conjunto S2, e o primeiro elemento p1 de P1, gerando o código P2. Os passos seguintes seguem a mesma lógica, porém com uma sutil diferença. 1. Na iteração i, selecionamos o vértice si do conjunto Si e o primeiro elemento pi do código Pi. Estes elementos irão compor a aresta {si, pi}. Após isto, removemos si de Si e o elemento pi de Pi. Isto gerará o conjunto Si+1 e o código Pi+1. 2. Se pi não aparecer mais em Pi+1, então ele é adicionado a Si+1. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.3 Árvores de Espalhamento 141 O processo pára quando o código P for completamente processado, i.e., ele não possuir mais elementos. Neste momento, existirão apenas dois elementos no conjunto Si, os quais formarão a última aresta da árvore. A partir do código Prüfer P = (4, 4, 5, 2, 2, 4, 5), gerado anteriormente, a recuperação da árvore associada é dada através da seguinte seqüência de pro- cessamento mostrada na Tabela 6.2. Observe que na iteração 5, removemos o elemento 2 do código Prüfer corrente, P5. Como era a sua última aparição em P5, ele foi adicionado ao conjunto S6. O mesmo aconteceu com o elemento 4 na iteração 6 que foi adicionado ao conjunto S7. Todas as arestas geradas compõem o conjunto de arestas da árvore associada ao código Prüfer. Iteração i Pi pi Si si Aresta 1 (4, 4, 5, 2, 2, 4, 5) 4 {1, 3, 6, 7, 8, 9} 1 {1, 4} 2 (4, 5, 2, 2, 4, 5) 4 {3, 6, 7, 8, 9} 3 {3, 4} 3 (5, 2, 2, 4, 5) 5 {6, 7, 8, 9} 6 {5, 6} 4 (2, 2, 4, 5) 2 {7, 8, 9} 7 {2, 7} 5 (2, 4, 5) 2 {8, 9} 8 {2, 8} 6 (4, 5) 4 {2,9} 2 {2, 4} 7 (5) 5 {4,9} 4 {4, 5} 8 () {5, 9} {5, 9} Tabela 6.2: Recuperação da árvore T a partir do código Prufer Como existe uma função bijetora entre a árvore e seu respectivo código Prüfer, cada permutação dos elementos do código levará a uma árvore distinta da original, porém mantendo a mesma seqüência de graus. Ou seja, as duas árvores possuem os mesmos vértices com os mesmos graus por vértice porém com conjuntos distintos de arestas, já que existirão conexões diferentes entre os vértices. Por exemplo, se considerarmos o código P ′ = (2, 4, 5, 4, 2, 4, 5), que corresponde a uma permutação do código P = (4, 4, 5, 2, 2, 4, 5), encon- traremos uma árvore distinta da árvore mostrada na Figura 6.10. A árvore associada ao código P ′, mostrada na Figura 6.11, é recuperada através dos seguintes passos, mostrados na Tabela 6.3 A partir deste resultado conclúımos que : Dada uma seqüência de inteiros positivos d1, d2, . . . , dn totalizando 2n− 2, existem (n− 2)! Πni=1(di − 1)! This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 142 Árvores Iteração i Pi pi Si si Aresta 1 (2, 4, 5, 4, 2, 4, 5) 2 {1, 3, 6, 7, 8, 9} 1 {1, 2} 2 (4, 5, 4, 2, 4, 5) 4 {3, 6, 7, 8, 9} 3 {3, 4} 3 (5, 4, 2, 4, 5) 5 {6, 7, 8, 9} 6 {5, 6} 4 (4, 2, 4, 5) 4 {7, 8, 9} 7 {4, 7} 5 (2, 4, 5) 2 {8, 9} 8 {2, 8} 6 (4, 5) 4 {2,9} 2 {4, 2} 7 (5) 5 {4,9} 4 {4, 5} 8 () {5, 9} 8 {5, 9} Tabela 6.3: Recuperação da árvore associada ao código Prufer P ′ = (2, 4, 5, 4, 2, 4, 5). Figura 6.11: Árvore associada ao código Prüfer P ′ = (2, 4, 5, 4, 2, 4, 5). árvores que podem ser formadas a partir de um conjunto de n vértices tal que o grau do vértice i é di. Vimos anteriormente que a partir de uma árvore T = (V,A) com |V | = n, o código Prüfer P tem n − 2 elementos, onde cada vértice v ∈ V aparecerá no código exatamente d(v)− 1 vezes. Como cada permutação dos elementos de P corresponde a uma árvore, teremos uma quantidade de árvores igual ao número de permutações dos elementos de P , dado por (n− 2)! Πni=1(d(vi)− 1)! Portanto, a partir dos vértices da árvore da Figura 6.10, temos a seqüência de graus 4, 3, 3, 1, 1, 1, 1, 1, 1, onde o grau 4 está associado ao vértice 4, e o grau três está associado aos vértices 2 e 5. Portanto, o vértice 4 aparecerá três This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.3 Árvores de Espalhamento 143 vezes no código enquanto que os vértices 2 e 5 aparecerão duas vezes cada. Os demais vértices aparecerão zero vezes no código, pois correspondem a vértices folha. Usando esta informação, a quantidade de árvores que podemos gerar com os vértices, mantendo os graus definidos acima, é igual a 7! 3!2!2! = 210 árvores As Figuras 6.10 e 6.11 ilustram duas árvores das 210 árvores posśıveis. De forma similar aos grafos, d́ıgrafos possuem árvores de espalhamentos, porém elas são orientadas. Uma árvore T é chamada de espalhamento orientada de um d́ıgrafo D, se o grafo subjacente de T é uma árvore de espalhamento do grafo subjacente de D. Basicamente, estamos eliminando a orientação tanto de T quanto de D para fazer esta verificação. Além disso, em d́ıgrafos encontramos os conceitos de árvore orientada de espalhamento de entrada e árvore orientada de espalhamento de sáıda, também chamadas apenas de árvore de espalhamento de entrada e árvore de espalhamento de sáıda. Uma Árvore de Espalhamento de Entrada Árvore de Espalhamento de Sáıda árvore T é uma árvore de espalhamento de entrada de um d́ıgrafo D, deno- tada por T−s , se possuir apenas o vértice s como vértice sumidouro, i.e., com grau de sáıda d+(s) = 0. De forma similar, T é uma árvore de espalhamento de sáıda de um d́ıgrafo D, denotada por T+s , se possuir apenas o vértice s como vértice fonte, i.e., com grau de entrada d−(s) = 0. Neste último caso, esta árvore também é uma árvore enraizada tendo como raiz o vértice s. As Figuras 6.12(b)-(d) mostram exemplos de árvores de espalhamento associa- das ao d́ıgrafo em (a). A árvore em (b) é uma árvore de espalhamento de entrada com vértice sumidouro r, enquanto que a árvore em (c) é uma árvore de espalhamento de sáıda com vértice fonte s. Embora a árvore em (d) seja uma árvore de espalhamento, ela não é nem de entrada nem de sáıda. De forma similar ao Teorema 6.8,o seguinte Teorema permite calcular a quantidade de árvores de espalhamento de sáıda de um dado d́ıgrafo. Teorema 6.10 ( [23]). Dados um d́ıgrafo simples D = (V,A) com V = {v1, v2, . . . , vn}, sua matriz de adjacência L = [di,j], onde di,j = 1 se (vi, vj) ∈ A e 0 se (vi, vj) /∈ A, e sua matriz de graus de entrada M = [mi,j], onde mi,i = d −(vi) e mi,j = 0, para i 6= j, o número de árvores de espalhamento de sáıda de D com raiz no vértice vi é dado por T +(D, vi) = detQi onde Qi é a matriz resultante da eliminação da linha i e coluna i da matriz Q = M − L. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 144 Árvores (a) (b) (c) (d) Figura 6.12: Exemplos de árvores orientadas de espalhamento do d́ıgrafo ilustrado em (a). (b) e (c) correspondem às árvores de espalhamento de entrada e sáıda, respectivamente. (d) é uma árvore de espalhamento que não é nem de entrada nem de sáıda. Para facilitar a visualização da aplicação deste teorema considere o d́ıgrafo ilustrado na Figura 6.13(a). (a) (b) (c) (d) Figura 6.13: Exemplos de árvores de espalhamento de sáıda do d́ıgrafo ilus- trado em (a). (b)-(d) mostram as suas árvores de espalhamento de sáıda com raiz no vértice v1. Inicialmente calculamos as matrizes de adjacência L e de graus M , as quais são mostradas abaixo. L = 0 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 e M = 2 0 0 0 0 2 0 0 0 0 3 0 0 0 0 1 A matriz Q resultante da subtração da matriz M pela matriz L é dada This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 6.3 Árvores de Espalhamento 145 por Q = 2 −1 −1 0 0 2 −1 0 −1 −1 3 −1 −1 0 −1 1 A quantidade de árvores de espalhamento de sáıda de D com raiz no vértice v1 é dado T +(D, v1) = detQ1 onde Q1 é a matriz resultante da eliminação da linha 1 e coluna 1, relativa ao elemento q1,1, da matriz Q, i.e., T +(D, v1) = det ∣∣∣∣∣∣∣ 2 −1 0 −1 3 −1 0 −1 1 ∣∣∣∣∣∣∣ = 3. ou seja, o d́ıgrafo D possui 3 árvores de espalhamento de sáıda com raiz no vértice v1, as quais são mostradas nas Figuras 6.13(b)-(d). O teorema seguinte permite calcular o número de árvores de espalhamento de entrada e sáıda de um multigrafo direcionado. Teorema 6.11 ( [23]). Dados um multigrafo direcionado D = (V,A) com V = {v1, v2, . . . , vn}, sua matriz de adjacência L = [di,j], onde di,j é a quan- tidade de arcos que partem de vi e atingem vj, com di,i = 0,∀ i, e sua matriz de graus de entrada M = [mi,j], onde mi,i = d −(vi) e mi,j = 0, para i 6= j, o número de árvores de espalhamento de sáıda de D com raiz no vértice vi é dado por T +(D, vi) = detQi onde Qi é a matriz resultante da eliminação da linha i e coluna i, relativos ao elemento qi,i, da matriz Q = M − L. Considerando a matriz de graus de sáıda de D, como N = [ni,j], onde ni,i = d +(vi) e ni,j = 0, para i 6= j, o número de árvores de espalhamento de entrada de D com sumidouro no vértice vi é dado por T −(D, vi) = detRi onde Ri é a matriz resultante da eliminação da linha i e coluna i, relativos ao elemento ri,i, da matriz R = N − L. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 146 Árvores 6.4 Exerćıcios Exerćıcio 6.1. Determine o número de vértices de uma árvore enraizada p-ária completa de altura h. Exerćıcio 6.2. Determine a altura h de uma árvore p-ária com l folhas. Exerćıcio 6.3. Determine o número de arestas de uma floresta que possui t árvores e n vértices. Exerćıcio 6.4. Mostre que se um grafo G é uma árvore com ∆(G) ≥ k, então G possui no mı́nimo k vértices folha. Exerćıcio 6.5. Mostre que toda árvore com exatamente dois vértices de grau 1 é um caminho. Exerćıcio 6.6. Determine o número de vértices internos e de folhas de uma árvore p-ária cheia. Exerćıcio 6.7. Determine o número de vértices e de folhas de uma árvore p-ária cheia com i vértices internos. Exerćıcio 6.8. Determine o número de vértices de uma árvore p-ária cheia com l folhas. Exerćıcio 6.9. Mostre que os vértices de origem e de destino do mais longo caminho em uma árvore possuem grau igual a 1. Exerćıcio 6.10. Determine o número de árvores de espalhamento que pode- mos gerar com o conjunto de vértices V = {1, 2, 3, 4, 5, 6, 7}, onde os vértices possuem os seguintes graus {3, 1, 2, 1, 3, 1, 1}, dados em ordem. Em seguida, defina dois códigos Prüfer e desenhe suas respectivas árvores. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Caṕıtulo 7 Planaridade Este caṕıtulo apresenta os principais conceitos e teoremas relacionados à área de planaridade em teoria dos grafos. Uma das perguntas que tentaremos responder com este estudo é a seguinte : é posśıvel desenhar um multigrafo em um plano de forma que suas arestas não se cruzem? Neste caso, como estamos focando nossa atenção ao desenho do grafo no plano de forma que o cruzamento das arestas não ocorra, podemos então levar os resultados que serão apresentados para o domı́nio dos multigrafos direcionados considerando sempre seu multigrafo subjacente, i.e., desconsiderando as orientações dos arcos. 7.1 Multigrafos Planares Antes de definirmos o que é um multigrafo planar, vamos imaginar o seguinte problema: existem três companhias que devem abastecer com gás, eletrici- dade e água três prédios diferentes, os quais podem ou não estar em frente destas companhias, através de tubulações subterrâneas. Estas tubulações po- dem estar à mesma profundidade? Outro problema que podeŕıamos tentar responder é: dada uma representação lógica de um circuito na forma de um grafo, será que ela pode ser impressa em uma placa f́ısica de forma que as conexões entre os elementos do circuito não se cruzem? Responder a estas perguntas equivale a verificar se o grafo associado ao problema é planar ou não. Definição 7.1. Um multigrafo G = (V,A) é planar sse existe uma função de mapeamento f que mapeia G para o espaço R2 de forma que a) cada This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 148 Planaridade vértice seja mapeado para um ponto distinto de R2 e b) cada aresta (u, v) seja mapeada para uma curva C(u,v) com extremidades em f(u) e f(v), onde nenhum par de curvas se intercepte, com exceção de suas extremidades. Usando a definição supramencionada, temos que Definição 7.2. Um multigrafo direcionado D = (V,A) é planar sse seu multigrafo subjacente é planar. Existem inúmeras funções que mapeiam os vértices e arestas de um mul- tigrafo para pontos em R2 de forma que as estas arestas não cruzem. Cada mapeamento define um desenho de G em R2. Os desenhos que obedecerem aos critérios definidos acima serão chamados de realização gráfica planar de G, ou simplesmente, realização planar de G. A Figura 7.1 mostra diferentesRealização Pla- nar desenhos do K3,2 no plano. Apenas as Figuras 7.1(b) e (c) são realizações planares. Note que é necessário apenas uma única realização planar para tornar um dado grafo planar. (a) (b) (c) Figura 7.1: Grafo K3,2 desenhado no plano. (b) e (c) correspondem a exem- plos de realização planar de K3,2. A realização planar de um dado multigrafo G divide o plano R2 em um conjunto regiões maximais chamadas de faces de G, onde qualquer par deFace de um Grafo pontos dentro desta região pode ser conectada por uma curva sem interceptar G. É natural chamar cada curva da realização planar de aresta. Cada aresta faz fronteira com 1 ou 2 faces. A Figura 7.2 ilustra uma realização planar onde as arestas a e b são as únicas a fazerem fronteira com apenas uma única face. Note que a região cinza não é delimitadapor uma face, porém ela faz fronteira com a realização planar. Devido a isso, ela é chamada ou de face ilimitada ou de face externa ao grafo. Assim, nesta realização planar temosFace Externa ao Grafo This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 7.1 Multigrafos Planares 149 Figura 7.2: Exemplo de Grafo Planar três faces F , F1 e F2, onde a face F é a face externa ao grafo. Cada face f possui um grau, denotado por d(f) 1 que é definido pela quantidade de arestas que estão na sua fronteira. Na realização planar ilus- Grau de uma Facetrada na Figura 7.2, as faces F , F1 e F2 possuem d(F ) = 7, d(F1) = 6 e d(F2) = 3 graus, respectivamente. Uma aresta que está na fronteira de ape- nas uma face é contada duas vezes no cálculo do grau daquela face, por isso a face F tem grau igual a 7, enquanto que a face F2 possui grau igual a 3. Se somarmos o grau de cada face de um dado grafo, veremos que cada aresta será contada exatamente duas vezes, ou seja, duas vezes ou pela mesma face ou uma vez por cada uma das faces que faz fronteira com a aresta. Assim temos o seguinte teorema, Teorema 7.1. Se G = (V,A) é multigrafo planar então∑ f∈F d(f) = 2|A|, onde F é o conjunto das faces da realização gráfica de G, incluindo a face externa a G. A partir da realização planar de um grafo planar G = (V,A) é posśıvel encontrar um grafo geométrico dual,G∗ = (V ∗, A∗) planar o qual é obtido da Grafo Geométrico Dual seguinte maneira. Cada face f de G, incluindo a face externa corresponderá a um vértice v∗f ∈ V ∗ em G∗. Dois vértices v∗f , v∗h ∈ V ∗ serão adjacentes em G∗ se as faces associadas a eles, f e h, compartilharem pelo menos uma 1Notação similar à usada para expressar o grau de um dado vértice. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 150 Planaridade aresta. Cada aresta a ∈ A em G dará origem a uma aresta a∗ ∈ A∗ que será incidente aos vértices em G∗ cujas faces correspondentes em G compartilham a. Como o grau de cada face f é definido pelo número de arestas que estão em sua fronteira, o vértice v∗f associado a esta face terá grau igual ao grau de f , i.e., d(f) = d(v∗f ) A Figura 7.3(a) mostra a realização planar de um grafo planar G e o (b) grafo dual correspondente. Para facilitar a legibilidade da figura, cada aresta mostrada em (a) é apresentada com o mesmo rótulo em (b). De forma similar, cada face em (a) estará associada ao vértice de mesmo rótulo em (b). Neste exemplo, o grafo dual associado é um pseudo grafo já que a aresta a1 em (a) faz fronteira apenas com a face F1. Como um grafo planar qualquer pode possuir várias realizações planares, então ele pode ter associado vários grafos geométricos duais, um grafo dual para cada uma de suas realizações planares. A Figura 7.4 mostra (a) outra realização planar do grafo G. Note que o (b) grafo geométrico dual correspondente é diferente daquele ilustrado na Figura 7.4(b). (a) (b) Figura 7.3: Exemplo de Grafo Geométrico Dual. (b) é o grafo geométrico dual da realização planar em (a). 7.2 Teorema de Euler Euler propôs uma expressão simples que relaciona o número de vértices, arestas e faces de um grafo conexo. Embora esta expressão faça referência a grafos simples, ela é diretamente aplicada a multigrafos. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 7.2 Teorema de Euler 151 (a) (b) Figura 7.4: Exemplo de Grafo Geométrico Dual. (b) é o grafo geométrico dual da realização planar em (a). Teorema 7.2 (Teorema de Euler - Grafos Conexos). Seja G = (V,A) um grafo conexo planar com f faces e n vértices, i.e., |V | = n, e m arestas, i.e., |A| = m, então n−m+ f = 2 Para grafos desconexos com p componente conexos temos o seguinte teo- rema, Teorema 7.3 (Teorema de Euler - Grafos Desconexos). Seja G = (V,A) um grafo planar com p componentes conexos, f faces e n vértices, i.e., |V | = n, e m arestas, i.e. |A| = m, então n−m+ f = p+ 1 Note que quando p = 1, o grafo é conexo, então temos a expressão defi- nida no Teorema 7.2. A partir destes teoremas podemos concluir que qual- quer realização planar de um dado grafo particionará o espaço R2 na mesma quantidade de regiões, Corolário 7.1. Todas as realizações planares de um multigrafo G planar conexo ou não têm o mesmo número de faces. Além disso, usando os teoremas supracitados podemos encontrar ex- pressões que relacionam o número de vértices ao de arestas de um dado This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 152 Planaridade multigrafo sem fazer referência expĺıcita ao número de faces. Inicialmente, vamos considerar um multigrafo conexo G = (V,A) planar com |V | ≥ 3 com faces delimitadas por exatamente 3 arestas. Um exemplo é ilustrado na Figura 7.5. Usando o Teorema 7.1 temos, Figura 7.5: Exemplo de Grafo Planar com todas as faces com grau 3. 3f = 2m onde f é o número de faces de G e m = |A|. Se em G, algumas faces tiverem grau maior que 3, sabemos que 3f ≤ 2m A partir do teorema de Euler para grafos conexos, temos f = 2− n+m o que nos leva a 3(2− n+m) ≤ 2m resultando na seguinte desigualdade m ≤ 3n− 6 Se usarmos esta desigualdade para testar a planaridade do grafo K5 ob- teremos o seguinte resultado, 10 ≤ 3.5− 6→ 10 ≤ 9. o que é falso e mostra que K5 não é planar. Note que K5 possui 5 vértices e 10 arestas. Este resultado nos leva ao seguinte teorema. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 7.2 Teorema de Euler 153 Teorema 7.4. K5 não é planar. Entretanto esta desigualdade não se aplica ao grafo K3,3. Como K3,3 possui 6 vértices e 9 arestas, a desigualdade acima resultaria em 9 ≤ 3.6− 6→ 9 ≤ 12 o que nos leva a uma conclusão errada, pois K3,3 não é um grafo planar. Esta conclusão errada foi oriunda da desigualdade que aplicamos. Anterior- mente assumimos que os grafos possuiriam faces delimitadas por no mı́nimo 3 arestas, porém o grafo K3,3 não possui faces triangulares. Ele é um grafo bipartido e cada uma de suas faces é delimitada por no mı́nimo 4 arestas. Assim, a nossa desigualdade inicial deve ser alterada para considerar grafos com faces que tenham grau no mı́nimo igual a 4. Isso nos leva a 4f ≤ 2m→ 2f ≤ m Novamente usando o teorema de Euler para grafos conexos, temos f = 2− n+m o que nos leva a 2(2− n+m) ≤ m resultando na seguinte desigualdade m ≤ 2n− 4 Realizando novamente o teste de planaridade do grafo K3,3 com esta nova desigualdade, encontramos 9 ≤ 2.6− 4→ 9 ≤ 8 Assim, chegamos ao seguinte teorema Teorema 7.5. K3,3 não é planar. Um fato curioso é que os grafos Kn com n ≤ 4 assim como os grafos Kp,q com p ≤ 3 e q ≤ 2 são planares. Porém grafos Kn com n ≥ 5 ou Kp,q, com p, q ≥ 3 não são. Isso se deve ao fato de que Kn, com n > 5, contém um subgrafo K5 enquanto que o grafo Kp,q com p, q ≥ 3 contém um subgrafo K3,3. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 154 Planaridade 7.3 Teorema de Kuratowski Teorema 7.6 (Teorema de Kuratowski). Um grafo G = (V,A) é planar sse não contém um subgrafo que pode ser contráıdo aos grafos K5 ou K3,3 através de sucessivas operações de arco-contração. Dado um grafo G = (V,A), uma operação de arco-contração em uma aresta a = (v, u) ∈ A onde ou d(v) ou d(u) é 2, leva a um grafo isomórfico ao grafo reduzido a partir de G pela operação de supressão do vértice (ver Secão 2.2.8) de grau 2 que é extremidade de a (verifique!). Esta conclusão leva ao seguinte teorema Teorema 7.7 (Teorema de Kuratowski). Um grafo G = (V,A) é planarsse não contém um subgrafo homeomorfo a K5 ou K3,3. Dois grafos H1 e H2 são homeomorfos se eles podem ser obtidos a partir de um grafo G através de sucessivas operações de subdivisão e supressão(ver Seção 2.2.8). Note que a operação de subdivisão é a operação inversa da operação de supressão. A Figura 7.6(a) mostra o grafo de Petersen com as arestas a-e em destaque. Se aplicarmos a operação de arco-contração nestas arestas, obteremos o grafo K5. Logo, o grafo de Petersen não é planar. A Figura 7.6(b) ilustra outro exemplo de grafo não planar. Se realizarmos operações de arco-contração nas arestas a-d obteremos o grafo K3,3. Note que o resultado seria o mesmo se tivéssemos realizado a operação de supressão dos vértices em cinza. 7.4 Exerćıcios Exerćıcio 7.1. Mostre que se G = (V,A) é um grafo planar conexo onde cada face de G é um t-ćırculo então m = t(n− 2) (t− 2) onde n = |V | e m = |A|. Exerćıcio 7.2. Mostre que se todas as faces de uma realização planar de um grafo planar G têm grau par então o grafo geométrico dual G∗ correspondente será euleriano. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 7.4 Exerćıcios 155 (a) (b) Figura 7.6: Exemplos de grafos não planares. Exerćıcio 7.3. Mostre que se G = (V,A) um grafo planar com p compo- nentes conexos, f faces e n vértices, i.e., |V | = n e m arestas,i.e. |A| = m, então n−m+ f = p+ 1 Exerćıcio 7.4. Mostre que qualquer árvore T com n ≥ 1 vértices possui uma única realização planar. Exerćıcio 7.5. Mostre que o grafo obtido a partir da remoção de uma aresta qualquer do grafo K3,3 é um grafo planar Exerćıcio 7.6. Mostre que o grafo obtido a partir da remoção de uma aresta qualquer do grafo K5 é um grafo planar Exerćıcio 7.7. Mostre que se todos os ciclos de um grafo conexo planar G = (V,A) possuirem pelo menos k arestas então |A| ≤ k k − 2 (|V | − 2) a seguinte o grafo obtido a partir da remoção de uma aresta qualquer do grafo K5 é um grafo planar Exerćıcio 7.8. Mostre que todo grafo roda Wn é isomórfico ao seu grafo geométrico dual. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 156 Planaridade This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Caṕıtulo 8 Coloração Este caṕıtulo discute os principais conceitos relacionados aos problemas de coloração de grafos. Algumas das perguntas que tentaremos responder são se dado um grafo G é posśıvel ou não colorir seus vértices com uma quanti- dade limitadas de cores de forma que cada vértice adjacente tenha uma cor diferente; ou a partir de um grafo G, a quantidade de maneiras que podemos colorir as arestas de G de forma que arestas incidentes em um mesmo vértice tenham cores diferentes. Respostas a estas perguntas são importantes em di- versos problemas combinatórios. Um exemplo clássico é o seguinte: imagine que devamos reunir pessoas para participarem de um ou mais comitês de ava- liação em uma determinada conferência. Qual deve ser o escalonamento de horários para o encontro dos membros destes comitês para permitir que todos os membros participem de todas as atividades realizadas por seus respectivos comitês? 8.1 Grafos Coloŕıveis Embora o problema de coloração de grafos seja abstrato, as cores usadas para colorir um grafo podem ter inúmeros significados. Elas podem repre- sentar diferentes tipos de informação como horários, recursos, atividades, entre outros. Para o problema de escalonamento mencionado anteriormente, temos que inicialmente modelar as instâncias do problema como um grafo. Cada comitê corresponderá a um vértice no grafo, e dois vértices serão ad- jacentes sse os comitês correspondentes possuirem pessoas em comum. A Figura 8.1(a) mostra uma instância deste problema. Nela existem 9 comitês This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 158 Coloração e cada um deles está associado a um vértice do grafo. Pessoas que participam de múltiplos comitês impõem restrições que são representadas pelas arestas deste grafo. Por exemplo, a aresta entre os vértices 1 e 2 indica que existe pelo menos uma pessoa participa de ambos os comitês. O mesmo acontece, por exemplo, na aresta entre os comitês 5 e 4. Os triângulos existentes no grafo podem estar indicando que uma ou mais pessoas participam dos três comitês associados aos vértices destes triângulos. Este é o caso do triângulo formado pelos vértices 5, 4 e 9. (a) (b) Figura 8.1: Exemplo de Coloração. (b) é uma posśıvel coloração dos vértices do grafo em (a). A partir deste grafo devemos colorir seus vértices. Cada cor estará associ- ado a um horário espećıfico. A solução mais direta seria atribuir um horário para cada vértice, porém não seria a melhor solução posśıvel. Cada horário pode implicar em custos. Assim concentrar os encontros dos comitês, fazendo com que alguns sejam realizados em sessões paralelas, fará com que a quan- tidade de horários usados seja menor impactando possivelmente a loǵıstica do evento. Como dito, as arestas impõem restrições ao nosso problema. Por exemplo, a aresta entre os vértices 1 e 2 informa que pelo menos uma pessoa participa destes dois comitês. Assim eles devem ser reunir em horários dife- rentes. Note que este não é o caso para os comitês 5 e 6 ou 9 e 3. Portanto, uma posśıvel coloração do grafo ilustrado na Figura 8.1(a) é mostrada em (b). Note que foram usadas apenas 3 cores, ou seja, 3 horários diferentes é o suficiente para que todos os comitês consigam se reunir de forma que cada This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 8.1 Grafos Coloŕıveis 159 participante participe das reuniões dos seus respectivos comitês. Na solução mais direta, a resposta seria 9 horários. Então, os vértices deste grafo poderiam ser coloridos com no mı́nimo 3 e no máximo 9 cores diferentes. Existem inúmeras maneiras de associarmos as cores aos vértices de forma que vértices adjacentes tenham cores diferentes. A Figura 8.1(b) mostra apenas um exemplo k-coloração Definição 8.1. Uma k-coloração de um grafo G = (V,A) é uma uma função de rotulamento f : V → S, onde S correspondem a um conjunto de cores e |S| = k. Os vértices associados a uma cor formam uma classe de cores. Definição 8.2. Uma k-coloração é própria se os vértices adjacentes de um grafo tiverem rótulos (cores) diferentes. Um grafo é k-coloŕıvel se ele tem uma k-coloração própria. O número cromático χ(G) é o menor k tal que G Número Cromáticoé k-coloŕıvel. Em uma coloração própria, cada classe de cores corresponde a um con- junto independente. Na Figura 8.1(b), podemos notar que os vértices 2,5,6 e 8 não são adjacentes entre si e por isso possuem a mesma cor. Logo se um dado grafo G é k-coloŕıvel, então seu conjunto de vértices está sendo particionado em k conjuntos independentes. Grafo k-coloŕıvel x Grafo k- partido Note que o fato de um grafo ser k-coloŕıvel não implica que ele seja um grafo k-partido. Como vimos na Seção 4.2, para que um grafo seja k-partido, ele deve obedecer a alguns critérios, entre eles aquele que define que k é o menor número de particionamentos dos vértices do grafo de forma que cada partição corresponda a um conjunto independente. Essa restrição é impor- tante, caso contrário teŕıamos classificações problemáticas. Por exemplo, qualquer grafo com n vértices pode ser colorido propriamente com n cores, entretanto isso não o torna n-partido. Um grafo ciclo Cn, com n par, é um grafo bipartido e pode ser colorido propriamente com n coresdiferentes, porém sabemos que χ(Cn) = 2 para n par. Note que como as definições acima focam na adjacência e coloração dos vértices, elas são diretamente aplicadas a multigrafos , porém não a pseudografos. Pseudografos permitem laços e Multigrafos x Coloraçãopor isso não são coloŕıveis. Pseudografos x Coloração Apesar de termos destacado que um grafo k-coloŕıvel não implica que ele seja um grafo k-partido, temos que um grafo G com número cromático χ(G) = k implica que o grafo seja k-partido. Neste caso, χ(G) define a menor quantidade de cores que podemos usar para colorir um grafo propriamente, e consequentemente o menor particionamento dos vértices de G de forma que cada partição corresponda a um conjunto independente. Assim temos que This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 160 Coloração Teorema 8.1. Um grafo G é k-partido sse seu número cromático for igual a k, i.e., χ(G) = k. A Figura 8.2 ilustra uma posśıvel coloração para o grafo de Petersen. Este grafo é 3-partido logo seu número cromático é 3. Se olharmos apenas os ciclos destacados nesta figura veremos que eles possuem uma quantidade ı́mpar de vértices, e devido a isto necessitam de 3 cores para serem coloridos propriamente. Figura 8.2: Exemplo de Coloração - Grafo de Petersen. Analisando as propriedades e caracteŕısticas de cada grafo podemos deri- var algumas relações envolvendo o número cromático. Por exemplo, a prin- cipal caracteŕıstica de um grafo colorido propriamente é que seus vértices adjacentes devem ter cores diferentes. Baseado nisto, qual seria a relação entre o número cromático e o grau dos vértices de um dado grafo? Conside- rando um grafo simples G = (V,A) com n vértices, saberemos que o grau de qualquer vértice estará no seguinte intervalo, 0 ≤ d(v) ≤ n− 1 o que indica que um dado vértice v pode ter nenhum vizinho ou ser vizinho de todos os outros vértices no grafo. O primeiro caso pode ser facilmente ilustrado por um grafo totalmente desconexo, enquanto que o último por um grafo totalmente conexo. No primeiro caso, a quantidade mı́nima de cores para colorir propriamente este grafo é igual a 1. Enquanto que no último, a quantidade seria igual a quantidade de vizinhos de v, já que cada vértice This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 8.1 Grafos Coloŕıveis 161 é adjacente aos demais, mais uma unidade, que seria a cor atribúıda a v. Assim, temos o seguinte teorema. Teorema 8.2. Para qualquer grafoG, o número cromático χ(G) é no máximo uma unidade a mais que o maior grau, ∆(G), de G, ou seja, χ(G) ≤ 1+∆(G). Continuando, qual seria a relação de um clique com o número cromático de um grafo? Um clique é um subgrafo completo maximal, i.e., é um subgrafo Número Cromático x Clique onde cada vértice é adjacente aos demais. Assim se um grafo possui um clique de tamanho 4, ele precisará de pelo menos 4 para ser colorido propriamente. Como um grafo pode possuir inúmeros cliques, convém relacionar o número cromático do grafo com o tamanho do maior clique. Portanto, Teorema 8.3. Para qualquer grafo G = (V,A), χ(G) ≥ ω(G) onde ω(G) é o número de clique1 de G; A Figura 8.1(a) mostra um exemplo onde o maior clique tem tamanho 3 dado pelo subgrafo que forma um triângulo. Na Figura 8.2, temos o grafo de Petersen com dois ciclos C5 que não compartilham arestas. Focando nossa atenção apenas para um dos ciclos veremos que o maior clique é definido por qualquer uma das arestas, ou seja, o maior clique terá tamanho igual a 2. Porém como o ciclo tem comprimento ı́mpar, ele será colorido propriamente com no mı́nimo 3 cores. Em relação aos conjuntos independentes, qual seria sua relação com o número cromático? Sabemos que particionando os vértices de um grafo em Número Cromático x Conjunto Inde- pendente conjuntos independentes encontraremos a quantidade de cores que podemos colorir propriamente os vértices do grafo. Neste caso, cada cor distinta será atribúıda a cada conjunto independente. Considere que tenhamos um grafo G = (V,A) e queiramos saber aproximadamente a quantidade de conjuntos independentes que ele possui, tendo como uma única informação o tamanho do maior conjunto independente. Se o maior conjunto independente tem tamanho α(G) e este grafo possui n vértices, i.e., |V | = n, então podemos assumir alguns cenários. O primeiro é que todos os conjuntos independen- tes têm o mesmo tamanho, o qual é igual a α(G), assim a quantidade de conjuntos independentes de G será igual a |V |/α(G). Esse é o caso de gra- fos k-partidos completos com conjuntos independentes de mesmo tamanho. 1Número de clique é definido na Seção 4.1 e corresponde ao tamanho do maior clique de um grafo. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 162 Coloração Porém, sabemos que esta situação ideal é bem espećıfica e é bem provável que existam mais conjuntos independentes com tamanhos inferiores à α(G). Um exemplo direto é o grafo ciclo C5, destacado em vermelho na Figura 8.2. O tamanho do maior conjunto independente é igual a 2 e qualquer particio- namento dos vértices em conjuntos independentes resultará em 3 conjuntos independentes maximais. A partir desta análise, temos o seguinte teorema como resultado. Teorema 8.4. Para qualquer grafo G = (V,A), χ(G) ≥ |V |/α(G), onde α(G) é o número de independência2 de G. 8.2 Grafos Aresta-Coloŕıveis Até o presente momento discutimos a coloração de vértices de um grafo. Porém, existem inúmeros problemas do mundo real que focam na coloração das arestas. De forma similar à coloração de vértices, as cores associadas às arestas podem possuir inúmeros significados, como capacidade, tempo, energia, etc. Abaixo temos algumas definições que são muito parecidas com àquelas apresentas na seção anterior. k-coloração de aresta Definição 8.3. Uma k-coloração de aresta de um grafo G = (V,A) é uma função de rotulamento f : A → S, onde S correspondem a um conjunto de cores e |S| = k. As arestas de uma mesma cor formam uma classe de cores. Definição 8.4. Uma k-coloração de arestas é própria se arestas incidentes em um mesmo vértice de um grafo tiverem rótulos (cores) diferentes. Um grafo é k-aresta coloŕıvel se ele tem uma k-coloração própria de arestas. ONúmero Cromático de Aresta número cromático de aresta χ′(G) é o menor k tal que G é k-aresta coloŕıvel. Este número também é chamado de ı́ndice cromático. Cada conjunto de arestas que possuem a mesma cor em uma k-coloração própria de arestas é formado por arestas que não compartilham vértices entre si. Isso nos leva a relacionar este conjunto ao conceito que vimos anterior- mente sobre emparelhamento na Seção 4.5, já que um emparelhamento dek-coloração própria de arestas x empa- relhamento um grafo G é um conjunto de arestas que não compartilham vértices entre si. Como em uma k-coloração própria de arestas, arestas incidentes em um 2Número de independência é definido na Seção 4.2 e corresponde ao tamanho do maior conjunto independente de um grafo. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 8.3 Polinômio Cromático 163 mesmo vértice devem ser coloridas com cores diferentes, podemos concluir di- retamente que para qualquer grafo G = (V,A), χ′(G) ≥ ∆(G). Os teoremas abaixo definem mais precisamente a relação entre χ′(G) e ∆(G). Teorema 8.5 ([24]). Se G é um grafo bipartido, então χ′(G) = ∆(G). Teorema 8.6 ([25]). Se G é um grafo simples, então χ′(G) ≤ ∆(G) + 1. Teorema 8.7 ([26]). Se G = (V,A) é multigrafo então χ′(G) ≤ ∆(G)+µ(G), onde µ(G) é a multiplicidade máximade aresta, i.e., µ(G) = maxa∈A µ(a) 3. 8.3 Polinômio Cromático A partir de um conjunto de cores dispońıveis é posśıvel determinar a quanti- dade de maneiras que um grafo pode ser colorido propriamente. Por exemplo, se tivermos dispońıvel um conjunto de cores S de tamanho k, a quantidade de maneiras que podemos colorir um vértice é igual a k. Se um grafo G = (V,A) é totalmente desconexo e tivermos que colorir seus vértices com as cores deste conjunto, G poderá ser colorido de kn maneiras diferentes, onde |V | = n. Ou seja, como para cada vértice temos k possibilidades e temos n vértices, então a quantidade de maneiras é definida como k.k.k . . . k︸ ︷︷ ︸ n vezes = kn Esta expressão relaciona o número de vértices com o número de cores dispońıvel na forma de um polinômio. Para um grafo mais geral, temos que Definição 8.5. Dado k ∈ N , onde N é o conjunto dos números naturais, e um grafo G = (V,A), χ(G; k) é o número de maneiras que podemos colorir propriamente G com um conjunto S = {1, 2, . . . , k} de cores de forma que nem sempre todas as cores sejam usadas pela função f : V → S. Polinômio CromáticoA função χ(G; k) também é chamada de polinômio cromático de G quando é definida em função de k. No caso do grafo desconexo com n vértices ilustrado anteriormente, temos χ(K̄n; k) = k n 3O conceito multiplicidade de aresta é definido na Seção 1.1. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 164 Coloração Quando k < χ(G) então χ(G; k) = 0, i.e., a quantidade de cores dispońıveis para colorir propriamente o grafo é menor que seu número cromático. Porém, se k ≥ χ(G) então χ(G; k) > 0. Como exemplo, vamos considerar que existam k cores dispońıveis no con- junto S, i.e., |S| = k, para colorir o grafo G1 ilustrado na Figura 8.3(a). Para determinar o polinômio cromático χ(G1; k) temos que saber a quantidade de maneiras que temos para colorir cada um dos vértices de G1. Neste exemplo, o vértice a pode ser colorido por qualquer uma das k cores. Porém, o vértice b só pode ser colorido por k − 1 cores, já que uma das cores do conjunto S já foi atribúıda ao vértice a. Como o vértice c é adjacente apenas ao vértice b, podemos considerar que existem dispońıveis k − 1 cores já que uma das cores de S foi atribúıda ao vértice b. Assim, multiplicando estes resultados temos o seguinte polinômio cromático χ(G1, k) = k(k − 1)(k − 1) = k(k − 1)2. (a) (b) Figura 8.3: Coloração de Grafos. (a) árvore com 3 vértices. (b) grafo com- pleto K3. Por outro lado, o grafo G2, ilustrado na Figura 8.3(b), é um grafo com- pletoK3. De forma similar ao processo feito anteriormente, podemos começar determinando a quantidade de cores que podemos associar ao vértice a. Como ainda não atribúımos nenhuma cor a qualquer vértice, o vértice a pode ser colorido por qualquer uma das k cores, enquanto que o vértice b só pode ser colorido por k − 1 cores, já que uma das cores do conjunto S já foi atribúıda ao vértice a. Porém para o vértice c, temos uma pequena mudança em relação à solução anterior. O vértice c é adjacente agora aos vértices a e b, e já associamos uma cor a cada um destes vértices. Então temos agora apenas k − 2 cores dispońıveis. Assim, multiplicando estes resultados temos o seguinte polinômio cromático χ(G2; k) = k(k − 1)(k − 2) = k3 − 3k2 + 2k. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 8.3 Polinômio Cromático 165 Generalizando este último resultado para grafos completos com n vértices, Kn, temos χ(Kn, k) = k.(k − 1).(k − 2) . . . (k − n+ 1), ou seja, χ(Kn; k) = ( k n ) n! Teorema 8.8. Se T = (V,A) é uma árvore com n vértices, |V | = n, e k é o número de cores dispońıveis, k ∈ N , então χ(T ; k) = k(k − 1)n−1. Considere a árvore ilustrada na Figura 8.4 e um conjunto S, com |S| = k e k ≥ 2. Escolhemos inicialmente qualquer vértice. Para facilitar a aplicação do teorema acima, iremos escolher o vértice a. Este vértice pode ser colorido com qualquer uma das k cores dispońıveis. Os demais vértices serão coloridos tendo como base este vértice inicial. Assim, o vértice b por sua vez pode ser colorido com qualquer uma das k− 1 cores restantes dispońıveis, já que uma das cores de S já foi atribúıda ao vértice a. Seguindo a ordem, o vértice c pode ser colorido com também k − 1 cores, pois ele é adjacente apenas ao vértice b, então ele pode repetir a cor do vértice a porém não pode usar a cor atribúıda ao vértice b. Seguindo este racioćınio, os demais vértices poderão ser coloridos com k−1 cores, e portanto, o polinômio cromático para a árvore T com 9 vértices, considerando |S| = k é χ(T ; k) = k(k − 1)8. Uma das maneiras para calcular o polinômio cromático de um grafo genérico é através da seguinte equação de recorrência cromática, Equação de Recorrência CromáticaTeorema 8.9. Se G = (V,A) é um grafo simples e a ∈ A então χ(G; k) = χ(G− a; k)− χ(G/a; k). Esta equação indica que o polinômio cromático de um grafo genérico G pode ser encontrado considerando o polinômio cromático de G sem uma dada aresta a subtráıdo do polinômio cromático do grafo resultante da operação de arco contração da aresta a de G. Note que uma aresta a = {u, v} impõe uma This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 166 Coloração Figura 8.4: Coloração de Árvores. restrição às possibilidades de cores que podem ser atribúıdas aos vértices u e v. A operação G− a leva a um grafo onde os vértices u e v podem assumir quaisquer cores inclusive a mesma cor. A operação G/a, como definida an- teriormente na Seção 2.2.7, contrai a aresta a unindo os vértices u e v. No cálculo do polinômio cromático, a intenção é fazer como que u e v tenham a mesma cor. Assim, neste cálculo temos χ(G − a; k) como o polinômio cromático onde u e v podem ter a mesma cor, o que não é permitido em G, pela própria presença de a, e o χ(G/a; k) como o polinômio cromático onde u e v possuem a mesma cor. Embora a expressão recursiva definida pelo teorema possa ser trabalhosa para grafos genéricos, ela facilita a obtenção do polinômio cromático de maneira mais sistemática. O exemplo seguinte mostrará a aplicação da equação de recorrência cromática. Considere o grafo G ilustrado na Figura 8.5(a). Selecionando a aresta a em vermelho e calculando G − a e G/a obtemos os grafos ilustrados em (b) e (c). Embora o resultado em (c) seja um multigrafo, como comentando ante- riormente, podemos desconsiderar as múltiplas arestas entre um mesmo par de vértices e focar nossa atenção a apenas na adjacência entre os vértices. Neste caso, o grafo em (c) seria visto como uma árvore e portanto χ(G/a) = k(k − 1)2. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 8.3 Polinômio Cromático 167 (a) (b) (c) Figura 8.5: Aplicação do equação de recorrência cromática no grafo G em (a) resultado inicialmente nos grafos (b) G− a e (c) G/a. O grafo ilustrado na Figura 8.5 (b) é um ciclo C4 e o seu polinômio cromático é obtido usando novamente a equação definida no Teorema 8.9. O cálculo de χ(C4; k) é feito selecionando uma aresta, por exemplo, a aresta b como mostrado na Figura 8.6(a). Isso nos leva, a χ(C4; k) = χ(C4 − b; k)− χ(C4/b; k). Os grafos C4 − b quanto C4/b são ilustrados respectivamente em (b) e (c). Como C4 − b é um caminho de comprimento 3, seu polinômio cromático é igual a χ(C4 − b; k) = k(k − 1)3. Por outro lado, C4/a é um grafo completo K3 e polinômio cromático é χ(C4/b; k) = k(k − 1)(k − 2). (a) (b) (c) Figura 8.6: Aplicação do equação de recorrência cromáticano grafo G em (a) resultado inicialmente nos grafos (b) G− a e (c) G/a. A partir destes resultados intermediários, temos χ(C4; k) = k(k − 1)3 − k(k − 1)(k − 2) This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 168 Coloração Substituindo este resultado χ(C4; k) = k(k − 1)(k2 − 3k + 3) Combinando estes resultados, temos χ(G; k) = k(k − 1)(k2 − 3k + 3)− k(k − 1)2 χ(G; k) = k(k − 1)(k2 − 4k + 4) que corresponde ao polinômio cromático do grafo ilustrado na Figura 8.5(a). 8.4 O teorema das quatro cores O teorema das quatro cores foi inicialmente posto como uma conjectura em 1850, e provado mais tarde em 1976 por Appel e Haken. Anterior a esta prova, muitas soluções incorretas foram propostas, em geral, muito dif́ıceis de serem contestadas. Alguns afirmam que a prova mais notória é aquela publicada em 1879 por Alfred Kempe. A prova elaborada por Kempe foi aceita como válida até 1890, quando Heawood encontrou um erro que tornava os argumentos de Kempe incompletos. Mesmo possuindo falhas a solução de Kempe foi a base para a proposta de Appel e Haken. A prova proposta por Appel e Haken foi muito controversa pois ela realizou uma análise minuciosa de inúmeros tipos de grafos um a um com o aux́ılio de um computador. A controvérsia decorreu do uso do computador. Alguns argumentavam que poderia existir um erro no programa usado para realizar os testes o que poderia levar a um resultado errado. O teorema como enunciado abaixo pode ser aplicado apenas a grafos pla- nares. A Figura 8.7 mostra um exemplo de grafo planar colorido com apenas 4 cores. Grafos não planares podem ter números cromáticos arbitrários. Teorema 8.10. O número cromático χ(G) para um grafo planar G é no máximo igual a 4. O problema das quatro cores está intimamente relacionado ao problema de coloração de mapas. Se considerarmos cada região do mapa como uma face de um grafo planar, conseguiremos extrair um grafo geométrico dual o qual é planar, onde cada uma destas regiões está associada a um vértice This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 8.5 Exerćıcios 169 Figura 8.7: Grafo planar colorido com 4 cores. no grafo dual. Como o grafo dual é planar, pelo Teorema 8.10, os vértices deste grafo podem ser coloridos propriamente com no máximo 4 cores. Por conseguinte, as regiões do mapa também poderão ser coloridas propriamente com no máximo 4 cores. Note que o grafo dual resultante não será um pseudografo, i.e., ele não possuirá laços, pois não existirão no mapa uma aresta fazendo fronteira com apenas uma única face, como nos exemplos ilustrados nas Figuras 7.3 e 7.4. 8.5 Exerćıcios Exerćıcio 8.1. Prove que χ(G) = ∆(G) + 1 sse G é ou um grafo completo ou um ciclo de comprimento ı́mpar Exerćıcio 8.2. Mostre que se G contém exatamente um ciclo de compri- mento ı́mpar então χ(G) = 3 Exerćıcio 8.3. Mostre que para um grafo simples G, se χ(G) = 2 então G é bipartido Exerćıcio 8.4. Qual é o número cromático de um grafo Km,n,p? Exerćıcio 8.5. Dê exemplo de grafos que possuem número cromático igual a 1. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 170 Coloração Exerćıcio 8.6. O que podemos dizer sobre um grafo que possui um subgrafo isomórfico a Kn? Exerćıcio 8.7. Mostre que qualquer grafo G com cintura g(G) = 2p, para p ∈ N tem χ(G) ≥ 3. Exerćıcio 8.8. Dados os grafos abaixo (a) (b) (c) (d) Figura 8.8: Grafos Exemplo. (a) G1 (b) G2 (c) G3 (d) G4 Determine o número cromático e o polinômio cromático considerando um conjunto de k cores. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Índice Árvore, 115 Árvore p-ária, 120 Árvore p-ária Cheia, 121 Árvore p-ária Completa, 120 Árvore Balanceada, 121 Árvore Binária, 120 Árvore Enraizada, 118 Árvore Geradora, 123 Árvore Rotulada, 117 Árvore de Espalhamento, 123 Árvores Isomórficas, 117 Índice de Wiener, 17 Acoplamento, 80 Altura de uma Árvore, 121 Biclique, 70 Bloco, 45 Código Prüfer, 128 Caminho, 13 Caminho Alternante, 82 Caminho de Aumento, 82 Caminho de Espalhamento, 15 Caminho Direcionado, 14 Casamento, 80 Centro de Árvores, 117 Centro de um Grafo, 16 Ciclo, 13 Ciclo Direcionado, 14 Cintura, 15 Circuito, 13 Circuito Direcionado, 14 Circunferência, 15 Clique em Dı́grafos, 64 Clique em Grafos, 63 Clique Máximo, 64 Co-Clique, 67 Cobertura de Fonte, 75 Cobertura de Sumidouro, 75 Cobertura de Vértices, 73 Cobertura Mı́nima de Vértices, 73 Cobertura Minimal de Vértices, 73 Componente Conexo, 43 Conjunto Dominante, 76 Conjunto Dominante de Entrada, 77 Conjunto Dominante de Sáıda, 77 Conjunto Dominante Gêmeo, 79 Conjunto Independente Máximo, 67 Corda, 15 Dı́grafo Bipartido Direcionado, 71 Dı́grafo Completo, 20 Dı́grafo k-partido, 70 Dı́grafo k-partido Completo, 71 Dı́grafo Linha, 30 Dı́grafo Semicompleto, 20 Dı́grafo Simples, 5 Diâmetro, 16 Dominância, 5 Emparelhamento, 80 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 172 ÍNDICE Emparelhamento Máximo, 80 Emparelhamento Perfeito, 80 Emparelhamentos em Dı́grafos, 80 Excentricidade, 16 Fator, 7 Floresta, 115 Floresta de Espalhamento, 123 Função de Incidência, 3 Função Multivalorada de Vizinhança, 7 Funções de Fechamento Transitivo, 42 Funções Estendidas de Vizinhança em Grafos e Dı́grafos, 40 Funções Multivalorada de Vizinhança Direta e Inversa, 8 Grafo (m,n)-Ramsey, 73 Grafo Bipartido Completo, 70 Grafo Caminho, 20 Grafo Ciclo, 20 Grafo completo, 19 Grafo Conexo, 43 Grafo Desconexo, 43 Grafo Direcionado Simples, 5 Grafo Estrela, 21 Grafo Homeomorficamente Reduzido, 28 Grafo Induzido, 7 Grafo K-Cubo, 21 Grafo k-partido, 67 Grafo K-partido Completo, 69 Grafo Linha, 30 Grafo não separável, 45 Grafo Orientado, 5 Grafo Reduzido, 28 Grafo Regular, 20 Grafo Roda, 21 Grafo Simples, 2 Grafo Simples Subjacente, 101 Grafo Subjacente a Pseudografo e Mul- tigrafos, 3 Grafo Subjacente ao Dı́grafo, 6 Grafo totalmente desconexo, 19 Grafo Trivial, 19 Grafo Vazio, 19 Grau, 8 Graus de Entrada e de Sáıda, 8 Método de Maghout, 87 Maior Grau, 8 Menor Grau, 8 Multigrafo, 2 Multigrafo Direcionado, 5 Número de Clique, 64 Número de Cobertura de Fonte, 75 Número de Cobertura de Sumidouro, 75 Número de Cobertura de Vértices, 73 Número de Dominância, 76 Número de Independência, 67 Número de Ramsey, 72 Números de Dominância de Entrada e de Sáıda, 78 Números de Dominância Gêmea, 79 Nı́vel de um vértice, 121 Operação Complemento, 25 Operação de Contração, 27 Operação de Decomposição, 29 Operação de Intersecção, 24 Operação de Junção, 23 Operação de Remoção, 27 Operação de União, 23 Operação Produto, 25 Operador Linha, 30 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 ÍNDICE 173 Passeio, 13 Passeio de Espalhamento, 15 Passeio Direcionado, 14 Passeio Direcionado Fechado, 14 Passeio Fechado, 13 Problema das Pontes de Königsberg, 1 Pseudografo, 2 Raio, 16 Relação de Dominância em Dı́grafos, 77 Relação de Dominância em Grafos, 76 Relação de Dominância Gêmea, 79 Semi-Caminho, 14 Semi-Passeio, 14 Semi-Trilha, 14 Seqüência de Graus, 9 Seqüência Gráfica, 10 Subárvore, 120 Subárvore Direita, 120 Subárvore Esquerda, 120 Subdivisão de Grafo, 29 Subgrafo e Subd́ıgrafo de Espelhamento, 7 Teorema de Menger-Dı́grafos, 55 Teorema de Menger-Grafos, 47, 49 Trilha, 13 Trilha de Espalhamento, 15 Trilha Direcionada, 14 Vértice Ancestral, 118 Vértice de Corte × Pseudografo, 45 Vértice Descendente, 118 Vértice Filho, 118 Vértice Folha, 118Vértice Fonte, 9 Vértice Interno, 118 Vértice Irmão, 118 Vértice Pai, 118 Vértice Raiz, 118 Vértice Saturado, 80 Vértice Sumidouro, 9 Vértices Adjacentes, 2 This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 174 ÍNDICE This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 Bibliografia [1] S. Hakimi, “On the realizability of a set of integers as degrees of the vertices of a graph,” SIAM J. Appl. Math, vol. 10, pp. 496–506, 1962. [2] G. Dirac, “Some theorems on abstract graphs,” Proc. Lond. Math. Soc., vol. 2, pp. 69–81, 1952. [3] O. Ore, “Note on hamilton circuits,” Amer. Mat. Monthly, vol. 67, p. 55, 1960. [4] K. H. Rosen, Discrete Mathematics and Its Applications. McGraw-Hill, 2007. [5] K. Menger, “Zur allgemeinen kurventheorie,” Fund. Math., vol. 10, pp. 96–115, 1927. [6] H. Whitney, “Congruent graphs and the connectivity of graphs,” Amer. J. Math., vol. 54, pp. 150–168, 1932. [7] H. Robbins, “A theorem on graphs with an application to a problem on traffic control,” American Mathematical Monthly, vol. 46, pp. 281–283, 1939. [8] D. Geller and F. Harary, “Connectivity in digraphs,” in Recent Trends in Graph Theory, Proceedings of the First New York City Graph Theory Conference, vol. 186, 1970, pp. 105–115. [9] G. Gutin and B. Sackler, “Finding a longest path in a complete multi- partite digraph,” SIAM J. Discrete Math, vol. 6, pp. 270–273, 1993. [10] G. C. Ferro and D. Ferrarello, “Polynomial ideals and directed graphs,” Commutative Algebra, 2007. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 176 BIBLIOGRAFIA [11] D. Amar and A. Raspaud, “Covering the vertices of a digraph by cycles of prescribed length,” Discrete Mathematics, vol. 65, pp. 273–290, 1995. [12] F. Chung and R. Graham, “On the cover polynomial of a digraph,” Journal of Combinatorial Theory, vol. 65, pp. 273–290, 1995. [13] G. Chartrand, F. Harary, and B. Q. Yue, “On the out-domination and in-domination numbers of a digraph,” Discrete Mathematics, 1999. [14] G. Chartrand, M. S. P. Dankelmann, and H. C. Swart, “Twin domina- tion in digraphs,” Ars Combinatoria, vol. 67, 2003. [15] C. Berge, “Two theorems in graph theory,” Proc. Nat. Acad. Sci., vol. 43, pp. 842–844, 1957. [16] P. Hall, “On representatives of subsets,” J. Lond. Mat., vol. 10, pp. 26–30, 1935. [17] D. König, “Graphen und matrizen,” Math. Lapok, vol. 38, pp. 116–119, 1931. [18] C. Jordan, “Sur les assemblages de lignes,” J. für die Reine und An- gewandte Mathematic, vol. 70, pp. 185–190, 1869. [19] G. Kirchhoff, “Über die auflösung der gleichungen, auf welche man bei der untersuchung der linearen verteilung galvanischer ströme geführt wird,” Ann. Phys. Chem., vol. 72, pp. 497–508, 1847. [20] ——, “Ueber die auflösung der gleichungen, auf welche man bei der un- tersuchung der linearen vertheilung galvanischer ströme geführt wird,” Ann. Phys. Chem., vol. 72, pp. 497–508, 1847. [21] A. Cayley, “A theorem on trees,” Quart. J. Math, vol. 23, pp. 376–378, 1889. [22] H. Prüfer, “Neuer beweis eines satzes über permutationen,” Arch. Math. Phys, vol. 27, pp. 727–744, 1918. [23] W. T. Tutte, “The dissection of equilateral triangles into equilateral triangles,” Proc. Cambridge Philos. Soc., vol. 44, pp. 463–482, 1948. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0 BIBLIOGRAFIA 177 [24] D. König, “Über graphen und ihre anwendung auf determinantentheorie und mengenlehre,” Math. Ann., vol. 77, pp. 453–465, 1916. [25] V. G. Vizing, “On an estimate of the chromatic class of a p-graph,” Diskret. Analiz, vol. 3, pp. 25–30, 1964. [26] C. Shannon, “A theorem on coloring the lines of a network,” J. Math. Phys., vol. 28, pp. 148–151, 1949. This work is licensed under CC BY-NC-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0