Baixe o app para aproveitar ainda mais
Prévia do material em texto
Razer Anthom Nizer Rojas Montaño TEORIA DOS GR AFOS Razer Anthom N izer Rojas M ontaño A Teoria dos Grafos (TG) é uma área de estudo e pesquisa que possibilita a resolução de problemas de diversos setores, como logística, comunicações, tubulações, genética, química, entre outros. O objetivo da TG é a representação de problemas, como por exemplo, as estruturas matemáticas, chamadas de grafos, e a aplicação de soluções algorítmicas, sempre considerando aspectos computacionais de desempenho, em tempo de execução e armazenamento. Neste livro, buscou-se um equilíbrio entre a teoria, necessária para o entendimento matemático dos grafos, e os algoritmos, que levam em consideração sua composição computacional na solução de problemas. Código Logístico 59398 Fundação Biblioteca Nacional ISBN 978-85-387-6636-0 9 7 8 8 5 3 8 7 6 6 3 6 0 Teoria dos Grafos Razer Anthom Nizer Rojas Montaño IESDE BRASIL 2020 © 2020 – IESDE BRASIL S/A. É proibida a reprodução, mesmo parcial, por qualquer processo, sem autorização por escrito do autor e do detentor dos direitos autorais. Projeto de capa: IESDE BRASIL S/A. Imagem da capa: EnvatoElements Todos os direitos reservados. IESDE BRASIL S/A. Al. Dr. Carlos de Carvalho, 1.482. CEP: 80730-200 Batel – Curitiba – PR 0800 708 88 88 – www.iesde.com.br CIP-BRASIL. CATALOGAÇÃO NA PUBLICAÇÃO SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ M765t Montaño, Razer Anthom Nizer Rojas Teoria dos grafos / Razer Anthom Nizer Rojas Montaño. - 1. ed. - Curitiba [PR] : IESDE, 2020. 126 p. : il. Inclui bibliografia ISBN 978-85-387-6636-0 1. Teoria dos grafos. 2. Algoritmos I. Título. 20-63940 CDD: 511.5 CDU: 519.17 Razer Anthom Nizer Rojas Montaño Doutor em Ciência da Computação e mestre em Informática pela Universidade Federal do Paraná (UFPR), na área de inteligência computacional. Graduado bacharel em Informática pela mesma instituição. Atualmente, é professor do curso superior de Tecnologia em Análise e Desenvolvimento de Sistemas e coordenador acadêmico do Setor de Educação Profissional e Tecnológica da UFPR. Tem experiência nas áreas de análise, projeto e desenvolvimento de software (com ênfase na plataforma Java e aplicações corporativas), aprendizado de máquina (regressão, classificação, clusterização, regras de associação, linguagem R, avaliação de modelos), planejamento em inteligência artificial (com ênfase em lógica matemática, SAT, redes de Petri e raciocínio sobre ações) e aplicações em mensuração florestal. Agora é possível acessar os vídeos do livro por meio de QR codes (códigos de barras) presentes no início de cada seção de capítulo. Acesse os vídeos automaticamente, direcionando a câmera fotográ�ca de seu smartphone ou tablet para o QR code. Em alguns dispositivos é necessário ter instalado um leitor de QR code, que pode ser adquirido gratuitamente em lojas de aplicativos. Vídeos em QR code! SUMÁRIO 1 Introdução ao estudo dos grafos 9 1.1 História e teoria dos grafos 9 1.2 Noções e definições básicas 12 1.3 Tipos de grafos 14 1.4 Vizinhança e grau 17 1.5 Isomorfismo 21 1.6 Representação computacional 27 1.7 Aplicações dos grafos 29 2 Conectividade 34 2.1 Grafos conexos e componentes 34 2.2 Caminhos e circuitos 36 2.3 Subgrafos 40 2.4 Cortes 42 3 Caminho mínimo e árvores geradoras 51 3.1 Busca em grafos e árvore geradora 51 3.2 Árvore Geradora Mínima 62 3.3 Caminho Mínimo 65 4 Grafos eulerianos e hamiltonianos 74 4.1 Grafos eulerianos 74 4.2 Grafos hamiltonianos 84 5 Problemas em Grafos 97 5.1 Cliques e Conjuntos Estáveis 97 5.2 Cliques Máximas 101 5.3 Coberturas 104 5.4 Planaridade 106 5.5 Coloração 111 Gabarito 118 APRESENTAÇÃO Vídeo A Teoria dos Grafos (TG) é uma área de estudo e pesquisa que possibilita a resolução de problemas de diversos setores, como logística, comunicações, tubulações, genética, química, entre outros. O objetivo da TG é a representação de problemas, como por exemplo, as estruturas matemáticas, chamadas de grafos, e a aplicação de soluções algorítmicas, sempre considerando aspectos computacionais de desempenho, em tempo de execução e armazenamento. Na área de estudo dos grafos, pode-se abordar o assunto com viés teórico ou algorítmico. Na abordagem teórica, tem-se um peso maior nos aspectos matemáticos dos grafos, dos teoremas e das provas. Na abordagem algorítmica, estudam-se os problemas, as maneiras de resolução (eficientes ou não) e a implementação computacional dessas soluções. Neste livro, buscou-se um equilíbrio entre a teoria, necessária para o entendimento matemático dos grafos, e os algoritmos, que levam em consideração sua composição computacional na solução de problemas. Os capítulos estão organizados de modo a apresentar os conceitos e problemas gradualmente. Inicia-se com os conceitos básicos necessários para equalizar o vocabulário e mostrar a estrutura matemática de um grafo, bem como sua história. Na sequência, conceitos mais avançados são expostos e alguns algoritmos são apresentados, além de teoremas pertinentes ao assunto. Em suma, essa obra traz informações básicas para a compreensão geral da Teoria dos Grafos em todas as áreas em que sua aplicação é possível. Bons estudos! Introdução ao estudo dos grafos 9 1 Introdução ao estudo dos grafos Neste capítulo, será introduzido o estudo sobre a teoria dos grafos, o qual está organizado da seguinte maneira: na Seção 1.1 é apresentado o surgimento da teoria dos grafos, mostrando que a alavanca para o seu desenvolvimento foram problemas reais que os cientistas tiveram na épo- ca. Na Seção 1.2 abordam-se as noções e definições básicas dos grafos, sua caracterização matemática e sua representação gráfica. Na Seção 1.3 são mostrados os vários tipos de grafos e suas definições. Já os conceitos de vizinhança, grau e caminhos serão tratados na Seção 1.4. Na Seção 1.5 exploram-se o conceito de isomorfismo em grafos e as suas caracterizações. Para executar algoritmos em grafos, também será necessário o estudo das representações computacionais, as quais estão descritas na Seção 1.6. Por fim, na Seção 1.7 são abordadas algumas aplicações de grafos em problemas do mundo real. 1.1 História e teoria dos grafos Vídeo Um grafo é uma estrutura que formaliza relações de interdependência exis- tentes entre os elementos de um conjunto e que possui uma representação grá- fica facilitadora do entendimento e desenvolvimento de alguns conceitos. Assim, os componentes de um grafo que representam os elementos de um conjunto em questão são diagramados como pontos e denominados como vértices ou nós. Para representar as relações entre os elementos do conjunto, traçam-se setas interli- gando os vértices, as quais são denominadas arestas ou arcos. Os grafos podem ser usados para resolver problemas em diversas áreas, por exemplo, na química, em que a estrutura de uma molécula pode ser represen- tada por meio de um grafo; nas redes de rotas de transporte (estradas, logís- tica etc.); nas redes de comunicações (rede de computadores local ou mesmo na internet); na distribuição de produtos e serviços, caso das tubulações de gás, água, petróleo etc. De acordo com Szwarcfiter (2018), o estudo dos grafos surgiu com o proble- ma das sete pontes de Königsberg. Em um artigo publicado por Leonhard Euler (1707–1783), em 1736, o autor discorreu sobre o assunto, apresentando uma so- lução negativa, a qual originou a teoria dos grafos. Königsberg – que até 1945 foi território da Prússia – é uma cidade cortada pelo Rio Prególia, com duas grandes ilhas e sete pontes entre elas. A região foi bombardeada durante a Segunda Guerra Mundial e tomada pelos russos, quando foi renomeada para Kaliningrado. Durante 10 Teoria dos Grafos esse período, duas das sete pontes existentes foram destruídas. Observe a seguir o mapa das pontes em 1652 (as em vermelho foram destruídas). Se rg ey M er ku lo v/ Sh ut te rs to ck Em 1736, Eulerprovou que não havia a possibilidade de passar por todas essas pontes sem repetir qualquer uma delas. Para comprovar essa tese, o estudioso desenhou o problema das pontes usando um diagrama como este: v4 v1 v2 v3 Grafo do problema das sete pontes de Königsberg Euler descobriu que só seria possível passar por cada ponte uma única vez caso hou- vesse nenhum ou dois pontos de onde saísse um número ímpar de caminhos. Assim, para que fosse possível chegar em um ponto e depois sair por uma aresta diferente, cada ponto deveria conter um número par de arestas (um para entrar, outro para sair). Os dois pontos com número ímpar de caminhos representam o início e o final do per- curso, pois não precisam de uma aresta para entrar e uma para sair. Se não houvesse um número ímpar de caminhos, o percurso começaria e terminaria no mesmo ponto. O autor, então, provou que para um grafo conexo ser euleriano, isto é, possuir um ciclo que passe por todas as arestas de um grafo somente uma vez, iniciando e terminando no mesmo vértice, todos os vértices precisam possuir um número par de arestas incidentes. O artigo de Euler foi considerado o primeiro resultado da teoria dos grafos, uma vez que continha o primeiro teorema provado dessa nova área, o qual determinou um método para solucionar problemas desse tipo. Introdução ao estudo dos grafos 11 Outros problemas também foram resolvidos pela teoria dos grafos, como a colo- ração de mapas. Determinar o mínimo de cores necessário para se colorir o desenho de um mapa era uma difícil missão, até que Francis Guthrie (1831–1899) conjecturou, em 1852, que era preciso, no mínimo, quatro cores. Mas apenas em 1976 essa hipó- tese foi comprovada por Kenneth Appel (1932–2013) e Wolfgang Haken (1928–), com a ajuda de um IBM 360. A solução de Appel e Haken foi a construção de um programa que verificava todos os possíveis exemplos de mapas (1936 ao todo), sendo esse o primeiro teorema matemático provado com o auxílio de um computador, o que tam- bém gerou controvérsia. A descoberta ficou conhecida como o teorema das quatro cores. A figura a seguir mostra o mapa do Brasil colorido com quatro cores, sendo os estados adjacentes coloridos com cores diferentes. Filip Bjorkm an/Shutterstock Apesar de o artigo de Euler ser o primeiro resultado da teoria dos grafos, o ter- mo foi utilizado pela primeira vez, com a conotação aqui apresentada, por James Joseph Sylvester (1814–1897) e Arthur Cayley (1821–1895). Em 1857, os estudiosos aplicaram os conceitos de grafos à química, enumerando isômeros de hidrocar- bonetos, visto que toda molécula também pode ser representada por um diagra- ma. O termo grafo apareceu nas palavras dos autores em um artigo publicado em 1878, no primeiro volume do American Journal of Mathematics Pure and Applied, na revista Nature. Em 1859, William Rowan Hamilton (1805–1865) elaborou um jogo chamado icosiano ou viagem à volta do mundo, inspirado pela prática de caixeiro-viajante. O objetivo era encontrar caminhos e circuitos no grafo dodecaédrico, satisfazendo determinadas condições, como achar um circuito que passasse uma única vez por cada vértice do grafo (conhecido como caminho hamiltoniano). Em 1930, Kazimierz Kuratowski (1896–1980) encontrou uma condição necessária e suficiente para a planaridade de um grafo (desenhar um grafo com arestas que não se cruzam). Já o primeiro livro didático sobre grafos foi escrito por Dénes König (1884–1944) em 1936. IBM 360 é um mainframe lan- çado pela empresa International Business Machines Corporation (IBM) em 1964. Trata-se de um dos primeiros computadores fabricados com a utilização de circuitos integrados. Saiba mais caixeiro-viajante: representante de vendas; uma pessoa que vendia produtos em outras cidades e que, para isso, fazia muitas viagens. Glossário dodecaedro: sólido contendo 12 faces, limitado por polígonos, com 30 arestas e 20 vértices. Glossário 12 Teoria dos Grafos Em 1962, Lester Randolph Ford (1886–1967) e Delbert Ray Fulkerson (1924– 1976) desenvolveram a teoria dos fluxos em redes, um dos mais importantes resul- tados da teoria dos grafos. Esse estudo é muito usado hoje em dia na distribuição de energia, na capacidade de redes de computadores, entre outras aplicabilidades, possibilitando o mapeamento e a análise dos fluxos em redes. Atualmente, os grafos aparecem em várias áreas e modelam problemas di- versos. O mapeamento de amigos em uma rede social é um exemplo disso, sen- do os vértices as pessoas e as arestas a relação de amizade entre elas. A própria internet pode ser vista como um grafo, em que cada dispositivo conectado é um vértice e cada conexão, com ou sem fio, é uma aresta. Até mesmo aplicativos de mapas usam algoritmos de grafos para traçar uma rota entre dois pontos e calcular tempos de viagem. Redes de telefonia, saneamento básico, distribuição de energia, transporte público, todos esses serviços são exemplos da aplicação de grafos. 1.2 Noções e definições básicas Vídeo Um grafo G é um par (V, A) em que V é um conjunto não vazio de vértices, tam- bém representado por V (G), e A é um conjunto finito de arestas, também represen- tado por A (G). Cada aresta é um par não ordenado (v, w) que pode ser denotado como vw ou wv, sendo v, w ∈ V. Uma aresta vw incide em v e w, sendo estes pontas da aresta (BOAVENTURA NETTO; JURKIEWICZ, 2009). No geral, usa-se uma representação gráfica de um grafo para facilitar o entendi- mento, por exemplo, o grafo G = (V, A): V = {v1, v2, v3, v4, v5} A = {(v1, v2), (v2, v3), (v2, v4), (v4, v5), (v2, v5), (v4, v4), (v1, v2)} O grafo G pode ser visto da seguinte maneira: v4 v5 v3 v2 v1 Figura 1 Grafo G Fonte: Elaborada pelo autor. Para facilitar o entendimento, pode-se nomear as arestas da seguinte forma: V = {v1, v2, v3, v4, v5} A = {a1, a2, a3, a4, a5, a6, a7} Tal que: a1 = (v1, v2 ), a2 = (v2, v3 ), a3 = (v2, v4), a4 = (v4, v5), a5 = (v2, v5), a6 = (v4, v4), a7 = (v1, v2) No filme Gênio Indomável, Will Hunting (Matt Damon) é faxineiro em uma univer- sidade e possui um grande talento para a matemá- tica. Em uma das cenas, o professor Lambeau (Stellan Skarsgård) deixa um problema de grafos no quadro como desafio para seus alunos de pós-graduação e Hunting o resolve, impressionando o professor e seus alunos. Direção: Gus Van Sant Jr. Estados Unidos: Miramax, 1997. Filme Introdução ao estudo dos grafos 13 Então, representa-se da seguinte maneira o que é chamado grafo rotulado: Figura 2 Grafo com arestas nomeadas Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 a6 a4 a5 a2 a7 a1 a3 Se no grafo G todas as suas arestas (v, w) são tais que v ≠ w e não existem duas arestas diferentes que incidem nos mesmos vértices, diz-se que o grafo é simples. O grafo com arestas nomeadas (Figura 2) não é simples, pois tem duas arestas en- tre os vértices v1 e v2, e o vértice v4 tem uma aresta com ele mesmo. Se um grafo é simples e possui arestas entre todos os seus vértices é denomina- do completo. Por exemplo, os grafos da Figura 3 são completos. Figura 3 Grafos completos v5v4 v1 v3 v2 v1 v2 v3v4v1 v3 v2v2 v1 Fonte: Elaborada pelo autor. Assim, o grafo G = (V, A) é completo se A = V2, em que V2 representa o conjunto de todos os pares não ordenados de elementos de V. Assim, G = (V, A) é completo se, e somente se, A v, w ∈ V, v ≠ w, E a ∈ A, a = (v, w) (Figura 4). Figura 4 Grafo completo Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 14 Teoria dos Grafos Os grafos completos são também denominados Kn, em que n é o número corres- pondente à quantidade de vértices. Assim, na Figura 3, tem-se K1, K2, K3, K4, K5. O complemento de um grafo G = (V, A) é o grafo G = (V, V2\A). Isto é, assumindo o grafo completo formado por todos os vértices V, o grafo complemento G é formado por todas as arestas resultantes da retirada das arestas A do grafo G. Por exemplo, seja o grafo G = (V, A), como na figura a seguir (Figura 5), seu com- plemento (Figura 6) é o grafoG = (V, V2\A). Figura 5 Grafo g Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 Figura 6 Complemento do grafo g Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 Essas definições apresentadas servem de base para o estudo dos grafos. Por meio delas, é possível elaborar problemas complexos de maneira correta, seguindo o formalismo matemático. 1.3 Tipos de grafos Vídeo Os grafos podem ser classificados em diversos tipos, de acordo com algumas características específicas. Essas podem ser estruturais, sendo direcionamento das arestas, ou na composição dos seus elementos, por exemplo, possuindo somente um vértice e nenhuma aresta. Relembrando a definição apresentada na Seção 1.2, um grafo simples não possui laços, isto é, arestas com pontas no mesmo vértice, nem arestas diferen- tes que incidem nos mesmos vértices, ou paralelas (Figura 7). Um pseudografo é um grafo que contém laços; já um multigrafo é um grafo que contém arestas paralelas. v4 v5 v3 Figura 7 Grafo simples Fonte: Elaborada pelo autor. v2 v1 O livro Uma Introdução Sucinta à Teoria dos Grafos é uma leitura complemen- tar que reforça os concei- tos básicos de grafos. FEOFILOFF, P.; KOHAYAKAWA, Y.; WAKABAYASHI, Y. São Paulo: Edusp, 2011. Livro Introdução ao estudo dos grafos 15 Ademais, estendendo a definição dos grafos, pode-se ter grafos com arestas direcionadas, em que uma aresta v, w conecta o vértice v a w e, portanto, é dife- rente da aresta (w, v), que conecta o vértice w a v. Nesse caso, tem-se um grafo orientado ou digrafo. Este último é representado graficamente com as arestas contendo setas (Figura 8). Também, é possível que os grafos possuam valores (pesos) nas arestas, sendo chamados, nesse caso, de grafo ponderado ou valora- do, podendo ou não ser direcionado (Figura 9). Figura 9 Grafo ponderado ou valorado Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 3 1 1 5 8 20 10 Figura 8 Digrafo ou grafo direcionado Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 Um grafo nulo é um grafo que possui um conjunto de vértices vazio, ou seja, G = (V, A), V = Ø. Já um grafo trivial possui apenas um vértice e nenhuma aresta. Um grafo regular é um grafo em que todos os vértices possuem o mesmo número de arestas incidentes (Figura 10). Outros exemplos de grafos regulares podem ser vistos na figura a seguir. É importante perceber, também, que qualquer grafo comple- to é regular, como observado na Figura 2. Figura 11 Grafos regulares Fonte: Elaborada pelo autor. Um grafo é conexo quando é possível estabelecer um caminho desde um vértice até qualquer outro vértice passando por arestas. Todos os grafos apresentados até agora são conexos, caso contrário, trata-se de um grafo desconexo. No exemplo a seguir, o vértice v3 faz parte do grafo, mas não tem aresta com nenhum outro vértice. Já na Figura 12-B, os vértices v3 e v5 possuem aresta entre si, mas não aresta com a outra parte do grafo, sendo, também, desconexo. Figura 10 Grafo regular Fonte: Elaborada pelo autor. v4 v3 v2 v1 16 Teoria dos Grafos Figura 12 Grafo desconexo v4 v5 v3 v2 v1 Fonte: Elaborada pelo autor. A – Exemplo de grafo com um vértice desconexo. B – Grafo com um subgrafo desconexo. v4 v5 v3 v2 v1 Um grafo é dito acíclico se não possui ciclos, isto é, quando não é possível caminhar de um vértice a vértices adjacentes até retornar à origem. O grafo simples da Figura 7 é cíclico, visto que se pode caminhar de v2 até v4 por uma aresta, então de v4 a v5 por ou- tra aresta e de v5 até v2. Caso contrário, é chamado de grafo acíclico, como na Figura 13. v4 v5 Figura 13 Grafo acíclico Fonte: Elaborada pelo autor. v3 v2 v1 Chama-se árvore um grafo simples, acíclico e conexo. Simples significa que não pode ter laços nem arestas paralelas; acíclico indica que não é possível caminhar entre os vértices partindo de v e chegando novamente em v; e conexo determi- na que todos os vértices precisam ser atingíveis por qualquer vértice. O grafo da Figura 13 também é uma árvore. Se o grafo for simples, acíclico, mas não conexo, é chamado de floresta, isto é, uma união disjunta de árvores. A Figura 14 apresenta uma floresta formada por três árvores. v4 v5 Figura 14 Grafo floresta Fonte: Elaborada pelo autor. v3 v7 v9 v6 v8 v2 v1 Introdução ao estudo dos grafos 17 Um grafo é chamado bipartido por ser separado em dois conjuntos de vérti- ces, V1 e V2, de modo que não haja arestas entre elementos do mesmo conjunto e que toda aresta de G una um vértice de V1 a outro de V2. Por exemplo, o grafo da Figura 15 é bipartido, pois é possível separar seus vértices em dois conjuntos V1 = {v1, v2} e V2 = {v3, v4, v5} sem que haja arestas entre {v1, v2}, nem arestas entre {v3, v4, v5} e todas as arestas conectam vértices de V1 e V2, ou seja, A (v, w) ∈ A, v ∈ V1 e w ∈ V2. A Figura 16 apresenta os subconjuntos V1 e V2. Figura 15 Grafo bipartido Fonte: Elaborada pelo autor. v4 v5 v2v1 v3 Figura 16 Grafo bipartido com os subconjuntos Fonte: Elaborada pelo autor. v4 v1 v3 v5 v2 V1 V2 Um grafo bipartido completo é um grafo bipartido em que há arestas en- tre todos os elementos de V1 e V2. Assumindo |V1| = m e |V2| = n, então, o grafo é denotado Km,n. Na Figura 17, pode-se observar alguns grafos bipartidos completos. K1,3 K2,3 K3,3 Figura 17 Grafos bipartidos completos Fonte: Elaborada pelo autor. O artigo Algoritmos para Grafos em C via Sedgewick, de Paulo Feofiloff, apresenta uma vasta gama de materiais básicos e avançados sobre grafos, todos com base no volume Graph Algorithms, da terceira edição do livro Algorithms in C, de Robert Sedgewick, que é um clássico na ciência da computação. Acesso em: 14 abr. 2020. https://www.ime.usp.br/~pf/algoritmos_para_grafos/ Artigo 1.4 Vizinhança e grau Vídeo Nesta seção serão apresentados alguns conceitos referentes à vizinhança e ao grau, que darão base para o estudo de problemas mais complexos. O número de vértices de um grafo (G = (V, A)) é representado por |V|, sendo a quantidade de elementos de V (G) denominada ordem do grafo G. Já o número de https://www.ime.usp.br/~pf/algoritmos_para_grafos/ 18 Teoria dos Grafos arestas de um grafo é representado por |A|, sendo a quantidade de elementos de A (G) denominada dimensão do grafo G. Por exemplo, qual a ordem e a dimensão do grafo da figura a seguir? Figura 18 Grafo G com arestas Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 a3 a1 a5 a2 a4 Pode-se visualizar, na Figura 18, a ordem cinco (quantidade de vértices) e a di- mensão cinco (quantidade de arestas). Dados dois vértices v e w e a aresta a = vw que os conecta, diz-se que a aresta a incide em v e incide em w. Considerando o grafo da Figura 18, a aresta a1 incide sobre os vértices v2 e v5. O par de vértices v e w é dito adjacente se conectado por uma aresta. Duas ares- tas são adjacentes quando incidem em um mesmo vértice. Por exemplo, no grafo da Figura 18, os vértices v4 e v3 não são adjacentes, pois não possuem uma aresta que os conecta. As arestas a2 e a4 são adjacentes, pois incidem no mesmo vértice v2. A vizinhança de um vértice é o conjunto de vértices adjacentes a v, denotado por vizinhos (v), sendo v não incluído nesse conjunto. A vizinhança fechada é o conjunto vizinhos [v] que é o conjunto vizinhos (v), incluindo-se v. Analisando o grafo da Figura 18, é possível perceber que a vizinhança de v2 são os vértices adjacentes a v2, nesse caso, {v1, v3, v4, v5}. Já a vizinhança fechada de v2 é a sua vizinhança incluindo v2, ou seja, {v1, v2, v3, v4, v5}. O grau de um vértice é o número de arestas incidentes em v, denotado por grau (v). Um vértice que possui grau zero é chamado isolado. No grafo da Figura 18 não há nenhum vértice isolado (grau zero); já o grau do vértice v3 é um e o grau do vértice v4 é dois. O grau de um grafo G é a soma dos graus de todos os seus vértices, denotado por d (G). Pode-se demonstrar facilmente com o seguinte teorema: Seja G = (V, A) um grafo não orientado, então:d (G) = ∑v∈V grau (v) = 2 * |A| Para saber o grau de um grafo, deve-se somar o grau de todos os seus vértices, isto é, a quantidade de arestas incidentes em cada vértice. Como cada aresta incide sobre dois vértices, cada aresta é sempre considerada duas vezes. Assim, o grau do grafo é o dobro do número de arestas. O grau máximo de um grafo é o grau do vértice de maior grau em V (G), deno- tado por ∆ (G). Já o grau mínimo de um grafo é o grau do vértice de menor grau em V (G), denotado por δ (G). Introdução ao estudo dos grafos 19 O grau do grafo da Figura 18 é dez, pois é a soma dos graus de todos os vértices. Percebe-se que é, também, igual ao dobro do número de arestas. O seu grau má- ximo é quatro, pois é o grau do vértice que contém o maior grau, que, nesse caso, é v2. Já o grau mínimo é um, pois v1 e v3 são os vértices com menor grau. Uma sequência de vértices v1,...,vk, tal que (vi, vi+1) ∈ A, 1 ≤ i < k, é denominada caminho ou passeio, quando v1 atinge ou alcança vk. Diz-se, ainda, que vk é atingível ou alcançável. Um caminho de k vértices é formado por k – 1 arestas, e o valor k – 1 revela o tamanho do caminho. Um ciclo é um caminho que começa e termina no mesmo vértice. Quando um caminho passa por todos os vértices do grafo, sem repetição, é chamado de caminho hamiltoniano. Este, se for um ciclo, então, é denominado de ciclo hamiltoniano, e o grafo que contém um ciclo hamiltoniano é conhecido como grafo hamiltoniano. Já quando um caminho passa por todas as arestas do grafo, sem repetição, é chamado de caminho euleriano. Este, se for um ciclo, então, é denominado de ciclo euleriano, e grafo que contém um ciclo euleriano é conhecido como grafo euleriano. No grafo da Figura 18, v1 é alcançável por meio de v5, pois consegue um caminho partindo de v5 e chegando a v1, por exemplo, v5, v4, v2 e v1. O tamanho desse caminho é três, que é o número de arestas presentes. A distância entre dois vértices, denotada por d (v, w), é o comprimento do menor caminho entre v e w. A excentricidade de um vértice de um grafo é o valor máximo da distância entre v e w para todo vértice w ∈ V. Define-se como centro de G o subconjunto dos vértices de excentricidade mínima. Assim, a distância entre os vértices v1 e v5, no grafo da Figura 18, denotada por d (v1, v5), é dois, pois, apesar de haver dois caminhos entre v1 e v5 – a saber, (v1, v2, v4, v5) e (v1, v3, v5) – o de menor comprimento é o último, que é dois. Os grafos direcionados (digrafo), conforme apresentado anteriormente, são aqueles em que as arestas são direcionadas, ou seja, são pares ordenados de vértices. Então, sendo G um grafo direcionado, a aresta (v, w) possui uma única direção de v para w. Define-se, também, o grau de saída de um vértice como sen- do o número de arestas que saem de v, e o grau de entrada de um vértice como sendo o número de arestas que chegam em v. Se um vértice no grafo G possui grau de entrada nulo, então, é chamado de fonte. Se possui grau de saída nulo, é chamado de sumidouro. O grafo da Figura 19 é um digrafo. O vértice v2 possui grau de saída dois e grau de entrada três; o vértice v3 é uma fonte, pois não possui arestas de entrada; e o vértice v5 é um sumidouro, pois não possui arestas de saída. Os conceitos de caminho e alcançabilidade de vértices tam- bém se aplicam aos digrafos, sempre levando em consideração as direções das arestas. Se um vértice alcançar todos os vértices, então, v é chamado de raiz do digrafo. Figura 19 Digrafo Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 3 1 1 5 8 20 10 20 Teoria dos Grafos Analisando-se o grafo da Figura 19, o vértice v1 é alcançável por meio de v3, pois há o caminho (v3, v2, v1). Já o vértice v4 não é alcançável por v3, pois não há caminho partindo de v3 que chega em v4, seguindo as orientações das arestas. Pelas particu- laridades desse grafo, nenhum de seus vértices consegue alcançar todos os outros, portanto, não há raiz. Seja G um digrafo, o grafo obtido pela retirada de todas as direções das arestas de G é um multigrafo não direcionado, conhecido como grafo subjacente de G. O grafo subjacente do grafo da Figura 19 é o grafo da Figura 20. v4 v5 v3 v2 v1 Figura 20 Grafo subjacente Fonte: Elaborada pelo autor. 3 1 1 5 8 20 10 Conforme apresentado anteriormente, uma árvore é um grafo sem ciclos (acíclico) e conexo (todas as arestas são alcançáveis). Se algum vértice possuir grau menor ou igual a um é chamado de folha, caso contrário, com grau maior que um, é denominado de vértice interior. Percebe-se que toda árvore com n vértices possui exatamente n – 1 arestas. Assim, um grafo T é uma árvore se, e somente se, existir um único caminho entre cada par de vértices de T. Uma árvore T = (V, A) é dita enraizada quando algum vértice v ∈ V é escolhido, portanto, chamado de raiz da árvore. Uma árvore não enraizada é conhecida como árvore livre. Seja a árvore T = (V, A) enraizada, de raiz r, sendo dois vértices v, w ∈ V. Se v per- tence ao caminho entre r e w, então, v é chamado ancestral de w, e w é descendente de v. Se v ≠ w, v é ancestral próprio de w, e w é descendente próprio de v. Se (v, w) é uma aresta de T e v é ancestral de w, então, v é pai de w, e w é filho de v. Dois vértices que possuem o mesmo pai são chamados de irmãos. Assim, a raiz de uma árvore não possui pai, e todo vértice que não é raiz tem exatamente um pai. Um vértice folha não possui filhos. O nível de um vértice v, denotado por nível (v), é o número de vértices do caminho entre a raiz e v. Assim, se r é raiz de uma árvore T, nível (r) = 1. Se dois vértices são irmãos, então, possuem o mesmo nível. A altura da árvore T é o valor máximo de nível (v) para todo vértice v ∈ T. Introdução ao estudo dos grafos 21 O grafo da Figura 21 é uma árvore, pois é um grafo ací- clico e conexo. Os vértices v3, v7, v6 e v8 possuem grau ≤ 1, portanto, são vértices folha. Já os vértices v1, v2, v4 e v5 são vértices interiores. Como essa árvore possui oito vértices, ela também conta com exatamente sete arestas. Pode-se escolher o vértice v2 para ser a raiz dessa árvore, chamando-a, portanto, de árvore de enraizada. Assim, diz-se que v4 é ancestral de v8, pois está no caminho entre a raiz (v2) e v8. O vértice v8 também é conhecido como descendente de v4. Já o vértice v4 é pai dos vértices v5 e v6, pois existem ares- tas (v4, v5) e (v4, v6), sendo v4 ancestral de v5 e de v6. Os vérti- ces v5 e v6, portanto, são filhos de v4. Já os vértices v6 e v5, por possuírem o mesmo pai, são irmãos. O valor de nível (v2), por ser a raiz, é um. O nível (v6) é três, pois tem-se três arestas entre a raiz (v2) e v6. A altura da árvore da Figura 21 é três, pois dentro todos os vértices v8 têm valor de nível (v8) = 4. v4 v6 v5 v3 v2 v1 v7 Figura 21 Árvore Fonte: Elaborada pelo autor. v8 1.5 Isomorfismo Vídeo Como foi visto, é comum referir-se a um grafo por meio de sua representação gráfica ou geométrica. Dessa forma, dois grafos são isomorfos entre si se suas re- presentações geométricas se referem ao mesmo grafo. De outra forma, dois grafos são isomorfos entre si se existe correspondência entre seus vértices e suas arestas, preservando as adjacências entre os vértices. Assim, dados dois grafos G1 = (V1, A1) e G2 = (V2, A2), tal que |V1| = |V2| = n, ambos são isomorfos se existe uma função unívoca (com somente uma correspon- dência) f : V1 → V2, tal que (v, w) ∈ A1 se, e somente se, (f (v), f (w)) ∈ A2 para todo v, w ∈ V11 (RODRIGUES, 2014). Figura 22 Grafos isomorfos entre si v3 v2 v1 v4 G1 a4 a3 a2 a1 G2 Fonte: Elaborada pelo autor. 22 Teoria dos Grafos Na Figura 22, os dois grafos G1 = (V1, A1) e G2 = (V2, A2) são isomorfos entre si, pois: V1 = {v1, v2, v3, v4} A1 = {(v2, v3), (v1, v2), (v4, v2), (v1, v4)} V2 = {a1, a2, a3, a4} A2 = {(a1, a4), (a1, a2), (a1, a3), (a3, a2)} |V1| = |V2| = 4 f : V1 → V2 tal que: • f (v1) = a3 • f (v2) = a1 • f (v3) = a4 • f (v4) = a2 Assim como as arestas sãopreservadas da seguinte forma: (v2, v3) = (a1, a4) (v1, v2) = (a1, a3) (v4, v2) = (a1, a2) (v1, v4) = (a3, a2) Uma das maneiras de se caracterizar o isomorfismo entre grafos é usando o Teorema de Whitney, que se baseia no conceito de grafos linha e é formulado da seguinte forma: dois grafos conexos G e H são isomorfos entre si se, e somente se, seus grafos linha L (G) e L (H) são isomorfos. Para esse teorema, tem-se duas exce- ções, a saber: K3 (grafo completo com três vértices) e K1,3 (grafo bipartido completo), pois não são isomorfos, mas seus grafos linha, L (K3) e L (K1,3), são. Para entender esse teorema, deve-se primeiramente definir um grafo linha. O grafo linha de G, denotado por L (G) = (V’, A’), é o grafo em que seus vértices (V’) são as arestas de G, e existe aresta ab ∈ A’ em L (G) se a e b possuírem um vértice em comum em G. Por exemplo, observe a figura a seguir. Figura 23 Grafo G v2 v1 v4 v3 a2 a3 a4 a1 Fonte: Elaborada pelo autor. Para encontrar o grafo linha do grafo G, L (G), é preciso seguir os passos: 1. Encontrar os vértices de L (G); cada aresta de G é representada por um vértice em L (G), conforme a Figura 24. Introdução ao estudo dos grafos 23 Figura 24 Vértices de L (G) que são as arestas de G v2 v1 v4 v3 a2 a3 a1 a1 a3 a2 a4 a4 Fonte: Elaborada pelo autor. 2. Encontrar o primeiro vértice de L (G); como a3 e a2 possuem o vértice v3 em comum, adiciona-se uma aresta entre a3 e a2 em L (G), conforme a Figura 25. Figura 25 Primeiro vértice de L (G) v2 v1 v4 v3 a2 a3 a4 a1 a1 a3 a2 a4 Fonte: Elaborada pelo autor. 3. Encontrar o segundo vértice de L (G); como a4 e a3 possuem o vértice v2 em comum, adiciona-se uma aresta entre a4 e a3 em L (G), conforme a Figura 26. Figura 26 Segundo vértice de L (G) v2 v1 v4 v3 a2 a3 a4 a1 a1 a3 a2 a4 Fonte: Elaborada pelo autor. 24 Teoria dos Grafos 4. Encontrar o terceiro vértice de L (G); como a1 e a2 possuem o vértice v4 em comum, adiciona-se uma aresta entre a1 e a2 em L (G), conforme a Figura 27. Figura 27 Terceiro vértice de L (G) v2 v1 v4 v3 a2 a3 a4 a1 a1 a3 a2 a4 Fonte: Elaborada pelo autor. 5. Encontrar o quarto vértice de L (G); como a1 e a4 possuem o vértice v1 em comum, adiciona-se uma aresta entre a1 e a4 em L (G) a3, conforme a Figura 28. Figura 28 Quarto e último vértice de L (G) a3 a1 a4 a2 v2 v1 v4 v3 a2 a3 a4 a1 Fonte: Elaborada pelo autor. 6. Por fim, o grafo L (G) é o grafo representado pela Figura 29. a3 a1 a4 a2 Figura 29 Grafo L(G) Fonte: Elaborada pelo autor. Desse modo, pelo Teorema de Whitney, dois grafos G e H são isomorfos se, e somente se, L (G) e L (H) são isomorfos. Usando o exemplo da Figura 22, tem-se os grafos linha de G1 e G2 representados na Figura 29. Introdução ao estudo dos grafos 25 Seja V (L (G1)) e V (L (G2)) o conjunto de vértices de L (G1) e L (G2), respectivamente. Claramente, os grafos L (G1) e L (G2) são isomorfos, pois conseguem uma função f : V (L (G1)) → V (L (G2)), tal que: f (a1) = e2 f (a2) = e4 f (a3) = e1 f (a4) = a3 Tal que: (a1, a2) = (e2, e4) (a2, a4) = (e4, e3) (a3, a4) = (e1, e3) (a1, a4) = (e2, e3) (a3, a2) = (e1, e4) Portanto, G1 e G2 são isomorfos. Figura 30 Grafos L (G1) e L (G2) a1 a3 a2 a4 L (G1) v2 v3 v4 v1 a1 a2a4 a3 G1 L (G2) e1 e3 e2 e4 e2 e3 e1 e4 a3 a4 a2 a1 G2Fonte: Elaborada pelo autor. Os grafos G3 e G4 da Figura 31 possuem o mesmo número de vértices e o mes- mo número de arestas, mas não são isomorfos. 26 Teoria dos Grafos v1 a1 a3 a4 a2 v4 v2 v3 G3 b2 G4 b1 b3 b4 w1 w2 w4 w3 Figura 31 Grafos G3 e G4 Fonte: Elaborada pelo autor. Ao representar seus grafos linha, obtém-se L (G3) e L (G4), conforme a Figura 32. v1 a1 a3 a4 a2 v4 v2 v3 G3 a1 a3 a2 a4 L(G3) Figura 32 Grafos linha L (G3) e L (G4) L(G4) b2 G4 b1 b3 b4 w1 w2 w4 w3 b1 b3 b2 b4 Fonte: Elaborada pelo autor. Claramente, L (G3) e L (G4) não são isomorfos, pois não possuem o mesmo nú- mero de arestas. Uma solução algorítmica para isomorfismo é analisar cada uma das n! permu- tações da função que define o isomorfismo (buscar todas as funções possíveis). O problema é que, no pior caso, esse algoritmo necessita de n! passos, sabidamente intratáveis. Hoje, não se conhece um algoritmo eficiente para o problema geral do isomorfismo em grafos. Introdução ao estudo dos grafos 27 1.6 Representação computacional Vídeo Um grafo G = (V, A) é dito esparso se |A| é muito menor que |V|2. Se |A| está próximo de |V|2 é dito que o grafo é denso. Tem-se basicamente três formas padrão de se representar computacionalmente um grafo: lista de adjacências, matriz de adjacências e matriz de incidências. Na lista de adjacências armazena-se uma lista para cada vértice, e, em cada lista, referenciam-se os vértices que são adjacentes. v3 v1 v4 v5 v2 v2 v1 v2 v2 v3 v5 v4 v4 v2 v2 v1 v3 v4 v5 v5 Fonte: Elaborada pelo autor. Na Figura 33, o vértice v2 é representado por uma posição na lista. Esta possui uma lista de todos os vértices adjacentes a v2, no caso, v1, v3, v4 e v5. Se o grafo for orientado (digrafo), a representação pode ser a mesma, como vis- to na Figura 34. A diferença é que a vizinhança representada na lista é dada pelos vértices atingíveis por arestas de saída. v3 v2 v1 v4 v5 v1 v2 v2 v4 v4 v3 v4 v5 v3 v5 v4 Figura 34 Lista de adjacências em grafo orientado Fonte: Elaborada pelo autor. Ao se analisar as listas de adjacências apresentadas, percebe-se que a soma dos comprimentos de todas as listas de adjacências para um grafo não orientado é o dobro do número de arestas, 2 * |A|, visto que cada aresta incide em dois vértices e que, portanto, precisa ser representada duas vezes. Já para o grafo orientado, essa soma é o número exato de arestas, isto é, |A|. Na matriz de adjacências representa-se a estrutura do grafo G = (V, A) como uma matriz com dimensões |V| x |V|, em que cada posição aij é dada por: Figura 33 Lista de adjacências 28 Teoria dos Grafos 1, se a aresta (i, j) ∈ A 0, caso contrárioaij= Com essa representação, consultar se uma aresta faz parte do gráfico é feito em tempo constante. v1 v2 v3 v4 v5 v1 0 1 0 0 0 v2 1 0 1 1 1 v3 0 1 0 0 0 v4 0 1 0 0 1 v5 0 1 0 1 0 v3 v1 v4 v5 v2 Figura 35 Matriz de adjacências Fonte: Elaborada pelo autor. Na Figura 35 tem-se a matriz de adjacências representada no grafo. A quantida- de de memória necessária para compor a matriz tem limite assintótico restrito no quadrado do número de vértices, portanto, Θ (V2). Como o grafo é não direcionado, percebe-se que a matriz é igual à sua trans- posta, representando-se, portanto, somente os elementos abaixo da diagonal principal. v3 v2 v1 v4 v5 Figura 36 Matriz de adjacências de um grafo orientado Fonte: Elaborada pelo autor. v1 v2 v3 v4 v5 v1 0 1 0 0 0 v2 0 0 1 1 0 v3 0 0 0 0 0 v4 0 0 0 1 1 v5 0 1 0 0 0 A Figura 36 apresenta a matriz de adjacências de um grafo orientado (digrafo). Percebe-se que, como as arestas são orientadas, a matriz não é igual à sua trans- posta, pois uma aresta (v, w) não é a mesma que (w, v). Essa representação é ideal para grafos densos. Outra forma matricial de representação de grafos é a matriz de incidências. Para o grafo G = (V, A), define-se como uma matriz com dimensões |V| x |A|, em que cada posição aij é dada por: 1, se a aresta j incide no vértice i 0, caso contrárioaij= Introdução ao estudo dos grafos 29 v3 v2 a6 a5 a4 a2 a3 a1 v4 v1 v5 Figura 37 Matriz de incidências a1 a2 a3 a4 a5 a6 v1 0 0 0 0 0 1 v2 1 1 1 0 0 1 v3 0 0 1 0 0 0 v4 1 0 0 1 1 0 v5 0 1 0 1 0 0 Fonte: Elaborada pelo autor. A Figura 37 mostra a matriz de incidências de um grafo. Cada coluna represen- ta uma aresta e cada linha um vértice. As arestas contam com duas incidências, exceto a aresta a5, que é um laço. Para representar a matriz de incidências de um digrafo, pode-se optar pela seguinte definição: 1, se a aresta j incideno vértice i –1, se a aresta j sai do vértice i 0, caso contrário aij= Essa representação pode ser observada na Figura 38. v4 v5 v3 v2 a6 a5 a4 a2 a3 a1 v1 Figura 38 Matriz de incidências em digrafo Fonte: Elaborada pelo autor. a1 a2 a3 a4 a5 a6 v1 0 0 0 0 0 –1 v2 –1 1 –1 0 0 1 v3 0 0 1 0 0 0 v4 1 0 0 –1 1 0 v5 0 –1 0 1 0 0 1.7 Aplicações dos grafos Vídeo Muitos problemas do mundo real, para serem resolvidos, são transformados em problemas de grafos. Essa comutação pode fornecer um ponto de vista diferen- te sobre o problema, tornando-o mais simples e abrindo um leque de técnicas para a solução. Um exemplo disso foi o problema do caixeiro-viajante – ou TSP (Travelling Salesman Problem) –, no qual tentava-se resolver como esse profissional, que preci- sava visitar várias cidades, poderia fazer isso para efetuar suas vendas. As cidades eram conectadas por estradas ou rodovias, sempre aos pares. Para maximizar seus 30 Teoria dos Grafos lucros, o caixeiro-viajante devia visitar todas as cidades somente uma vez e pela rota mais curta. Ou seja, ele precisava de um caminho ótimo passando por todas as cidades, sem repeti-las. O TSP é um problema NP-Completo, isto é, faz parte da classe de problemas mais difíceis em NP, e NP é a classe de problemas que podem ser resolvidos em tempo polinomial, em uma Máquina de Turing Não Determinística. Atualmente, as soluções para os problemas NP-Completos levam um tempo exponencial em rela- ção à entrada. Por exemplo, no caso do TSP, a solução mais simples é enumerar todas as rotas possíveis e escolher. No caso de n cidades, havendo estradas entre todas elas, deve-se efetuar (n – 1)! escolhas. Suponha um computador que pode efetuar 1 trilhão de adições por segundo (1012), isto é, 1 teraflop. Para um problema com cinco cidades, n = 5, a máquina é capaz de avaliar 10 12 4 = 250 bilhões de rotas por segundo. Como ele precisa calcular 4! rotas, demorará 4!/(250 bilhões) = 0,000000000096 segundos, um tempo insignificante. Efetuando os mesmos cálculos para outras quantidades de cidades, tem-se o Quadro 1 a seguir. Quadro 1 Tempo de execução da solução simples para o TSP. n Rotas/segundo (n-1)! Tempo total 5 250.000.000.000 24 0,000000000096 s 10 110.000.000.000 362.880 0,00000329891 s 15 71.000.000.000 87.178.291.200 1,22786325633 s 20 53.000.000.000 1,216451 * 1017 26,56 dias 25 42.000.000.000 6,204484 * 1023 468.435,470 anos 100 10.000.000.000 9,332621 * 10155 2,9593 * 10138 anos 399 2.500.000.000 4,0121881 * 10863 5.089026 * 10846 anos Fonte: Elaborado pelo autor. Levando em consideração que se estima a idade do universo em 14 bilhões de anos, ou seja, 1,4 * 1010 anos, o tempo de cálculo de todas as rotas para um esta- do do tamanho do Paraná, com 399 cidades, usando um computador que efetua 1 trilhão de adições por segundo, é completamente inviável. Assim, a solução de encontrar todas as rotas e verificar a melhor não pode ser aplicada. Quando mapeado para grafos, esse problema é enunciado como buscar um circuito hamiltoniano ótimo em um grafo valorado. Assim, resolver o problema de rotas é resolver um problema em grafos. No artigo Algumas aplicações da teoria dos grafos, dos autores Pereira e Câmara, publicado em Famat em Revista, os conceitos básicos dessa teoria são revisitados e algumas aplicações são apresentadas, como é o caso do problema do caixeiro-viajante, enunciado sobre algumas cidades do estado de Minas Gerais. Também, são apresentados alguns algoritmos para sua solução. Acesso em: 14 abr. 2020. http://www.pucrs.br/ciencias/viali/graduacao/po_2/literatura/grafos/artigos/Famat_artigo_04.pdf Artigo http://www.pucrs.br/ciencias/viali/graduacao/po_2/literatura/grafos/artigos/Famat_artigo_04.pdf Introdução ao estudo dos grafos 31 Outra problematização que pode ser mapeada para grafos é a robustez da ma- lha elétrica para distribuição de energia. A malha elétrica é formada por torres e linhas de transmissão. Para saber quantas linhas no mínimo precisam falhar para que haja um apagão, isto é, para que parte do sistema fique desconectado, pode-se mapear as torres como vértices e as linhas de transmissão como arestas. Assim, o problema do apagão se transforma em descobrir o corte mínimo em um grafo, ou seja, o conjunto de arestas que, quando retiradas do grafo, interrompe o fluxo de um vértice a outro (Figura 39). t2 t1 t4 t5 t3 t6 t7 t8 t9 Figura 39 Malha elétrica Fonte: Elaborada pelo autor. A Figura 39 apresenta um exemplo de torres e linhas de transmis- são. Partindo de t1 até t9, por exemplo, quantas arestas no mínimo precisam ser retiradas para que t9 sofra um apagão? O problema de alocação de professores e disciplinas também pode ser representado como um grafo. Sejam n professores e m disciplinas, assumindo que cada professor pode ministrar algumas disciplinas, mas que só poderá ofertar uma disciplina no semestre, é possível que todas as disciplinas sejam ofertadas simultaneamente? Qual o maior número de disciplinas que pode ser ofertado? A Figura 40 mostra a representação do problema de alocação de professores e disciplinas. Pode-se observar que esse é um grafo bi- partido e que, portanto, definições e algoritmos referentes a esse tipo de grafo são úteis para a solução do problema. Outro problema interessante é o famoso lema do aperto de mão, que é consequência do teorema do grau dos grafos, apresen- tado na Seção 1.4. Informalmente, em qualquer festa contendo um grupo de pessoas, sendo que algumas se cumprimentam (apertam as mãos), o número de pessoas que apertam um número ímpar de mãos sempre é par. Seja o problema mapeado como um grafo, em que os vértices são pessoas e uma aresta indica que uma pessoa aperta a mão de outra, P1 P2 P3 P4 P5 d1 d2 d3 d4 d5 Professores Disciplinas Figura 40 Professores X disciplinas Fonte: Elaborada pelo autor. 32 Teoria dos Grafos a quantidade de vezes que uma pessoa aperta a mão de outra é o grau do vértice. Suponha que esse grafo tenha um número ímpar de vértices de grau ímpar. Assim, a soma desses graus é ímpar. Sabendo-se que a soma dos graus dos vértices de grau par sempre é par, então, a soma dos graus de todos os vértices, nesse caso, é ímpar. Isso contradiz o teorema que indica que a soma dos graus dos vértices de um grafo é o dobro do número de arestas, logo, um número par. Portanto, o núme- ro de vértices de grau ímpar deve obrigatoriamente ser par. CONSIDERAÇÕES FINAIS Este capítulo apresentou a história dos grafos, mostrando a sua origem, que é mais antiga do que os computadores conhecidos hoje em dia. Mesmo sendo uma teoria ancestral, os grafos até hoje são usados para mapear problemas do mundo a serem resolvidos com algoritmos computacionais. Também foi possível observar os vários conceitos complexos necessários para o estudo dos grafos. Convém ressaltar que essa teoria, por se tratar de um ramo da matemática, com aplicações em várias áreas, é defina por uma notação formal a ser absorvida. Esse formalismo é necessário para que o desenvolvimento de conceitos avançados e algoritmos possa ser feito de maneira correta. ATIVIDADES 1. Observe o problema das pontes de Königsberg, conforme a figura a seguir. Se rg ey M er ku lo v/ Sh ut te rs to ck Esse problema é mapeado pelo seguinte grafo: v4 v1 v2 v3 Introdução ao estudo dos grafos 33 Sabendo que não é possível partir de qualquer ponto e passar por todas as pontes somente uma vez, retornando ao ponto de partida, uma vez que o grafo resultante não é euleriano, construa mais algumas pontes de modo que o grafo torne-se euleria- no e seja possível passar por cada aresta somente uma vez, partindo e chegando no mesmo ponto. 2. Construa a representação geométrica do grafo G = (V, A), tal que: V = {1, 2, 3, 4, 5, 6} A = {(1,3), (1,4), (1,5), (2,3), (2,4), (2,5), (3,5), (4,5)} 3. Construa a matriz de adjacências do grafo da Questão 2. 4. Verifique se o seguinte grafo é bipartido. Dê os dois conjuntos de vérticescaracterísticos. 32 4 5 1 6 5. Desenhe um possível grafo que contenha vértices de grau 5, 2, 2, 2, 2, 1. Quantas arestas esse grafo possui? REFERÊNCIAS BOAVENTURA NETTO, P. O.; JURKIEWICZ, S. Grafos: introdução e prática. São Paulo: Blucher, 2009. EULER, L. Solutio problematis ad geometriam situs pertinentis. Commentarii Academiae Scientiarum Petropolitanae, v. 8, p. 128-140, 1736. RODRIGUES, E. J. Um Algoritmo para o Problema do Isomorfismo de Grafos. São Paulo, 2014. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal do ABC. Disponível em: http://biblioteca. ufabc.edu.br/index.php?codigo_sophia=75394 Acesso em: 14 abr. 2020. SZWARCFITER, J. L. Teoria Computacional de Grafos. Rio de Janeiro: Elsevier, 2018. 34 Teoria dos Grafos Conectividade 2 A conectividade em grafos é um aspecto muito importante no estudo da teoria de grafos, pois muitos problemas podem ser mapeados e analisados através de uma sequência de arestas. Para isso, deve-se conceituar grafos co- nexos e desconexos, bem quanto suas componentes conexas. Para caminhar em um grafo, tanto orientado como não orientado, faz-se necessária a aplicação de conceitos, como caminhos e circuitos. E destes conceitos surgem os grafos eulerianos e hamiltonianos. Quando se trabalha com componentes conexas de grafos também se faz necessário o estudo de subgrafos e suas denominações. Assim, neste capítulo será apresentada, na Seção 2.1, a teoria sobre grafos conexos e desconexos, bem como a definição de componentes conexas e suas implicações. Na Seção 2.2 são apresentadas noções sobre caminhos e circuitos, bem como a formalização de grafos conexos e componentes conexas. Também são apresentados formalmente os conceitos de grafos eulerianos e hamiltonia- nos. Na Seção 2.3 são mostrados os subgrafos e seus usos. Os conceitos de vér- tice de corte, arestas de corte e suas aplicações são apresentados na Seção 2.4. 2.1 Grafos conexos e componentes Vídeo Um grafo conexo é aquele em que é possível estabelecer um caminho desde um vértice a outro, passando pelas arestas; caso um grafo não atenda esta condição, é chamado grafo desconexo (BOAVENTURA NETTO). Por exemplo, na Figura 1, o vértice v3 faz parte do grafo, mas não tem aresta com nenhum outro vértice e, na Figura 2, os vértices v3 e v5 possuem aresta entre si, mas não possuem aresta com a outra parte do grafo, caracterizando, portanto, dois grafos desconexos. v4 v5 v3 v2 v1 Figura 1 Grafo desconexo com aresta desconexa Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 Figura 2 Grafo desconexo com duas componentes conexas Fonte: Elaborada pelo autor. Conectividade 35 Denominam-se componentes conexas do grafo G todos os subgrafos maximais conexos de G, isto é, subgrafos conexos que não estão estritamente contidos em outros subgrafos conexos. Por exemplo, o grafo G (Figura 3) possui três compo- nentes conexas, G’, G’’, G’’’, a saber: G’ = (V’, A’) • V’ = {v1, v2, v3} • A’ = {(v1, v2), (v2, v3), (v3, v4)} G’’ = (V’’, A’’) • V’’ = {v4, v5, v6, v7} • A’’ = {(v4, v5), (v5, v6), (v6, v4), (v7, v6)} G’’’ = (V’’’, A’’’) • V’’’ = {v8} • A’’’ = {} v4 v5 v6 v7 v8 v3 v2 v1 Figura 3 Grafo G com três componen- tes conexas Fonte: Elaborada pelo autor. Para ser uma componente conexa, o subgrafo deve ser maximal, ou seja, não deve estar contido em outro subgrafo. No exemplo da Figura 3, o subgrafo formado pelos vértices v5 e v6, juntamente com a aresta (v5, v6), não é uma componente cone- xa, pois está contido no subgrafo G’’. Um grafo é chamado totalmente desconexo se todos os seus vértices pos- suem grau zero, como na Figura 4. v3v2v1 Figura 4 Grafo Totalmente Desconexo Fonte: Elaborada pelo autor. Os conceitos de conectividade, como componentes conexas, são importantes para o entendimento de assuntos como caminhos e circuitos, cortes, árvores e ou- tros. Em muitos problemas mapeados para grafos, a conectividade é discutida e calculada, o que torna esses conceitos imprescindíveis. Um subconjunto X’ de um con- junto X é dito maximal em relação a alguma propriedade, se X não for subconjunto de nenhum outro subconjunto de X que possua aquela propriedade. Cuidado para não confundir maximal com máximo. Maximal diz respeito à pertinência e máximo, à cardi- nalidade (número de elementos) (GOLDBARG; GOLDBARG, 2012). No caso aqui, uma componente conexa é um subgrafo maximal, G’, isto é, um subgrafo para o qual não existe outro subgrafo H’, tal que G’ está contido em H’. Saiba mais 36 Teoria dos Grafos 2.2 Caminhos e circuitos Vídeo O conceito de caminho é muito usado em vários problemas mapeados para grafos. Um desses problemas é descobrir se existe um caminho entre um vértice e outro; se existe um conjunto de arestas que, quando visitadas em sequência, levam do ponto origem ao ponto destino. Segundo Szwarcfiter (2018), um caminho ou passeio em um grafo G = (V, A) é uma sequência de vértices v1,...,vk, tal que vi ∈ V, (vi, vi+1) ∈ A, 1 ≤ i < k. Esse caminho é formado pelas seguintes arestas: (v1, v2), (v2, v3), (v3, v4),...(vk-1, vk). v3 v2v1 v4 v6 v5 Figura 5 Grafo G Fonte: Elaborada pelo autor. Por exemplo, o grafo G da Figura 5 possui, pelo menos, um caminho entre v4 e v6, formado pelas arestas (v4, v2), (v2, v5), (v5, v6). Perceba que, a partir da segunda, cada aresta é adjacente à anterior. Um trajeto é definido como um caminho sem arestas repetidas. Um caminho simples é um caminho que não possui vértices repetidos. O caminho entre v4 e v6 formado pelas arestas (v4, v2), (v2, v5), (v5, v6) sobre o grafo G (Figura 5) é um trajeto, pois não repete arestas. Também é um caminho simples, pois não repete vértices. Já o caminho formado pelas arestas (v4, v1), (v1, v2), (v2, v4), (v4, v6) não é um caminho simples, pois repete o vértice v4. E o caminho formado pelas arestas (v4, v2), (v2, v1), (v1, v4), (v4, v2), (v2, v5), (v5, v6) não é um trajeto, pois repete a aresta (v4, v2) (ou (v2, v4), já que é um grafo não dirigido). O primeiro vértice v1 que faz parte do caminho é chamado origem, e seu último vértice vk é conhecido como término. Assim, diz-se que esse caminho vai de v1 a vk. No exemplo apresentado anteriormente, o vértice v4 é a origem do caminho e v6 o seu término. Com a definição de caminho, é possível formular que um grafo é conexo quan- do existe caminho entre cada par de vértices e, caso contrário, é desconexo. O ta- manho de um caminho é dado pelo número de arestas que fazem parte dele. Se o caminho é formado por k vértices, então possui pelo menos k – 1 arestas e o valor k – 1 é o tamanho do caminho. Se o caminho é simples (sem vértices repetidos) en- tão seu comprimento é exatamente k – 1. Assim, a distância entre dois vértices pode ser medida pelo tamanho do menor caminho entre eles (FEOFILOFF, 2020). No exemplo aplicado ao grafo G (Figura 5), o caminho simples (v4, v2), (v2, v5), (v5, v6) é formado por quatro vértices e tem tamanho três. Conectividade 37 É definido como ciclo um caminho v1,..., vk, vk+1, de tal forma que v1 = vk+1 e k ≥ 3. Isto é, um ciclo é um caminho que começa e termina no mesmo vértice, desde que contenha mais de dois vértices envolvidos. Um ciclo simples ou elementar é um ciclo v1,..., vk, vk+1 em que o caminho v1,..., vk é simples, não possui vértices re- petidos, exceto o primeiro e último, o que determina ser um ciclo. Se não houver ambiguidade, os termos caminho e ciclo são usados denotando caminho simples e ciclo simples, respectivamente. Se o ciclo possuir tamanho três, então é chama- do triângulo. Para o grafo G, da Figura 5, o caminho simples (v4, v2), (v2, v5), (v5, v6), (v6, v4) é um ciclo, pois seu início e término são pelo mesmo vértice (v4), e é simples, pois não repete vértices. Nesse mesmo grafo, o ciclo (v4, v2), (v2, v1), (v1, v4) é um triângulo, pois possui tamanho três. Se um ciclo puder ser obtido de outro pela permutação circular dos seus vérti- ces, então esses ciclos são considerados idênticos. O grafoG (Figura 5) representa dois ciclos: (v4, v2), (v2, v1), (v1, v4) e (v2, v1), (v1, v4), (v4, v2). Perceba que ambos os ciclos possuem as mesmas arestas e só mudam em relação a sua origem e tér- mino. Assim, um é permutação circular do outro, fazendo com que sejam ciclos idênticos. Todos os conceitos apresentados também são aplicados a digrafos (grafos orientados). Nesse caso, um caminho ou passeio em um digrafo D = (V, A) é uma sequência de vértices v1,..., vk tal que (vi, vi+1) ∈ A, 1 ≤ i < k. Esse caminho é formado pelas seguintes arestas orientadas: (v1, v2), (v2, v3), (v3, v4),…(vk– 1, vk). Convém ressal- tar que, por ser um grafo orientado, a aresta (vi, vi+1) indica que o vértice vi+1 é adja- cente ao vértice vi, mas a recíproca não é necessariamente verdadeira. Por exemplo, na Figura 6, o digrafo D tem um caminho formado pelas seguin- tes arestas: (v5, v3), (v3, v1), (v1, v2), (v2, v5). Já a seguinte sequência de arestas: (v3, v1), (v1, v4), (v4, v5), (v5, v3) não é um caminho, pois a aresta (v1, v4) não existe, a aresta existente é (v4, v1), a ordem importa. Figura 6 Digrafo D com caminho Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 38 Teoria dos Grafos Seja o digrafo D = (V, A), se para qualquer par de vértices vi, vj houver caminho orientado partindo de vi a vj, e se houver caminho orientado partindo de vj a vi, o digrafo é chamado fortemente conexo. Informalmente, qualquer vértice é acessível a partir de qualquer outro e essa propriedade pode ser observada no grafo da Figura 7. Perceba que para qualquer par de vértices vi e vj, há um caminho partindo de vi e chegando em vj, e um caminho partindo de vj e chegando em vi. Se para o digrafo D = (V, A) e qualquer par de vértices vi, vj, houver caminho orientado partindo de vi a vj, mas não houver caminho orientado partindo de vj a vi, então o digrafo é chamado unilateralmente conexo. Se o digrafo não for fortemente conexo, mas tiver seu grafo subjacente – resultante da retirada das orientações das arestas – conexo, então é dito fracamente conexo. O digrafo da Figura 6 não é forte- mente conexo, mas seu grafo subjacente (Figura 8) é conexo. Portanto, o digrafo da Figura 6 é fracamente conexo. Um caminho em um grafo G que contém todos os vértices de G somente uma vez é chamado de caminho hamiltoniano. Seja um ci- clo v1,..., vk, vk+1 em um grafo G, se o caminho v1,..., vk for hamiltonia- no, então o ciclo v1,..., vk, vk+1 é denominado ciclo hamiltoniano. Um grafo que contém um ciclo hamiltoniano é um grafo hamiltoniano. Se um grafo contiver um caminho hamiltoniano, mas não um ciclo hamiltoniano, é um grafo semi-hamiltoniano. Na prática, um grafo semi-hamiltoniano se torna hamiltoniano ao acrescentar uma ares- ta entre a origem e o término do caminho hamiltoniano. As definições de caminho, ciclo e grafo hamiltoniano também se aplicam a digrafos (grafos orientados). Um caminho orientado em um digrafo é um caminho hamiltoniano, se contiver todos os vérti- ces do digrafo sem repetição de vértices. Agora, se for um caminho hamiltoniano e iniciar e terminar no mesmo vértice, um ciclo orien- tado em um digrafo é um ciclo hamiltoniano. Já um digrafo é hamiltoniano se con- tiver um ciclo orientado hamiltoniano. Se um digrafo contiver um caminho orientado hamiltoniano, o digrafo é semi-hamiltoniano (NICOLETTI; HRUSCHKA JUNIOR, 2018). Como resultado dessa definição, é possível perceber que um grafo completo Kn, sendo n ≥ 3, é sempre hamiltoniano. Isso ocorre porque em um grafo completo to- dos os n vértices possuem arestas incidentes a todos os demais n – 1 vértices. Assim, para todo vértice vi, 1 ≤ i ≤ n, existe o seguinte cami- nho C = {(v1, v2), (v2, v3), (v3, v4)..., (vn–1, vn)}, que passa por todos os vér- tices {v1,..., vn} somente uma vez. Como todos vértices são adjacentes aos demais, o vértice vn também é adjacente a v1, assim o caminho C adicionando-se a aresta (vn, v1) é um ciclo que passa por todos os vértices, portanto, é um ciclo hamiltoniano e o grafo é hamiltoniano. Ao se analisar o grafo da Figura 9, percebe-se que o caminho (v2, v3), (v3, v5), (v5, v1), (v1, v4) passa por todos os vértices, exata- mente uma vez, portanto, é um caminho hamiltoniano. No mes- mo grafo, o caminho (v2, v3), (v3, v5), (v5, v1), (v1, v4), (v4, v2) é um ciclo Figura 7 Digrafo fortemente conexo Fonte: Elaborada pelo autor. v1 v3 v2 Figura 8 Grafo Subjacente de D Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 Figura 9 Grafo hamiltoniano Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 Conectividade 39 (começa e termina em v2), caracterizando-o, portanto, como um ciclo hamiltonia- no e, por conta disso, o grafo é hamiltoniano. Se um caminho em um grafo G contém todas as arestas do grafo somente uma vez, é chamado de caminho euleriano. Se esse caminho for um ciclo, então é co- nhecido como ciclo euleriano. Um grafo que contém um ciclo euleriano é um grafo euleriano. Um grafo é semieuleriano se possuir um caminho euleriano, mas não um ciclo euleriano. Na prática, um grafo semieuleriano se torna euleriano bastando inserir uma aresta entre a origem e o término do caminho euleriano (NICOLETTI; HRUSCHKA JUNIOR, 2018). Conforme já apresentado, um grafo não orientado é um grafo euleriano se, e somente se, todos os seus vértices possuem grau (número de arestas incidentes) par. Um grafo é semieuleriano se possuir dois vértices com grau ímpar e todos os demais com grau par. Observando o grafo da Figura 10, percebe-se que há um caminho passando pelos seguintes vértices na sequência (v1, v2, v3, v4, v5, v6, v1, v4, v2, v5, v1) que passa por todas as arestas, somente uma vez, sendo, portanto, um caminho euleriano. Como esse caminho começa em v1 e termina em v1, é um ciclo euleriano e, consequentemente, o grafo é euleriano. Os conceitos também se aplicam a digrafos, isto é, se um caminho orientado em um digrafo D contém todas as arestas do grafo somente uma vez, então é um ca- minho euleriano. Se esse caminho for um ciclo orientado, então é conhecido como ciclo euleriano. Um digrafo que contém um ciclo euleriano é chamado de digrafo euleriano. Para verificar se um digrafo é euleriano há uma condição necessária e suficien- te. Um digrafo D = (V, A) é euleriano se, e somente se, for unilateralmente conexo e se para todo vértice vi ∈ V, o grau de entrada de vi – denotado como grau +(vi) ou o número de vértices que chegam em vi– for igual ao grau de saída de vi – denotado como grau– (vi) ou o número de vértices que saem de vi. Por exemplo, o digrafo da Figura 11 é euleriano, pois é unilateralmente conexo – para cada par de vértices há um caminho orientado entre eles, em algum sentido – e para cada vértice, o número de vértices que entram (grau de entrada) é igual ao número de vértices que saem (grau de saída). No digrafo da Figura 11, um ciclo euleriano é: (v6, v4), (v4, v2), (v2,, v3), (v3, v4), (v4, v5), (v5, v3), (v3, v1), (v1, v5), (v5, v2), (v2, v6). Um teorema similar existe para verificar se o digrafo possui um caminho eule- riano (não um ciclo). Um digrafo D = (V, A) possui um circuito euleriano se, e somen- te se, for unilateralmente conexo e se possuir as seguintes condições: 1. Dois de seus vértices vi e vj são tais que: • o grau de entrada de vi é igual ao seu grau de saída mais um, isto é, grau +(vi) = 1 + grau–(vi); • o grau de saída de vj é igual ao seu grau de entrada mais um, isto é, grau – (vj) = 1 + grau +(vj). 2. Para todos os demais vértices, seus graus de entrada e saída são iguais, isto é, A v ∈ V, grau–(v) = grau+(v). Figura 10 Grafo euleriano Fonte: Elaborada pelo autor. v4 v6 v3 v2 v5v1 a7 a9 a10 a1 a4 a8 a6 a2 a5 a3 Figura 11 Digrafo Euleriano v2 v1 v6 v3 v5 v4 Fonte: Elaborada pelo autor. 40 Teoria dos Grafos Com essas condições, o caminho euleriano se inicia em vj (o vértice com mais arestas de saída do que de entradas) e termina em vi (o vértice com mais arestas de entrada do que de saídas). Como exemplo, pode-seanalisar o digrafo da Figura 12, que é unilateralmente conexo. Os graus dos seus vértices são: • vértice v1: grau +(v1) = 1 e grau –(v1) = 2 • vértice v2: grau +(v2) = 3 e grau –(v1) = 2 • vértice v3: grau +(v3) = 2 e grau –(v1) = 2 • vértice v4: grau +(v4) = 2 e grau –(v1) = 2 • vértice v5: grau +(v5) = 2 e grau –(v1) = 2 • vértice v6: grau +(v6) = 1 e grau –(v1) = 1 Claramente percebe-se que o grau de entrada de v2 é o seu grau de saída mais um. O grau de saída de v1 é o seu grau de entrada mais um. Todos os demais vértices possuem grau de entrada igual ao grau de saída. Assim, esse digrafo possui um caminho euleriano que inicia exatamente em v1 e termina em v2. O caminho euleriano nesse dígrafo é: (v1, v5), (v5, v3), (v3, v4), (v4, v5), (v5, v2), (v2, v6), (v6, v4), (v4, v2), (v2, v3), (v3, v1), (v1, v2). Figura 12 Digrafo com caminho euleriano v2 v1 v6 v3 v5 v4 Fonte: Elaborada pelo autor. 2.3 Subgrafos Vídeo De maneira coloquial, um subgrafo de um grafo G é uma parte dele, ou seja, é um grafo contendo uma parte dos vértices e das arestas de G. Quais e quantos vértices e arestas do grafo G definem o tipo de subgrafo se torna. Define-se um grafo H como um subgrafo de G, como sendo um grafo em que todo vértice de H também é vértice de G e toda aresta de H também é aresta de G (FEOFILOFF; KOHA- YAKAWA; WAKABAYASHI, 2011). Por exemplo, o grafo G, na Figura 13. Ao analisar o grafo da Figura 14, percebe-se que todo vértice de H está em G e que toda aresta de H também está em G. Portanto, o grafo H é um subgrafo de G. Segundo Feofiloff, Kohayakawa e Wakabayashi (2011), um grafo H é um subgrafo próprio de G, se H for subgrafo e diferente de G. Um grafo H é um subgrafo gerador de G, se tiver todos os vértices de G. O grafo H da Figura 14 não é um sub- grafo gerador de G, pois tem vértices em G que não estão em H. Do mes- mo modo, como H é diferente de G, diz-se que H é um subgrafo próprio de G. O subgrafo H é um subgrafo induzido de G se todo arco de G, que tem ambas as pontas em H, também for um arco de H, isto é, se H possuir to- Figura 13 Grafo G Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 Figura 14 Subgrafo de G Fonte: Elaborada pelo autor. v4 v3 v2 v1 Conectividade 41 das as arestas que aparecem em G sobre os mesmos vértices. A Figura 15 apresenta um grafo induzido de G. Todas as arestas de G que possuem as duas pontas em arestas do subgrafo aparecem no grafo induzido. Um grafo H é um grafo parcial de G, se H for um subgrafo de G e se possuir o mesmo conjunto de vértices que G. Na Figura 16 percebe-se que o grafo possui todos os vértices do grafo G da Figura 13, portanto, esse é um grafo parcial de G. Pode-se definir também G’ como um supergrafo de G, se G for subgrafo de G’. Os conceitos de subgrafos também são aplicáveis a digrafos, levando-se em consideração que as arestas são dirigidas. Seja G = (V, A) um grafo. Dois subgrafos de G, G’ = (V’, A’) e G’’ = (V’’, A’’) são chamados aresta-disjuntos se não possuírem arestas em comum, ou seja, A’∩ A’’ = ∅. Da mesma maneira, são chamados de vérti- ces-disjuntos se não possuírem vértices em comum, ou seja, V’ ∩ V’’ = Ø. Por exemplo, dado o grafo G da Figura 13, a Figura 17 apresen- ta dois subgrafos aresta-disjuntos de G e a Figura 18 apresenta dois subgrafos vértice-disjuntos de G. Figura 16 Grafo parcial de G Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 Figura 17 Subgrafos de G aresta-disjuntos Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 v4 v5 v3 v2 v1 Figura 18 Subgrafos de G vértice-disjuntos Fonte: Elaborada pelo autor. v4 v5 v3 v2 v1 Figura 15 Subgrafo induzido de G Fonte: Elaborada pelo autor. v4 v5 v2 v1 42 Teoria dos Grafos 2.4 Cortes Vídeo Seja G = (V, A) um grafo conexo. Denomina-se vértices de corte ou corte de vérti- ces de G o subconjunto minimal de vértices V’ ⊂ V, cuja remoção de G torna o grafo desconexo ou trivial (apenas um vértice sem qualquer aresta). O grafo G – V’ é des- conexo ou trivial. Qualquer subconjunto próprio de V’, a saber, V’’ ⊂ V’, se retirado de G, isto é G – V’’, torna o grafo conexo e não trivial (SZWARCFITER, 2018). Um corte de arestas pode ser definido da seguinte maneira: seja G = (V, A) um grafo conexo, um corte de arestas é um subconjunto A’ ⊂ A, cuja remoção de G tor- na o grafo desconexo, ou seja, G – A’ é um grafo desconexo. Assim, para qualquer subconjunto próprio de A’, a saber, A’’ ⊂ A’, o grafo G – A’’ é conexo. O termo conectividade de vértices (cv de G) denota a cardinalidade do menor corte de vértices de G. Já conectividade de arestas (cA de G) denota a cardinalidade do menor corte de arestas de G. Assim, cV é o menor número de vértices que, quando removidos de G, torna-o desconexo ou trivial. Se G é um grafo descone- xo, então cV = cA = 0. Considerando o grafo G mostrado na Figura 19. Figura 19 Grafo G Fonte: Elaborada pelo autor. v6v1 v7v3 v8 v5v2 v4 Observe que um corte de vértices de G pode ser c1 = {v4}, pois o grafo G’ (Figura 20) com os vértices V’ = V – {v4} é desconexo. Perceba também que o conjunto c1 = {v4} é minimal, pois não há qualquer subconjunto de c1 que, quando retirados os vértices em G, torne o grafo desconexo. Figura 20 Grafo G’ Fonte: Elaborada pelo autor. v6 v7 v8 v5 v1 v3 v2 Um subconjunto X’ de um conjun- to X é dito minimal, em relação a alguma propriedade, se X não for superconjunto de nenhum outro subconjunto de X que possua aquela propriedade. Cuidado para não confundir minimal com mínimo. Minimal diz respeito à pertinência e mínimo à cardina- lidade (número de elementos) (GOLDBARG; GOLDBARG, 2012). Saiba mais É conveniente observar que um grafo completo K n , n > 1, não possui subconjunto próprio de vértices V’ ⊂ V cuja remoção de K n o desconecte, embora a remoção de n – 1 vértices torne o grafo trivial. Importante Conectividade 43 Já, para o mesmo grafo G, um corte de arestas pode ser c2 = {(v2, v4), (v3, v4)}, pois retirando essas arestas, é obtido o grafo G’’ (Figura 21), que é desconexo. Perceba que o conjunto c2 = {(v2, v4), (v3, v4)}, é minimal, pois não há qualquer subconjunto de c2 que, quando retiradas as arestas em G, torne o grafo desconexo. Figura 21 Grafo G’’ Fonte: Elaborada pelo autor. v6 v7 v8 v5 v1 v3 v2 v4 Para o conjunto c3 = {(v2, v4), (v3, v4), (v4, v6)}, quando essas arestas são retiradas de G, é gerado o grafo G’’’ (Figura 22), que é desconexo. Mas c3 não é um corte de arestas, pois não é um conjunto minimal, isto é, existe um subconjunto próprio de c3, que no caso é o c2, que também desconecta o grafo quando as arestas são retiradas de G. Figura 22 Grafo G’’’ Fonte: Elaborada pelo autor. v6 v7 v8 v5 v1 v3 v2 v4 Para determinar a conectividade de vértices cv, obtém-se o corte de vértices de menor cardinalidade (número de elementos), ou seja, o menor número de vértices que, quando removidos, desconecta o grafo. Para o grafo G da Figura 19, os menores cortes de vértices são os conjuntos c1 = {v4} e c2 = {v6}, portanto, a conectividade de vértices de G é cv = 1. Para determinar a conectividade de arestas cA, obtém-se o corte de arestas de menor cardinalidade (número de elementos); o menor número de arestas que, quando removidas, desconecta o grafo. Para o grafo G da Figura 19, o menor corte de arestas é o conjunto c3 = {(v6, v8)}, portanto, a conectividade de arestas de G é cA = 1. Um subconjunto X’ de um conjunto X é dito próprio se X’ é subconjunto de X, mas não é igual a X. Em outras palavras, existe pelo menos um elemento de X que não está no seu subconjunto X’. Atenção 44 Teoria dos Grafos Segundo Szwarcfiter (2018), um grafo G é k-conexo em vértices se a sua conec- tividade de vértices for cv ≥ k. Da mesma maneira, um grafo G é k-conexo em ares- tas quando a sua conectividade de arestas for cA ≥ k. O valor k é importante, pois se um grafo é k-conexo em vértices (arestas), não existe corte de vértices (arestas) menorque k. O grafo G da Figura 19 é 1-conexo em vértices e 1-conexo em arestas. Quando um grafo é 2-conexo também é chamado biconexo. Para um grafo G = (V, A) e um corte de arestas de G, A’ ⊆ A, sempre é possível encontrar um corte de vértices V’ de tamanho |V’| ≤ |A’|. Para isso, escolhe-se para fazer parte de V’ um subconjunto de vértices tal que, para toda aresta a ∈ A’, A inci- de neste vértice. Por exemplo, seja o grafo G da Figura 23. Figura 23 Grafo G Fonte: Elaborada pelo autor. v6 v5 v1 v2 v4 v3 Um corte de arestas é o conjunto c1 = {(v4, v6), (v3, v6), (v5, v6)}. A eliminação dessas arestas gera o grafo G’ da Figura 24. Assim, consegue-se obter um corte de vértices a partir de c1 eli- minando um subconjunto dos vértices cujas arestas em c1 incidem. Os vértices em c1 são v4, v3, v5, v6. Observe que eliminando v4, v3 tem-se o grafo da Figura 25, desconexo, e que não há subconjunto de c2 = {v4, v3} que desconecte o grafo, sendo esse, portanto, um corte de vértices. Percebe-se também que o |c2| ≤ |c1|. Posto isso, conclui-se que cv ≤ cA, a conectividade de vértices de um grafo qualquer é sempre menor ou igual à sua conectividade de arestas. Dado um grafo G não completo, cujo vértice v possui grau mínimo, é possível desconectar G removendo grau(v) arestas, que são as arestas que incidem em v. Por exemplo, uma vez que o grafo G da Figura 23 é um vértice de grau mínimo, ele é v1, sendo grau (v1) = 3. Assim, é possível desconectar o grafo G removendo todas as arestas incidentes a v1; nesse caso, são três arestas, a saber: (v1, v2), (v1, v3), (v1, v4). Portanto, sendo v um vértice de grau mínimo, grau(v) ≥ cA ≥ cv. Se o grafo G for um grafo completo (G = Kn), então todos seus vértices possuem o mesmo grau n – 1 (pois estão conectados com todos os demais vértices) e, portanto, grau(v) = cA = cv = n – 1. Figura 24 Grafo G’ Fonte: Elaborada pelo autor. v6 v5 v1 v2 v4 v3 Figura 25 Grafo com vértices retirados Fonte: Elaborada pelo autor. v6 v5 v1 v2 Conectividade 45 Se um vértice de um grafo, ao ser removido, o desconecta, o vértice é chama- do de articulação. Igualmente, se uma aresta do grafo, quando removida, desco- necta o grafo, então essa aresta é chamada ponte. A Figura 26 mostra um grafo com articulações e uma ponte. Figura 26 Grafo com ponte e articulações Fonte: Elaborada pelo autor. v6 v7v5v2 v8v1 v4v3 Articulações Ponte Dessa maneira, um grafo é biconexo em vértices se, e somente se, não possuir articulações. Isso acontece, pois, se o grafo possuir uma articulação, significa que o vértice, se removido, desconecta o grafo, portanto ele seria 1-conexo. Analoga- mente, um grafo é biconexo em arestas se, e somente se, não possuir pontes, o raciocínio é o mesmo (SZWARCFITER, 2018). Com o conceito de caminho, consegue-se dizer que em um grafo conexo G = (V, A), |V| > 2, as seguintes afirmações (SZWARCFITER, 2018): 1. Um vértice v ∈ V é articulação de G se, e somente se, existirem vértices v1, v2 ≠ v, tais que em todo caminho entre v1 e v2 em G, v está presente. 2. Uma aresta (v1, v2) ∈ A é ponte se, e somente se, (v1, v2) for o único caminho simples entre v1 e v2. Tirando a prova Observe, a seguir, as provas dessas afirmações. Afirmação 1: um vértice v ∈ V é articulação de G se, e somente se, existirem vértices v1, v2 ≠ v, tais que em todo caminho entre v1 e v2, em G, v está presente. Prova de ida →: assumimos que v é uma articulação, portanto, retirar v de G, pela definição de articulação, desconecta o grafo. Se o grafo G’ resultante da re- moção de v é desconexo, então, é formado por, pelo menos, duas componentes conexas, dois vértices (v1 e v2) em componentes conexas diferentes. Então, como v é articulação, qualquer caminho entre v1 e v2 passa por v. Prova de volta ← : assumimos dois vértices v1 e v2 de G, diferentes de v, tal que todo caminho entre v1 e v2 passa por v. Assim, se todo caminho entre v1 e v2 passa por v, significa que se o vértice v for removido do grafo G, então, v1 não é mais al- cançável a partir de v2 (e vice-versa, assumindo G não dirigido), isto é, não há mais caminho entre dois vértices do grafo, o que caracteriza um grafo desconexo. Um vértice que quando removido desconecta o grafo, é a definição de articulação, por- tanto, v é uma articulação G. Sempre que se deve provar uma afirmação que contém se, e so- mente se, a prova é formada por duas partes: a ida (→) e a volta (←). Por exemplo, queremos provar a afirmação: Chove se, e somente se, faz frio. A ida significa provar que se chove, então faz frio. Já a volta significa provar que se faz frio, então chove (GERSTING; IÓRIO, 2012). Importante 46 Teoria dos Grafos Afirmação 2: uma aresta (v1, v2) ∈ A é ponte se, e somente se, {v1, v2} for o único caminho simples entre v1 e v2. Prova de ida → : assumimos a aresta (v1, v2) ∈ A é ponte do grafo G e, portanto, retirar essa aresta de G, pela definição de ponte, desconecta o grafo. Se o grafo G’ resultante da remoção de (v1, v2) é desconexo, então, v1 e v2 estão em componentes conexas distintas. Assim, a aresta (v1, v2) é o único caminho simples entre v1 e v2. Prova de volta ← : assumimos que a aresta a (v1, v2) ∈ A é o único caminho simples entre v1 e v2. Como v1 e v2 são adjacentes (há uma aresta entre eles), ser o único caminho simples significa que não se tem arestas repetidas entre v1 e v2, nem outro caminho entre eles passando por outros vértices. Assim, remover a aresta (v1, v2) de G faz com que v1 não seja mais alcançável a partir de v2 (e vice-versa, as- sumindo um grafo não dirigido), portanto, o grafo se torna desconexo. Uma aresta que quando removida do grafo o desconecta é a definição de ponte, portanto, (v1, v2), é ponte de G. Para um grafo G, definem-se componentes biconexas aos subgrafos maximais de G que sejam biconexos em vértices ou que sejam isomorfos a K2. As componen- tes biconexas são também chamadas de blocos do grafo. Se um grafo G for bicone- xo, ele só possui um bloco, que é o próprio G. A Figura 27 mostra todos os blocos do grafo da Figura 26 (FEOFILOFF, 2020). Figura 27 Bloco do grafo Fonte: Elaborada pelo autor. v6 v5 v4 v4v3 v2 v1 v3 v6 v7 v8 Por essa definição, percebe-se que cada aresta de um grafo pertence a exatamente um bloco do grafo. Também percebe-se que um vértice é articulação do grafo se, e somente se, pertencer a mais de um bloco do grafo. Na Figura 27 é possível perceber que cada aresta faz parte de somente um bloco do grafo e que os vértices v3, v4 e v6, que são articulações, são os únicos vértices que aparecem em mais de um bloco. A caracterização de corte de vértices e de arestas é importante para a aplica- ção de grafos na modelagem de alguns problemas reais. Veja como exemplo uma rede de computadores como a da Rede Nacional de Ensino e Pesquisa (RNP), or- ganização responsável, entre outras coisas, pela manutenção da Rede Ipê – a rede acadêmica brasileira que interliga universidades. A rede é formada por Pontos de Presença (PoP) em cada uma das unidades da federação e esses pontos são conec- tados por fibra ótica de alta velocidade (REDE..., 2020). Um dos problemas em que grafos são aplicáveis, apesar de nesse caso ser uma modelagem simples, é para Conectividade 47 verificar se há algum ponto em que essa rede pode ficar desconectada se algum link de internet deixar de funcionar. Modelar essa rede como um grafo é simplesmente assumir que cada PoP é um vér- tice do grafo e cada link de internet entre os PoPs é uma aresta. Figura 28 Mapa de tráfego da Rede Ipê Fonte: RNP, 2020b. Esta rede é mapeada pelo grafo da Figura 29. Figura 29 Rede Ipê mapeada por um grafo Fonte: Elaborada pelo autor com base em RNP, 2020b. RO AC RS SC MT MS PR BA SE AL AP PE PB2 PB1 MARR AM PA PI SP RJ ES GO TO DF MG CE RN 48 Teoria dos Grafos Encontrar um link de rede que deixa algum estado desconectado é o mesmo que encontrar um corte de arestas no grafo que o torna desconexo. Esse grafo,
Compartilhar