Baixe o app para aproveitar ainda mais
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.
Compartilhar