• Nenhum resultado encontrado

minicurso

N/A
N/A
Protected

Academic year: 2021

Share "minicurso"

Copied!
16
0
0

Texto

(1)

Grafos e Aplicações

Prof. João Paulo Costalonga Depto. de Matemática - UEM

Versão de 10/10/2016 Disponível em:sites.google.com/site/costalongajp

1 Caminho Eulerianos: como tudo começou

Um desenho de Königsberg na época com as pontes destacadas.

A Teoria dos Grafos surgiu com Leonhard Eüler, que re-solveu um quebra-cabeça local da cidade de Königsberg (atual Kaliningrad, Eüler vivia em São Petesburgo, não em Königsberg). O quebra-cabeça consistia em encontrar uma forma de numa localidade da cidade fazer um pas-seio partindo de um ponto e passando exatamente uma vez por cada ponte da localidade e retornar ao ponto ini-cial. Eüler mostrou que isso era impossível de uma forma muito simples: para que tal passeio fosse possível, cada porção de terra deveria ter acesso a um número par de pontes, isso é, para cada ponte que se usa para chegar à porção de terra, corresponderá uma usada para deixar a mesma. Porém naquela localidade de Königsberg haviam

porções de terra com acesso a um número ímpar de pontes. A parte mais interessante é que a recíproca se aplica nesse caso: se cada porção de terra tem acesso a um número par de pontes, então é possível retornar ao mesmo ponto usando cada ponte exatamente uma vez.

Se o leitor achou o problema acima demasiadamente banal, você pode pensar no problema de definir uma rota para um caminhão de lixo ou um carteiro numa localidade de forma que este não passe duas vezes na mesma rua (ou passe um número mínimo de vezes) a fim de encurtar o trajeto e otimizar seu trabalho.

Antes de demonstrar essa afirmação, vamos formalizar esse conceitos matematicamente. Um grafo G é uma tripla (V, E , R), na qual V e E são conjunto finitos tais que E ∩V = ;, e R é uma relação em E ×V que a cada elemento de E associa um ou dois elementos de V . Os ele-mentos de V são chamados os vértices do grafo G. Os eleele-mentos de E são chamados as arestas de G e quando R associa um vértice v a uma aresta e, dizemos que v e e são incidentes. De-notamos os conjuntos de vértices e arestas de um grafo G respectivamente por V (G) e E (G) (E de edge, aresta em inglês, note que coincidentemente pronunciamos “edge”, E (G) como “é di gê”(acredito que essa anedota não funcione tão bem escrita como falada)). Se dois vértices são incidentes a uma aresta em comum então dizemos que esse vértices são adjacentes, semel-hantemente se duas arestas possuem um vértice incidente comum, também dizemos que tais arestas são adjacentes.

No problema das pontes de Königsberg, os vértices correspondem às porções de terra, as arestas correspondem às pontes e um vértice é incidente a uma aresta se a respectiva ponte dá acesso à respectiva porção de terra.

Um caminho num grafo G é uma sequência finita da formaγ := v0, e1, v1, . . . , en, vn, onde

v0∈ V (G) e, para cada i = 1, . . . , n, vi ∈ V (G), ei ∈ E(G) e vi e vi −1são todos os vértices de G incidentes a ei. Neste caso dizemos que v0e vnsão os extremos do caminhoγ e que γ é um (v0, vn)-caminho e denotamos E (γ) = {e1, . . . , en} e V (γ) := {v0, . . . , vn}.

(2)

Para um caminhoγ = v0, e1, v1, . . . , en, vn, dizemos que cada aresta na forma ei antecede vi e sucede vi −1 e, por outro lado, vi −1antecede ei e vi sucede ei. Também dizemos que vi −1 antecede vie vi sucede vi −1emγ.

Dizemos que um caminho é fechado se o seu primeiro e último vértices são iguais. O que buscamos no problema das pontes é encontrar um caminho Euleriano, que definimos como um caminho fechado que passa por todas as arestas do grafo, mas só usa cada aresta uma única vez.

Caminho Simples Circuitos Um caminho é dito simples se usa cada um de

seus vértices e cada uma de suas arestas apenas uma vez. Um circuito de G é um caminho fechado

v0, e1, v1, . . . , en, vn tal que e1, . . . , en são arestas dis-tintas e v1, . . . , vn são vértices distintos. Estes con-ceitos estão ilustrados ao lado.

Exercício: Mostre que um caminho vn, e1, v1, . . . , en, vn é um circuito de G se e só se para cada i = 1,...,n, temos que vi +1, ei +2, vi +2, . . . , en, vn, e1, v1, . . . , en, vi é um caminho simples.

Quando uma aresta e de G incide a somente um vértice de G, dizemos que e é um laço de

G. O grau de um vértice v de G, é definido como o número total de arestas incidentes a v em G

mais o número de laços de G incidentes a v. Ou seja, cada laço é contado duas vezes no cálculo do grau.

Dizemos que um grafo G é conexo se para cada u, v ∈ V (G), existe um u, v-caminho. Dize-mos que um grafo que possui um caminho Euleriano é um grafo Euleriano. Um grafo Euleri-ano é obviamente conexo. O resultado de Eüler é o seguinte:

Teorema 1.1 (Eüler) Um grafo é Euleriano se e somente se é conexo e todos seus vértices possuem

grau par.

Prova: Suponha que G seja um grafo com um caminho Euleriano γ = v0, e1, v1, . . . , en, vn. Comoγ não repete arestas, cada aresta de γ só antecede cada vértice de γ uma vez e o mesmo vale para as arestas que sucedem cada vértice. Note que o número de arestas que antecedem e sucedem cada vértice emγ é o mesmo (lembre que v0= vn). Se uma aresta ek sucede e an-tecede simultaneamente um mesmo vértice v emγ, então, como ek só aparece uma vez no caminho, segue que v = vk−1= vk e, portanto e é um laço (e, portanto conta duas vezes para o grau de v). Comoγ usa todas a as arestas do grafo, o grau de cada vértice é soma do número de arestas que o sucedem e com o número das arestas que o antecedem e, portanto, é par.

Por outro lado, suponha que G possui todos os vértices com grau par. Sejaγ = v0, e1, v1, . . . , en, vn um caminho de G que não repete arestas com o maior número de arestas possível. Vamos provar queγ é um caminho Euleriano de G. Primeiro provamos:

Afirmação 1:γ é fechado.

Prova: Suponha o contrário, isso é v06= vn. Note que os laços incidentes a vn antecedem e sucedem vn em G. O número de arestas que antecedem vn emγ é, portanto, um a mais que o número de arestas que o antecedem. Então somente um número ímpar de arestas não laços deγ é incidente a vn. Mas como o grau de vnem G é par, existe uma aresta f incidente a vnfora deγ. Sendo vne u os vértices incidentes a f , o caminho v0, . . . , en, vn, f , u contraria a

maximalidade deγ. Uma contradição. Então γ é fechado.

Afirmação 2: Seγ não é um caminho Euleriano, então existe uma aresta f ∈ E(G) − E(γ) incidente a um vértice emγ

Prova: Suponha queγ não é um caminho euleriano de G, então G possui uma aresta e fora

(3)

u fora deγ. Como G é conexo, existe um caminho γ0de u até um vértice deγ. Seja v o primeiro vértice deγ0emγ. Sejam w e f o vértice e aresta que antecedem v em γ0. Pela escolha de v, w não está emγ e, portanto, f está fora de γ como queríamos demonstrar. Agora, suponha por contradição queγ não seja um caminho Euleriano de G. Pela Afir-mação 1,γ é fechado e, portanto, existe uma aresta de G fora de γ. Considere f como no enun-ciado da Afirmação 2. Para algum 0 ≤ k ≤ n, f é incidente a vk. Sejam vk e w os vértices de G incidentes a f . Agora, o caminho vk, ek+1, . . . , en, vn, v1, e1. . . , vk, f , w contraria a maximalidade deγ. Uma contradição. Portanto, γ é Euleriano. ä Exercício: Com base na demonstração do Teorema, desenvolva um algoritmo para encon-trar um caminho Euleriano num grafo Euleriano.

Exercício: Mostre que um grafo G possui todos os vértices com grau par se e só se G possui circuitos C1, . . . ,Cntais que E (G) = E(C1) ∪ ··· ∪ E(Cn) e Ci∩Cj= ; para 1 < j ≤ n.

Exercício: Mostre que um grafo conexo G com vértices distintos u e v possui um (u, v)-caminho que usa cada aresta de G exatamente uma vez se e só se u e v são os únicos vértices de G com grau ímpar.

2 Emparelhamentos em grafos bipartidos

Consideremos os seguintes problemas:

Problema 1: Temos um conjunto B de projetos que poderão ser executados e temos uma lista A de pessoas para executar esses projetos. Porém cada pessoa só poderá executar um único projeto e, para cada projeto, só algumas pessoas da lista que possuem os pré-requisitos para a usa execução. Como atribuir projetos aos executores de forma quer o maior número de projetos seja executado?

Problema 2: Numa agência de encontros temos um conjunto de moças A e um conjunto de rapazes B . (Não é um caso de homofobia, mas para mantermos a simplicidade matemática do problema para fins didáticos vamos considerar apenas casais heterossexuais). Após análise dos dados, para cada possível casal, isso é, para cada (a, b) ∈ A × B, atribui-se o rótulo de casal compatível ou incompatível. Porém a agência trabalha apenas com relações monogâmicas e não adúlteras (trata-se de uma agência bem conservadora). Então temos que escolher o maior número de casais compatíveis, sendo que dois casais não podem ter uma pessoa em comum.

Ambos problemas são modelados por uma mesma estrutura matemática, chamada grafo bipartido. Um grafo é simples se não possui circuitos com menos de 3 arestas(isso é, laços ou pares de arestas com mesmos vértices incidentes). Dizemos que um grafo G é bipartido se G é simples e existe uma 2-partição {A, B } de V (G) (isso é A, B ⊆ V (G), tais que A ∩ B = ; e

V (G) = A ∪ B) tal que cada aresta de G seja incidente a um vértice de A e a um vértice de B.

Um emparelhamento em um grafo G, é um subconjunto M ⊆ E(G) tal que duas arestas de

M não sejam adjacentes. Um emparelhamento de G é dito máximo se for um emparelhamento

com o maior número de arestas possível. Vamos fazer algumas definições a mais, para um grafo

G e um emparelhamento M :

• caminho alternado: um caminhoγ tal que as suas arestas estão alternadamente dentro e fora de M . Isso é, se e, f ∈ E(γ), então e ∈ M se e só se f ∉ M.

• vértice coberto: um vértice de G que é adjacente a um a aresta de M .

• caminho de aumento: Um caminho simples e alternado, tal que o primeiro e o último vértices não são cobertos.

(4)

• subcaminho: Um subcaminho de um caminho v0, e1, v1, . . . , en, vn é um caminho da forma vi, ei +1, vi +1, . . . , ej, vjcom 1 ≤ i ≤ j ≤ n.

• caminho alternado maximal: Um caminho alternado de G que não é subcaminho de nenhum outro caminho de G.

Seγ é um caminho de aumento M em G, então é imediata a verificação de que (M ∪E(γ))− (M ∩ E(γ)) é um emparelhamento de G com uma aresta a mais que M.

O problema de achar emparelhamentos máximos em grafos em geral possui uma boa solução, dada por Jack Edmonds [4], porém é um pouco complexa para nossos propósitos. Aqui apre-sentamos a solução para o caso bipartido que é mais rápida e mais simples e contempla um caso de grande importância, como vimos nos problemas enunciados. A seguir, mostramos um algoritmo que fornece um emparelhamento máximo num grafo bipartido. A estratégia do al-goritmo é encontrar sucessivamente caminhos de aumento para conseguir emparelhamentos cada vez maiores através do procedimento acima descrito.

Algoritmo para emparelhamento máximo em grafos bipartidos

Entrada: Um grafo bipartido G com a respectiva bipartição {A, B } do seu conjunto de vér-tices e um emparelhamento M , de G (M pode ser vazio inclusive).

Saída: Um emparelhamento máximo de M e um conjunto X ⊆ V (G) de tamanho mínimo tal que toda aresta de G é incidente a um vértice de X .

Passo (0): Todos os vértices estão não rotulados e não examinados. Passo (1): (Rotulação de vértices)

Passo (1.0): Rotule cada vértice não coberto de A com “∗”.

Passo (1,1): Se todos os vértices rotulados foram examinados, vá para o passo (3). Caso contrário, escolha um vértice não examinado v. Se v ∈ A, vá para o passo (1.2). Se v ∈ B, vá para o passo (1.3).

Passo (1.2): Para cada vértice u ∈ B adjacente a v, não coberto por M e não rotulado, dê o rótulo “v” para u. Marque v como examinado e volte para o passo (1.1). Passo (1.3): Se v não é coberto por M , vá para o passo (2). Caso contrário, v é adjacente a uma aresta e de M . Rotule o outro vértice adjacente a e com o rótulo “v”. Volte para o passo (1.1)

Passo (2): (Caminho de aumento encontrado). Um caminho de aumento γ pode ser construído da seguinte forma. Comece com v, vá para o vértice v1que rotula v, depois

para o vértice v2que rotula v1 e assim sucessivamente, até chegar em um vértice não

coberto. Redefina:

M := (M ∪ E(γ)) − (M ∩ E(γ)).

Remova todos os rótulos, marque todos os vértices como não examinados e volte para o passo 1.

Passo (3): (Finalização do algoritmo) Defina por A+ e B+ os respectivos conjuntos dos vértices rotulados de A e B e por Ae Bos não rotulados. Defina X := A∪ B+.

(5)

r r r r r r r r r r r r J J J J Z Z Z Z Z J J J J J J J J @ @ @ @ @ @ @ @        

Exercício: Execute esse algoritmo no grafo da figura abaixo.

Antes de demonstrar o funcionamento do algoritmo, vamos introduzir um novo conceito e um novo teorema. Um conjunto X ⊆ V (G) é uma cobertura por vértices de G se cada aresta de G é incidente a um vértice de X . Dizemos que X é uma cobertura por vértices mínima se

G não admite cobertura por vértices com cardinalidade menor que a de X .

Teorema 2.1 (König) Seja G um grafo, M um emparelhamento de G e X uma cobertura por

vértices de G. Então |X | ≥ |M|. Se G é bipartido então |M| = |X | se e só se M é máximo e X é mínima.

Prova: Cada aresta de M incide a ao menos um vértice de X . Além disso, duas arestas de M não podem incidir a um mesmo vértices de X . Portanto |M| ≤ |X |.

Agora suponha que G é bipartido. Seja N um emparelhamento máximo de G. Para finalizar a prova basta mostrar que G admite uma cobertura por vértices Y tal que |Y | = |N |. De fato, pelo que foi provado, isso implica que Y é mínima e N é máximo. Então X é mínima e M é máximo se, e só, se |X | = |Y | = |M| = |N |. Façamos isso.

Sejam A e B as classes de vértices de G. Todas as terminologias nesta demonstração são em relação a N (coberto, alternado, etc.). Vamos construir Y escolhendo um vértice incidente e cada aresta de N da seguinte forma: se ab ∈ N , com a ∈ A e b ∈ B, escolha b para Y se existe em A um vértice u não coberto e um u − b-caminho alternado. Caso contrário escolha a. Com essa escolha |Y | = |N |. Falta mostrar que toda aresta de G incide a um vértice de Y .

Seja v w uma aresta de G com v ∈ A. Temos que mostrar que v ∈ Y ou v ∈ Y . Se v w ∈ N , isso é óbvio. Suponha o contrário. Se v é descoberto então v w é um v − w-caminho alternado começando em um vértice de A. Então w ∈ Y neste caso. Suponha então que v é coberto. Seja

b ∈ B tal que vb ∈ N . Podemos assumir que v ∉ Y . Então b ∈ Y e existe um vértice u ∈ A e um u − b-caminho alternado γ. Note que toda aresta que, em γ vai de A para B está fora de N . Se w ∈ γ, defina γ0como o trecho deγ de u até w, e, em caso contrário, γ0:= γ, v, w. Então γ0é um

u − w-caminho alternado. Como não podemos ter caminho de aumento, w é coberto. Isso é,

existe a ∈ A tal que aw ∈ N . Pela existência de γ0, w é o vértice de {a, w } em N . Isso finaliza a

prova. ä

Teorema 2.2 O algoritmo desta seção funciona. Em particular, ao seu término:

(a) X := A∪ B+é uma cobertura por vértices de G e (b) |M| = |X | e M é máximo.

Prova: Suponha que estamos ao término do algoritmo. Como não há mais vértices que pos-sam ser rotulados e como os vértices de B são rotulados no passo (1.2), segue que não existe aresta incidente a um vértice de A+e um vértice de B. Isso implica que X = A∪ B+é uma cobertura por vértices de G.

Vamos mostrar que todo vértice de X é coberto. como todos os vértices não cobertos de A são rotulados no passo (1.0), então todos vértices de A+são cobertos. Se b é um vértice de B+ não coberto, então o passo (2) teria sido executado na última interação do algoritmo ao invés do passo (3), uma contradição. Então todos os vértices de X são cobertos.

Vamos mostrar que |X | = |M|. Como todo vértice de X é coberto, basta mostrar que cada aresta de M incide a exatamente um vértice de X . Seja ab uma aresta de M com a ∈ A. Se

(6)

a ∈ A+, então, pelo parágrafo anterior, b ∈ B+. Se a ∈ A, então vamos verificar que b ∈ B−. De fato, de b ∈ B+, então b foi rotulado e, portanto examinado no passo (1.3), que rotularia a. Portanto se a ∈ A, b ∈ B+.

O teorema agora segue do Teorema de König. ä

Se M1e M2são emparelhamentos de um grafo G, nós definimos um M1, M2caminho de G

como um caminho no qual as arestas pertencem alternadamente a M1e M2.

Exercício: Mostre que todo M1, M2-caminho é um caminho simples ou um circuito.

Exercício: Mostre que um emparelhamento M de um grafo G é máximo se e somente se não admite caminho de aumento. (Dica: considere emparelhamentos M1 e M2 com |M1| <

|M2| e analise os os M1, M2-caminhos maximais a fim de encontrar um caminho de aumento

para M1).

Exercício: Suponha que um grafo bipartido, com classes de vértices A e B possua subcon-juntos A0⊆ A e B0⊆ B e emparelhamentos MAcobrindo A0e MBcobrindo B0. Construa a partir de MA e MB, um emparelhamento M que cobre A0∪ B0. Pode-se usar uma estratégia semel-hante àquela sugerida no exercício anterior. Mostre que essa afirmação também funciona para grafos bipartidos infinitos. Use-a para demostrar o Teorema de Cantor-Schöder-Berenstein: “Se X e Y são conjunto tais que existem uma função injetiva de X em Y e outra de Y em X , então existe uma bijeção entre Y e X ”·

3 Encontrando o caminho mais econômico

Consideremos o problema de encontrar um caminho mais curto entre duas cidades numa malha viária. Cada cidade será representada graficamente por um ponto e cada trecho de estrada entre duas cidades por uma flecha (As estradas são direcionadas, podemos consid-erar mão e contra-mão). A estrutura matemática que usaremos para modelar este problema chama-se grafo direcionado ou, abreviadamente, digrafo (do inglês directed graph, digraph).

Um digrafo D pode ser definido como uma tripla ordenada (V, E ,φ), onde V é o conjunto de vértices de E é o conjunto de arestas de D eφ é uma função de E em V ×V . Se, para e ∈ E e u, v ∈ V , φ(e) = (u, v), dizemos que u é a origem e v é o destino de e ou que e vai de u para v. Denotamos os conjunto de vértices e arestas de D por V (D) e E (D), respectivamente.

No nosso caso, temos um digrafo D que modela o problema da seguinte forma: V (D) é o conjunto das cidades em questão, E (D) é o conjunto de trechos de estradas. Naturalmente, se o trecho e vai da cidade u para a cidade v, definimos u como a origem e v como o destino de

e. Em nosso problema, ainda temos outro fator a considerar, que é o comprimento de cada

trecho, este será representado por uma função l : E → R+.

Além disso, definimos a distância entre duas cidades u e v, dist(u, v), pelo comprimento da menor rota entre elas. Para formalizar esse conceito, introduzimos o conceito de u, v-caminho no digrafo D. Um u, v-caminho em D é uma lista da formaγ := v0, e1, v1, . . . , en, vnonde v0= u,

vn= v e, para cada i = 1, . . . , n, ei tem origem em vi −1e destino em vi. Definimos o compri-mento do caminhoγ por l(e1) + ··· + l (en). Definimos a distância dist(u, v) entre dois vértices de D, pelo comprimento de um (u, v)-caminho de comprimento mínimo; caso tal caminho não exista, definimos dist(u, v) = ∞.

Dizemos que um caminho que não repete vértice num digrafo é um caminho simples. Considere caminhosγ1:= u0, e1, u1, . . . , em, um e γ2:= v0, f1, v1, . . . , fn, vn para i ≤ j adotamos as notações

(7)

uiγ1:= ui, ei +1, . . . , em, um;

γ1uj := u0, e1, u1, . . . , ej, uj; e

uiγ1uj:= ui, ei +1, . . . , ej, uj.

Suponha que ui = vk, neste caso denotamos:

γ1uiγ2:= u0, e1, u1, . . . , ei, ui, fk+1, vk+1, . . . , fn, vn.

Lema 3.1 Seja D um digrafo, l : E (D) → R+e dist : V (D) × V (D) definida como acima. Então

1. (a) Se v0, e1, v1, . . . , en, vné um v0, vn-caminho de comprimento mínimo, então para cada 0 ≤ i ≤ j ≤ n, vi, ei +1, vi +1, . . . , ej, vj é um (ui, vj)-caminho de comprimento mínimo.

2. (b) Se u, v, w ∈ V (D) então dist(u, w) ≤ dist(u, v) + dist(v, w).

Prova: Exercício. ä

O algoritmo que usaremos para resolver este problema é o seguinte: Algoritmo de Dijkstra:

Entrada: Um digrafo D, com uma função comprimento l : E (D) → R+ e um vértice s ∈

V (D).

Saída: Um sistema de caminhos de comprimento mínimo de s para cada vértice de D e as respectivas distâncias.

Passo (0): Defina:

• d : V (D) → R+∪{∞} por d(s) = 0 e d(v) = ∞ para todo v ∈ V (D)−{s} (d(v) será igual

a dist(s, v) no fim do algoritmo)

• Funçõesα := (V (D) − {s}) → E(D) e β : (V (D) − {s}) → V (D) (tais α(v) e β(v) serão , respectivamente, a aresta e o vértice que antecedem v no s, v-caminho de compri-mento mínimo que o algoritmo encontrar.)

• U := V (D).

Passo (1): Se U = ;, pare.

Passo (2): Escolha u ∈ U tal que d(u) seja mínimo.

Passo (3): Para cada aresta e com origem em u e destino em algum vértice w ∈ V (D): se d (w ) > d(u) + l (e), então redefina d(w) := d(u) + l (e), α(w) = e e β(w) = u. Passo (4): Redefina U := U − {u} e retorne ao passo (1).

Após a execução do Algoritmo de Dijkstra,

γ(v) := s,...,β3(v),α(β2(v)),β2(v),α(β(v)),β(v),α(v),v

é um (s, v)-caminho de D de comprimento d (v). Isso será demonstrado no Teorema que sucede o algoritmo.

Exercício: execute o algoritmo e o procedimento acima descrito no digrafo representado na figura abaixo, onde os números são os comprimentos das arestas.

(8)

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

s

Teorema 3.1 Ao final da execução do algoritmo de Dijkstra, para cada v ∈ V (D), d(v) = dist(s, v)

eγ(v), como definido acima, é um (s,v)-caminho de comprimento mínimo.

Prova: Note que a partir do momento em que d (v) é alterado pela primeira vez, a cada alteração, temos queγ(v) é um (s,v)-caminho de comprimento d(v). Então basta provarmos que d (v) = dist(s, v) para cada v. Como os valores de d(v) só são atribuídos durante o algoritmo em casos em que temos um (s, v)-caminho de comprimento d (v), então para cada vértice v,

d (v) ≥ dist(s, v) durante toda a execução do algoritmo.

Vamos mostrar por indução no número de iterações que, ao escolhermos o vértice u no passo (2) do algoritmo, já temos d (u) = dist(s,u). Se estamos na primeira iteração, u = s e o re-sultado é óbvio. Suponha que estamos em outra iteração e tal rere-sultado é válido para iterações anteriores. Sejaγ := s,e1, v1, . . . , en, vn= u um (s, u)-caminho de comprimento mínimo de D. Então s ∉ U e u ∈ U . Seja k o menor índice tal que vk∈ U . Pela escolha de u, d(u) ≤ d(vk).

Então vk−1∉ U e vk−1 foi escolhido no passo (2) em uma iteração anterior do algoritmo e, por hipótese de indução, como o algoritmo nunca aumenta o valor de d , desde essa iteração temos, d (vk−1) = dist(s, vk−1). Ainda nessa iteração, pelo Lema 3.1, temos

dist(s, vk) = l (sγvk) = dist(s, vk−1) + l (ek) = dist(s, vk−1) + l (ek) = d(s, vk−1) + l (ek) e, por conseguinte, pelo passo (3), d (vk) = dist(s, vk) desde então.

Pela existência deγ e pelo Lema 3.1, dist(s,vk) ≤ dist(s,u). Portanto, na iteração em que u foi escolhido em (2), d (u) ≤ d(vk) = dist(s, vk) ≤ dist(s,u). Isso mostra o teorema. ä

Exercício: Como usar o Algoritmo de Dijkstra para encontrar caminhos mais curtos em grafos?

Exercício: Considere uma rede de linhas de ônibus entre várias cidades, a qual conhece-mos a duração de cada uma das viagens. Encontre um método para achar a rota de ônibus que leva um menor tempo entre duas cidades, considerando que os ônibus sempre partem em horas exatas (i.e. 1:00, 2:00, 3:00, etc.). (Dica: escolha um a função comprimento adequada.)

4 Grafos Planos

Considere o seguinte problema: um engenheiro quer fixar componentes eletrônicos em uma placa e imprimir ligações entre os mesmos, de forma que duas ligações não se cruzem. Esse problema pode ser modelado da seguinte forma. Temos um grafo G e queremos desenhar G no plano de forma que cada vértice seja ponto, cada aresta ligando dois vértices seja uma linha que liga seus vértices incidentes e que duas dessas linhas não se encontrem fora dos vértices.

(9)

Outro assunto que abordaremos nesta seção é o Teorema de Eüler sobre poliedros, a famosa fórmula: “vértices-arestas+faces=2”.

Para isso definimos o conceito de grafo plano. Um grafo plano é um grafo G tal que: 1. V (G) é um conjunto de pontos do plano;

2. E (G) é um conjunto de curvas poligonais sem auto-interseção fora de seus extremos. (Isso é, cada aresta e é uma curva e : [a, b] → R2com restrição injetiva a [a, b)).

3. Os vértices incidentes a uma aresta e são os seus vértices extremos.

4. Cada aresta só intersecta elementos de V (G) em seus extremos. (Isso é, não temos vér-tices “no meio” das arestas).

5. Se e e f são arestas distintas, então e ∩ f ⊆ V (G) (arestas não se intersectam fora dos vértices).

Considere, para o grafo plano G o conjunto D formado pela união das arestas e vértices de

G. As faces de G são as regiões deR2−D (dois pontos de R2−D estão na mesma região se existe uma curva contínua do plano que não intersecta D com extremos nesses pontos, neste caso o conceito coincide com o conceito topológico de componente conexa). Denotamos por F (G) o conjunto de faces de G.

Teorema 4.1 (Eüler) Se G é um grafo plano, então:

|V (G)| − |E(G)| + |F (G)| = 1 + ν(G).

Antes de demonstrar o Teorema de Eüler, vamos introduzir o conceito de floresta, que é um grafo sem circuitos.

Exercício: Mostre que se G é uma floresta, então

(a) Se G possui uma aresta, então G possui pelo menos dois vértices de grau 1. (Considere os extremos de uma caminho simples de G com o maior número possível de arestas.) (b) V (G) = E(G) + ν(G) (dica: use indução, considerando o grafo obtido de G pela remoção

de um vértice de grau 1 e sua respectiva aresta incidente).

Prova do Teorema de Euler para grafos planos: Vamos fazer a prova por indução no número de arestas de G. Se G é uma floresta, então note que F (G) = 1. Neste caso o resultado segue do exercício acima. Agora suponha que G possua ao menos um circuito e que e seja uma aresta de um circuito de G. Se removermos e de G, temos um grafo plano H , no qual as duas faces que faziam fronteira com e agora constituem uma única face. Note que H possui menos circuitos que G. Por hipótese de indução, o teorema é válido para H . Além disso, |F (H)| = |F (G)| − 1 e

|E(H)| = |E(G)| − 1, logo o teorema também vale para G. ä

Sejam G e H grafos. Um isomorfismo entre G e H é uma bijeçãoϕ : V (G) ∪ E(G) → V (H) ∪

E (H ) tal queϕ(V (G)) = V (H) e ϕ(E(G)) = E(H) e, para todos u ∈ V (G), e e ∈ E(G): e incide a u

em G se e só seϕE(e) incide aϕV(u) em H . Dizemos que dois grafos G e H são isomorfos se existe um isomorfismo entre G e H . Dizemos que um grafo é planar se for isomorfo a um grafo plano. A grosso modo, um grafo é planar se pode ser desenhado no plano sem cruzamento de arestas.

(10)

r r r r r r Q Q Q Q Q Q Q Q          S S S S S K3,3 r r r r r   Z Z Z    A A A  Q Q Q QC C C C C      K5

William Tutte [6] desenvolveu um algoritmo em tempo linear para descobrir se um grafo é planar e desenhá-lo no plano em caso afirmativo. Não vamos ver esse algoritmo aqui, pois envolve con-ceitos um pouco mais complexos. Vemos ao lados dois exemplos de grafos não planares.

Vamos provar que K5 não é planar. Suponha por contradição que K5seja isomorfo a um

grafo plano G. Pelo Teorema de Eüler, F (G) = E(G) − V (G) + 2 = 10 − 5 + 2 = 7. O menor circuito de K5 tem 3 arestas e cada aresta está contida na fronteira de 2 faces de G. Então

10 = E(G) ≥32F (G) =213, uma contradição. então K5não é planar.

Exercício: Mostre que K3,3não é planar. Mais geralmente, suponha que G é um grafo plano

simples. Denote g (G) como o tamanho do menor circuito de G (g de girth, cintura em inglês). Mostre que 2E (G) ≥ g (G)F (G).

Exercício: Mostre que todo grafo plano simples possui um vértice de grau no máximo 5.

5 Dualidade

Sejam G e H grafos planos, dizemos que um isomorfismoϕ de G em H é um isomorfismo topológico se para todo X ⊆ E(G), a união das arestas de X é a fronteira de uma face de G se e só se a união das arestas deϕ(X ) é a fronteira de uma face de H. Se existe um isomorfismo topológico entre G e H dizemos que G e H são topologicamente isomorfos.

Seja G um grafo plano. Definimos o grafo dual de G, denotado por G∗como o grafo plano construído da seguinte forma: Para cada face de G defina um vértice de G∗no seu interior, para cada par de faces F1e F2de G, contendo respectivamente vértices v1e v2de G∗, e, para cada

aresta e na simultaneamente nas fronteiras de F1e F2, trace uma aresta ede Gligando v1e

v2e cruzando e somente uma vez e não intersectando nenhuma outra aresta de G.

Note que podemos definir o grafo dual de G de muitas formas, afinal em cada face de G temos infinitos pontos para escolher e a cada par desses pontos temos infinitas formas de traçar uma aresta de um ao outro. Mas vamos verificar em seguida que quaisquer dois grafos duais de G são topologicamente isomorfos.

O seguinte lema é de fácil demonstração:

Lema 5.1 Se G é plano com dual G, então Gé conexo.

Se G é plano com dual Ge X ⊆ E(G), denotamos X:= {e: e ∈ X }.

Lema 5.2 Se G é conexo, então G é um dual de (G). Além disso X é o conjunto de arestas na

fronteira de uma face F de Gse e só se X = SG(v) para o vértice v no interior de F .

Prova: Podemos supor que G possui uma aresta. Seja F uma face de G. Então F possui uma aresta eem sua fronteira, a qual cruza somente uma vez uma aresta e de G. Além disso e não cruza outra aresta de G. Então G possui um vértice no interior de F . Com isso mostramos que cada face de G possui um vértice de G em seu interior. Mas pelo Teorema de Euler o número de faces de Gé igual ao número de vértices de G. Então cada face de G possui exatamente um vértice de G em seu interior.

Portanto, se eestá na fronteira de faces F e F0de G, então eliga os vértices de G no interior de F1e F2. Isso implica que G é um dual de G∗.

(11)

Sejam F , X e v como no enunciado. Então toda aresta de G incidente a V cruza uma aresta de X já que v é o único vértice no interior de F . Além disso, toda aresta de G que cruza uma aresta de F o faz apenas uma vez e, por isso, possui uma extremidade no interior de F , que necessariamente tem que ser v.

Agora, se v ∈ V (G), seja F a face de G que contém v. Pelo mesmo argumento F = SG(v). ä Lema 5.3 Se G é um grafo plano conexo, então todos seus duais são topologicamente isomorfos. Prova: De fato se Ge H são grafos duais de G então podemos definir um isomorfismo topológicoϕ entre eles da seguinte forma:

• para v ∈ V (G∗), definaϕ(v) como o vértice de H na mesma face de G que v e, • para e∈ E(G) cruzando e ∈ E(G) defina ϕ(e) como a aresta de H que cruza e.

Pelo lema anterior, tal isomorfismo é topológico, uma vez que as arestas nas faces de Ge H

estão definidas pelas estrelas de G ä

Teorema 5.1 Sejam G e H grafos planos conexos. Então G e H são topologicamente isomorfos

se e só se Ge Ho são.

Prova: Se G ou H possuem duas faces com mesmas arestas na fronteira, então estes grafos são circuitos ou árvores e o resultado é direto. Então reduzimos ao caso em que isso não ocorre.

Suponha queϕ é um isomorfismo topológico entre G e H. Defina para e ∈ E(G∗),ϕ(e∗) :=

ϕ(e)e, para v ∈ V (G), com arestas de fronteira no conjunto X , definaϕ(v) como o vértice

na face de H cujas arestas de fronteira são os elementos deϕ(X ).

Para a afirmação recíproca use o fato de que (G∗)∗= (H∗)∗. ä

Exercício: Encontre grafos planos G1e G2isomorfos tais que G1e G2∗não são isomorfos.

6 Grafos Platônicos e Poliedros

Dizemos que um grafo plano é Platônico se este e seu dual são ambos conexos, simples e regulares.

Teorema 6.1 A menos de isomorfismos topológicos, só existem cinco grafos Platônicos: o tetrae-dro, o octaetetrae-dro, o cubo, o dodecaedro e o icosaetetrae-dro, respectivamente representados abaixo:

(12)

Denotamos porδ(G) o grau mínimo de um grafo G, em particular, se G é regular δ(G) é grau comum de seus vértices.

Lema 6.1 Se G é um grafo platônico, então (|V (G)|,|E(G)|,|F (G)|,δ(G),δ(G)) é igual a um dos

elementos da lista abaixo: (a) (4, 6, 4, 3, 3);

(b) (8, 12, 6, 4, 3); (c) (6, 12, 8, 3, 4); (d) (20, 30, 12, 5, 3);

(e) (12, 30, 20, 3, 5).

Prova: Sejaδ = δ(G), δ= δ(G) e e = |E(G)|. Contando as incidências em G e G∗, temos

δ|V (G)| = 2e = δ.|V (G)| = δ.|F (G)| (1)

Substituindo essas igualdades na fórmula de Euler, temos2eδ +δ2e= 2+e. Dividindo essa última

igualdade por 2e, obtemos

1 δ+ 1 δ∗ = 1 e + 1 2. (2)

Masδ,δ≥ 3, então verifica-se nesta última desigualdade que únicas possibilidades para (δ, δ∗) são (3, 3), (4, 3), (3, 4), (5, 3) e (3, 5). De (2), deduzimos e e, de (1), deduzimos |V (G)| e |V (G∗)|. ä Definimos o grafo roda Wn como um grafo simples de conjunto de vértices {a, b1, . . . bn} e arestas {a, bi, bi, bi +1; i = 1,...,n}, onde denotamos bn+1= b1. Neste caso dizemos que a é o

núcleo da roda.

Lema 6.2 Suponha que G é um grafo plano simples cujas faces são todas triangulares, isso é

possuem 3 arestas. Seja v um vértice de G de grau n. Então G possui um subgrafo H ∼= Wntendo

v como núcleo, com demais vértices em NG(v) e tal que cada triângulo de H contendo v delimita

uma face de G.

Prova: Considere uma circunferência S de centro v pequena o suficiente, tal que S não con-tém nenhum outro vértice de G em seu interior e S intersecte somente uma vez cada aresta de

G incidente a v. Seja e1uma aresta incidente a v e e1, . . . , en as demais, na ordem que inter-sectam S no sentido horário a partir de e1. Seja, para cada i , wi o outro vértice incidente a ei. Seja en+1:= e1. Note que para cada i , ei e ei +1estão na fronteira da face que contém o trecho de S entre ei e ei +1. Seja fi a terceira aresta na fronteira desta face. Como cada face de G é triangular, então fi conecta wi e wi +1. Então G[{e1, . . . , en, f1, . . . , fn}] ∼= Wn. ä

Lema 6.3 Se G é um grafo plano isomorfo ao octaedro ou icosaedro então os únicos de triângulos

de G são suas faces e G todo isomorfismo entre G e o icosaedro é topológico.

Prova: Suponha que G é isomorfo ao icosaedro. Se G é isomorfo ao octaedro a prova é análoga. elo teorema de Euler G tem 20 faces. A soma do número de arestas incidindo em cada face de

G é igual a 2|E(G)| = 60. Como G é simples segue que cada face de G é um triângulo. Para

finalizar a prova basta mostrar que os único triângulos do icosaedro são suas faces. De fato. Sejam v, v1, w os vértices de um triângulo do icosaedro. Então, pelo Lema anterior o icosaedro

(13)

possui um subgrafo como na figura 3. Verifica-se que no caso do icosaedro, tal subgrafo é induzido. Então w ∈ {v2, v5} e o triângulo em questão é uma face do icosaedro.

Então como G é isomorfo ao icosaedro o número de triângulos em G é 20, mas como suas faces são triangulares esses triângulos determinam suas faces e segue o resultado. ä Prova do Teorema 6.1: Para concluir a prova, basta mostrar que a menos de isomorfismos, só existe um grafo plano G cumprindo cada uma das condições (a)-(e) do Lema 6.1.

(a): Como |V (G)| = 4 e δ(G) = 3 segue que cada vértice de G possui uma aresta em comum com cada outro e G é portanto, isomorfo ao tetraedro.

Figure 1: r r r r r@@ @ @ @ @ @ @ @ v1 v2 v3 v4 v Figure 2: r r r r r r J J J J J J J J a b c d x y Figure 3: r r r r r r Z Z Z     C C C C    !! ! a a a    S S S v1 v2 v3 v4 v5 v

(b): Seja v um vértice de G. Pelo Lema 6.2, existem vértices v1, v2, v3, v4∈ V (G) tais que o grafo

na Figura 1 é um subgrafo de G. Tal subgrafo não contém apenas um vértice w de G, o qual, pelo seu grau, é adjacente a v1, . . . , v4. Como G é simples, para completar o grau w está ligado

a v1, v2, v3e v4. Então G é isomorfo ao octaedro e, pelo Lema 6.3, topologicamente isomorfo

ao octaedro.

(c): Note que o dual de G é topologicamente isomorfo a um octaedro pelo item (b), então o resultado segue do Teorema 5.1 neste caso.

(d): Seja v ∈ V (G). Considere um subgrafo W de G tipo roda com v como núcleo, como no Lema 6.2. Seja H = G[V (G) − V (W )].

Afirmação 1: Se x e y são vértices distintos de H , então |NH(x) ∩ NH(y)| ≤ 2.

Suponha que x e y contradigam a Afirmação e sejam a, b e c vértices distintos de NH(x) ∩

NH(y). Seja z o vértice de G/E (W ) obtido pela contração em G de todas as arestas de W . Note que G/E (W ) possui um menor isomorfo a K3,3, pois nesse grafo todo vértice de {x, y, z} é

viz-inho de todo vértice de {a, b, c}.

Figure 4: r r r r r r Z Z Z     C C C C    !! ! a a a    S S S v1 v2 v3 v4 v5 v r r r r r r Z Z Z     C C C C    !! ! a a a    S S S w1 w2 w3 w4 w5 w Figure 5: r r r r r r r r r      H H H H H @ @ @    @ @ @ γ vr v1 vs w4 w5 w1 w2 w3 w d d d d d

Afirmação 2: G possui um vértice w cuja distância a v é ao menos 3.

Suponha o contrário. Seja H := G[V (G) − V (W )]. Então todo vértice de H é incidente a um vértice de NG(v). Se w ∈ NG(V ), então dW(w ) = 3. Mas dG(w ) = 5. Logo, cada vértice de NG(v)

(14)

é adjacente a dois vértices de H . Ou seja, existem 10 arestas ligando vértices de H1a vértices

de H . Isso implica que o número de incidências em H é igual a 2|E(H)| = |V (H)|.δ(G) − 10 = 6.5 − 10 = 20. ou seja |E(H)| = 10. Pelo princípio da casa dos pombos, existem em G dois vértices x e y com grau ao menos 4 cada. Mas se H possui um vértice z de grau 5, então

NG(z) ⊆ V (H) e NG(z) ∩ NG(v) é vazio, implicando que a distância de v a z em G é ao menos 3. Isso provaria a afirmação. Então assumimos que dH(x) = dH(y) = 4. Se x y ∉ E(G), então, como |V (H) − {x, y}| = 4, NH(x) = NH(y) = V (G) − {x, y} possui 4 vértices. Uma contradição coma Afirmação 1. Então x y ∈ E(H). Seja {a,b,c,d} := V (H) − {x, y}. Veja a Figura 2. Pela Afirmação 1, podemos supor sem perder generalidade que a, b, c ∈ NH(x) e b, c, d ∈ NH(y). Seja H0= H[a, b, c, d]. Como |NH(X ) ∪ NH(y)| = 7 e |E(H)| = 10, então |E(H0)| = 3.

Então umas das arestas de {ab, ac, bd , cd } está em E (H ). Por simetria, podemos supor sem perder generalidade que ab ∈ E(H). Note que

• ad ∈ E(H) implica x,b,d ∈ NH(y) ∩ NH(a); • ac ∈ E(H) implica x,b,c ∈ NH(y) ∩ NH(a); • bc ∈ E(H) implica a,c, y ∈ NH(x) ∈ NH(b);

Em todo caso, temos uma contradição com a afirmação 1. Só resta então que bd , cd ∈ E(H) e, portanto b, c, y ∈ NH(x)∩NH(d ). Novamente uma contradição com a Afirmação 1. concluímos assim a prova da Afirmação 2.

Sejam v e w vértices de G cuja distância seja ao menos 3. Então, pelo Lema 6.2, G possui subgrafos em conjuntos de vértices disjuntos como na Figura 4, em que os triângulos da figura são faces de G.

Afirmação 3: Para , j , k ∈ {1,...,5} com j < k, se viwj, viwk∈ E(G), então wj e wksão adja-centes. Suponha o contrário. podemos supor sem perda de generalidade que i = j = 1 e k = 3. Então w2e w4são adjacentes respectivamente a vr e vs com 2 ≤ r, s ≤ 5. Seja γ uma vr-vs -caminho de G[v, v2, v3, v4, v5]. Isso implica na contradição que G possui um menor K5como

na Figura 5. Uma contradição. Portanto vale a afirmação 3.

Afirmação 4: Se vivj, wkwl ∈ E(G), então {viwk, viwl, vjwk, vjwl}*E (G). Se for o caso,

exceto por v e w , cada vértice de {w, vi, vj} está ligado a cada vértice de {v, wk, wl}. Mas exis-tem r ∉ {i , j } e s ∉ {k,l } tais que vrws∈ E(G). Então v, vr, ws, w é um v − w-caminho que não intersecta {vi, vj, wk, wl} e, portanto G admite um menor isomorfo a K3,3. Uma contradição.

Então vale a Afirmação 4.

Figure 6: v v1 w2 v5 v3 v4 v2 w w3 w4 w5 w1

Considere a igualdade de índices módulo 5. Pela Afirmação 3, suponha sem perda de generalidade que v1w1, v1w2∈ E(G).

Pela Afirmação 4, sempre que vi −1wi −1, vi −1wi ∈ E(G), segue que wivi ∈ E(G). Analogamente, isso implica que viwi +1

E (G). Indutivamente segue que G é o grafo da Figura 6,

iso-morfo ao icosaedro.

Então G é isomorfo ao icosaedro e, pelo Lema 6.3, topologi-camente isomorfo ao icosaedro.

(e): Note que o dual de G é topologicamente isomorfo a um icosaedro pelo item (d), então o

(15)

7 Coloração dos vértices de um grafo

O seguinte problema foi amplamente abordado nos últimos anos. Existe uma companhia de telefonia celular que tem algumas torres implantadas e quer distribuir faixas de frequência de operação para as torres de forma que duas torres que tenham uma área de atuação em comum sempre trabalhem em faixas de frequência distintas. Além disso é desejável o uso de um menor número possível de faixas de frequência para que se possa usar faixas de frequência mais amplas e menos suscetíveis a interferências, além da questão dos custos pelos direitos das frequências nas localidades.

Todos os grafos que abordaremos nessa seção são simples, isso é não possuem laços, nem arestas em paralelo (circuitos com exatamente duas arestas).

Num grafo G, definimos uma coloração como uma função f : V (G) → {1,2,3,...} tal que

f (v) 6= f (w) se v e w são vértices adjacentes de G. Nesse contexto, dizemos que f (v) é a cor

do vértice v ∈ V (G). No nosso caso, os vértices representam as torres e as cores as faixas de frequências.

Ao contrário dos outros problemas aqui enunciados, ainda não existe uma forma eficiente de resolvê-lo apesar de seu enunciado extremamente elementar. Na verdade, muitos acred-itam que de fato não exista. Esse problemas pertence à classe dos problemas chamados NP-completos. A solução em tempo polinomial de um desses problemas (o que implica na solução de todos) ou a demonstração de sua impossibilidade hoje vale literalmente um premio mil-ionário. Frisamos que estamos falando em termos do funcionamento de computadores con-vencionais. Mas essa questão em si é um campo de conhecimento inteiro.

O que vamos fazer aqui é conseguir formas de soluções não ótimas, mas com alguns padrões de qualidade. Denotamos por∆(G) o grau máximo de G, isso é, o maior entre os graus dos vértices de G. O seguinte algoritmo colore os vértices de um grafo simples G com no máximo ∆(G) + 1 cores.

Algoritmo guloso para coloração de vértices: Ordene os vértices de G: v1, . . . , vn. Para

i = 1,...,n, nessa ordem, pinte o vértice vi com a menor cor ainda não usada nos vértices ad-jacentes a este.

Definimos a distância entre dois vértices u e v em um grafo conexo G como o número de arestas num u, v-caminho de G com número mínimo de arestas. Se G não é regular (um grafo é dito regular se todos seus vértices possuem o mesmo grau), então podemos ordenar os vértices de G de forma a obter um resultado melhor com o algoritmo guloso.

Lema 7.1 Suponha que G é um grafo simples conexo não regular∆(G) ≥ 2, então G admite uma

ordenação de seus vértices tal que o algoritmo guloso retorna uma coloração com no máximo

∆(G) cores.

Prova: Seja n = |V (G)| e vn um vértice de G de grau mínimo. Agora distribua os rótulos

vn−1, . . . , v1 nessa ordem, primeiro aos vértices de G com distância 1 de vn, depois aos vér-tices com distância 2, e assim sucessivamente. Verifique que essa distribuição retorna uma

coloração com no máximo∆(G) cores pelo algoritmo guloso. ä

Dizemos que um grafo H é um subgrafo induzido de G se existe um conjunto V ⊆ V (G) tal que V = V (H) e E(H) é o conjunto das arestas de G cujos vértices incidentes estão em V e uma aresta de H incide a um vértice se e somente se a mesma incidência ocorre em G. Neste caso denotamos H = G[V ]. Denotamos por δ(G) o grau mínimo de G, isso é, o menor entre os graus dos vértices de G.

(16)

Teorema 7.1 Seja k = max{δ(H) : H é subgrafo induzido de G}. Então G admite uma coloração

com no máximo k + 1 cores.

Prova: Seja V (G) = n. Montamos uma sequência de subgrafos induzidos Hn, . . . H1da seguinte

forma: definimos Hn= G. Para m = n, n −1, . . . , 2, definimos por vmum vértice de grau mínimo de Hm e definimos Hm−1= Hm[V (Hm) − {vm}]. Seja v1o vértice de H1. Note que o algoritmo

guloso aplicado em G com a ordenação de vértices v1, . . . , vnretorna uma coloração de G com

no máximo k + 1 cores. ä

Uma árvore é um grafo conexo sem circuitos.

Exercício: Mostre que toda árvore pode ser colorida com duas cores. Prove que um grafo G possui uma coloração de duas cores se e somente se G não possui circuitos com número par de arestas.

Exercício: Mostre que se adicionarmos uma aresta a uma árvore, obtemos um grafo com um único circuito.

References

[1] B. Bollobás, Modern Graph Theory, 1 ed. corrected, Springer, New York, 1998. [2] A. J. Bondy e U.S.R. Murty, Graph Theory, edition 2008, Springer, 2010.

[3] R. Diestel, Graph Theory, 4 ed. corrected, Springer, Heidelberg, 2012. [4] J. Edmonds, Paths, Trees, and Flowers, Canad. J. Math. 17, 449-467 (1965).

[5] A. Schrijver, Combinatorial Optimization (3 volume, A,B, & C), 1 ed., Springer, Heidelberg, 2003.

[6] W. Tutte, An algorithm for determining whether a given binary matroid is graphic. Proc. Amer. MAth. Sc. 11, 905-917.

Referências

Documentos relacionados

Antônio Carlos Magalhães, 4.362 - Pituba - Salvador/BA Local: Terminal RODOVIÁRIO DE SALVADOR.. LILI, S/N - POVOADO DE BARRA GRANDE Local: ESCOLA MARIA AMÉLIA GENÊ

Em 1935, Philip Hall apresenta um teorema (conhecido como o teorema de Hall ou dos casamentos) onde estabelece uma condição necessária e suficiente para a existência de um

O número de espiras da bobina secundária reduziu a metade do número da bobina primária. Com uma voltagem alternada de 120 V na primária a voltagem na bobina

Domínio de tópicos atuais e relevantes de diversas áreas, tais como política, economia, sociedade, educação, tecnologia, energia, relações

Entretando, para assegurar a sustentabilidade da bacia outras ações reguladores podem ser desenvolvidas como: realizar os estudos aqui feitos com outros níveis

A comparação entre doxiciclina (100 mg, a cada 12 horas) e ofloxacino (300 mg, a cada 12 horas), ambos usados por via oral durante 7 dias, para o tratamento de uretrite não

Mesmo sendo um experimento inicial, ele serviu para visualizar inicialmente algumas características dos vídeos que são fundamentais ou não para o ensino e a

ficará impossibilitado de realizar a prova em condições especiais. A candidata que estiver amamentando poderá solicitar atendimento especial, mediante requerimento