Você está na página 1de 10

Problemas

As Pontes de Königsberg
A cidade alemã de Königsberg (hoje Kaliningrado) possuía sete pontes
sobre o rio Pregel. As pessoas se perguntavam se seria possível
atravessar cada ponte apenas uma vez e retornar ao ponto de origem.
Ninguém conseguia encontrar tal percurso, até que, em 1736, o
matemático suíço Leonhard Euler provou que tal rota não existia. Seu
trabalho, publicado pela Academia de Ciências de St. Petersburg
(Academiae Scientiarum Imperialis Petropolitanae), foi o primeiro
trabalho que definia um problema deste tipo. O que ele fez foi, em suas
próprias palavras: "... formulei o problema geral: qualquer que seja a
disposição e divisão do rio, onde que quer as pontes estejam, alguém
pode descobrir se é ou não possível atravessar cada ponte exatamente
uma vez?".

Ele representou cada região - A, B, C e D - por um ponto, chamado nó


em um grafo, e cada ponte - a, b, c, d, e, f e g - conectando estas
regiões por uma linha, chamada de aresta. Assim, obteve uma
representação gráfica do problema como ilustrada abaixo:

O trabalho de Euler iniciou um novo ramo da matemática, a Teoria dos


Grafos, e resultou em um teorema de existência para um percurso
abrangente em relação às arestas de um grafo não orientado, utilizando
cada aresta uma única vez. Ele provou que para tal percurso existir, o
grafo deve ser conexo (uma região precisa ser acessada todas as outras
através de pontes) e cada nó deve ter grau par (o número de pontes em
cada região precisa ser par). Claramente, este não é o caso das pontes
de Königsberg.

Tal percurso é chamado eulerianoe pode ser fechado (caso em que o


grafo respectivo é também dito ser euleriano) ou aberto (quando o
grafo é chamado unicursal). Mais geralmente, pode-se caracterizar a
existência de um número determinado de percursos que particionam o
conjunto de arestas em grafos não orientados quaisquer e enfim, teoria
semelhante pode ser desenvolvida para grafos orientados.

Teorema de Euler:

Um grafo G (V, E) conexo e não orientado admite um ciclo euleriano se


e somente se não possuir vértices de grau ímpar.

Prova:

 Seja G euleriano. Ao procurarmos percorrer nele um ciclo euleriano


poderemos escolher um vértice e daí prosseguir atravessando os demais
vértices, apagando as arestas utilizadas. Ao atravessarmos um vértice
x, o grau(x) diminuirá portanto de duas unidades; logo, todos os
vértices intermediários no percurso deverão ter grau par, ou será
impossível anular os seus graus ao final deste processo. O vértice inicial
também deverá ter grau par, visto que o uso de uma de suas arestas
adjacentes ao início o deixará com grau vigente ímpar, o que permitirá a
sua anulação ao final do processo.

  Seja G = (V, E) um grafo com todos os vértices de grau par.


Consideremos uma aresta (x,y) cuja supressão mantenha a conexidade
de G e procuremos um percurso  xy que não a utilize, eliminando as
arestas percorridas. Há dois casos possíveis:
a. o percurso utiliza todas as arestas restantes do grafo: então ele,
juntamente com (x,y) , formará um ciclo euleriano;
b. o percurso não utiliza todas as arestas do grafo; então, pelo
mesmo raciocínio anterior, os graus finais não nulos dos vértices
intermediários serão pares, o que permitirá a definição de ciclos
secundários saindo e voltando para  , que podem ser
xy

percorridos com eliminação de arestas até que todos os graus


sejam anulados. Ao chegar a y, atravessa-se (x,y), o que anula os
graus desses vértices; tem-se assim um ciclo euleriano.

A figura abaixo ilustra a situação descrita neste último caso.

A generalização para grafos com vértices de graus quaisquer é dada


pelo seguinte teorema:

Teorema 2:

O número mínimo de percursos que particionam o conjunto de arestas


de um grafo G = (V, E) não orientado com 2k vértices de grau ímpar é k
(k  N–{0}).

Prova: 

Consideremos um grafo euleriano G e um ciclo euleriano em G. Para


obtermos 2k vértices de grau ímpar, bastará retirarmos do grafo k
arestas não adjacentes duas a duas. Após esta retirada, o ciclo ficará
subdividido em k percursos e eles particionarão o conjunto de arestas,
uma vez que o ciclo assim subdividido era euleriano. Poderemos obter
uma partição com mais de k percursos, bastando para isso subdividir
um ou mais dos já obtidos sem eliminar arestas, mas não poderemos
obter o resultado desejado com menos de k percursos; logo, k é
mínimo.

Obs.: Convém lembrar que o número de vértices de grau ímpar em um


grafo é sempre par, visto ser a soma dos graus igual ao dobro do
número das arestas.

Em grafos orientados, a consideração de circuitos e caminhos eulerianos


envolve uma nova definição, que é a de grafo pseudo-simétrico:

Definição: Um grafo orientado G (V, E) é pseudo-simétricose e


somente se:

    d+(x) = d-(x),  x V, onde d+(x) é o número de arcos chegando e d-


(x) é o número de arcos saindo.

Teorema 3:

Um grafo orientado conexo admite um circuito euleriano se e somente


se for pseudo-simétrico.

Prova:

Semelhante à do teorema de Euler, particularizando os percursos como


caminhos.

Obs.: Todo grafo simétrico é pseudo-simétrico e todo grafo simétrico


corresponde a um grafo não orientado; logo, o Teorema de Euler de ser
visto como um corolário do Teorema 3.

Um teorema análogo ao Teorema 2, válido para grafos orientados, é o


seguinte:

Teorema 4:
Em um grafo orientado conexo não pseudo-simétrico, o número mínimo
de caminhos que particionam o conjunto de arcos é igual a:

k =  (d+(x) - d-(x)),  x S = (x) – d+(x)), x T

onde

S = {x  X | d+(x) > d-(x)}

T = {x  X | d+(x) < d-(x)}

Observamos que, pelo Teorema 3, para transformar G (V, E) em um


grafo H euleriano, devemos adicionar a E um total de k arcos da forma
(T, S) , o que permitirá igualar os semigraus interior e exterior em todos
os vértices. O novo grafo possuirá, portanto, um circuito euleriano;
removendo em seguida os k arcos adicionados teremos de novo G,
agora particionado em k caminhos. Por um raciocínio análogo ao do
Teorema 2, concluímos que k é mínimo.

O Problema do Carteiro Chinês


(Caminho mínimo em grafos não-orientados)

Em 1962, 226 anos após a descoberta de Euler em Königsberg, o


matemático chinês Kwan Mei-Ko levantou uma importante questão
acerca do problema da travessia das pontes: "Dado que é impossível
atravessar cada ponte exatamente uma vez e retornar para o ponto de
partida, qual é o número mínimo de travessias redundantes que é
preciso fazer?"
Este é o tipo de problema que um carteiro enfrenta quando está
entregando cartas. Suponha que cada uma das arestas no grafo acima
seja uma rua onde cartas precisam ser entregues, e cada um dos nós
seja um cruzamento (os números indicam o grau de cada vértice). O
carteiro precisa atravessar cada rua para entregar as cartas, mas deseja
minimizar a quantidade de travessias repetidas necessárias.

A solução de Kwan foi tratar cada travessia duplicada em uma aresta


como se estivesse adicionando arestas duplicadas no grafo. Essas
arestas "duplicadas" poderiam prover cada nó com um número par de
arestas. Este processo é chamado de eulerização do grafo.

Uma vez que o grafo foi eulerizado, é possível encontrar um caminho


euleriano no grafo modificado resultante. Por exemplo, o carteiro da
figura acima pode percorrer a seguinte rota mínima para entregar as
cartas: a  b  c  b  e  f  g  d  d, repetindo apenas as
arestas "b" e "d" em sua rota.

Em homenagem a Kwan, este problema ficou conhecido como "The


Chinese Postman Problem".

Obs.: Na prática, os grafos costumam ser valorados, ou seja, cada


aresta tem um custo associado. O problema então passa a ser encontrar
não só um caminho euleriano, mas um caminho euleriano que seja
mínimo (possua menor custo).

O Problema do Varredor de Ruas


(Caminho mínimo em grafos orientados)

Muitos anos depois do problema proposto por Kwan, uma variação do


problema do carteiro chinês procurava pelo caminho mínimo se as
arestas só pudessem ser percorridas em uma direção. Como este é o
problema encontrado por varredores de rua nas avenidas de mão única
de Nova York, este problema ficou conhecido como "The New York
Street Sweeper Problem".

Obs.: Arestas que só podem ser percorridas em uma direção são


chamadas arcos. E um grafo formado apenas por arcos é chamado grafo
direcionado, ou digrafo.

Para construir um caminho euleriano no problema do carteiro chinês, é


preciso observar o grau de cada vértice. No caso de um digrafo, um
caminho euleriano precisa também levar em conta a direção dos arcos
em cada nó. Para eulerizar um digrafo, é necessário ter um número
igual de arcos chegando e saindo em cada nó.
Então, contando cada arco chegando como "+1" e cada arco saindo
como "-1", podemos calcular a polaridade de cada nó no digrafo. Na
figura acima, a polaridade de cada nó é mostrada, antes e depois da
eulerização.

Para criar um grafo euleriano, é preciso duplicar arcos entre nós com
polaridade positiva e negativa, de maneira que cada nó termine com
polaridade zero. Este balanceamento de arcos entrando e saindo tem o
mesmo objetivo de ter grau par nos grafos não-direcionados: qualquer
entrada em um nó precisa ter saída.

Na figura, os arcos "b", "e" e "g" foram duplicados para balancear o


digrafo. O varredor de rua pode agora usar o seguinte caminho
direcionado mínimo: a  b  c  b  f  e  g  d  e  g,
repetindo apenas os segmentos "b", "e" e "g" em sua rota.

No entanto, uma dificuldade pode aparecer: caso no problema original


existam arcos nos dois sentidos (mão dupla), o uso de um deles
impedirá um algoritmo de busca de considerar mais adiante o outro para
uso, tal como o exige a própria lógica do problema, visto que bastaria
uma única passagem pelo trecho de mão dupla.

A primeira idéia para se procurar solucionar essa dificuldade seria a de


procurar determinar em cada par de arcos simétricos um sentido a ser
usado, abandonando-se o outro; mas isso não é admissível por
equivaler à retirada de arcos, o que modifica o grafo. Supondo-se que
se conseguisse contornar essa dificuldade, restaria ainda o fato que,
assim procedendo, teríamos ao final escolhido r arcos em ordem
lexicográfica de vértices, de um total de k pares (ou seja, do vértice i
para o vértice j, com i < j) e, então, k-r no sentido oposto. Como não
há, no pior caso, critérios para essa escolha, para um dado r teremos
Ck,r possibilidades de escolha e, somando-se para todos os valores de r,
um total de 2k possibilidades; logo, o problema é exponencial em k. A
próxima figura esquematiza a situação:

Obs.:Evidentemente se os k pares de arcos simétricos corresponderem


a uma só rua de mão dupla, poderemos pensar em escolher um único
sentido ao longo da mesma - mesmo assim será preciso intervir no
algoritmo para impedir a volta do percurso.

Este problema é conhecido na literatura como "Problema Euleriano


em Grafos Mistos", segundo alguns autores que definem grafos
possuindo arcos e arestas no conjunto de ligações (cada aresta sendo
equivalente a um par de arcos simétricos).