Professional Documents
Culture Documents
A primeira evidência do uso de grafos foi em 1736 quando Euler os utilizou para resolver o
problema de caminhar nas pontes entre duas ilhas cortadas por um rio. Esse problema ficou
conhecido como o Problema das Pontes de Königsberg, no qual havia 7 pontes que cruzavam o rio
Pregel.
Motivação: A cidade de Königsberg é banhada pelo rio Pregel que, ao atravessar a cidade se
ramifica formando uma ilha (Kneiphof) que está ligada à restante parte da cidade por sete
pontes. Dizia-se que os habitantes da cidade, nos dias de descanso, tentavam efetuar um
percurso que os obrigasse a passar por todas as pontes, mas apenas uma vez em cada uma.
Como as suas tentativas sempre falharam, muitos deles acreditavam que não era possível
encontrar tal percurso. Será que tinham razão?
A partir da solução desse problema por Euler, grafos têm sido utilizados em grande variedade de
aplicações que vão de circuitos elétricos até ciências sociais.
Definição de grafo
Considere o mapa a seguir, com ruas, quadras residenciais, espaços verdes, lagos, etc.
Problema
Existem inúmeras possibilidades para a polícia controlar todos os parquímetros. O trabalho aqui
será o de ajudar o chefe da polícia a encontrar a solução ótima, o caminho mais eficiente que deve
tomar o seu subalterno, que viaja a pé, para controlar a totalidade dos parquímetros da sua zona.
O chefe da polícia tem dois objetivos em mente: (i) o polícia encarregado de efetuar a vistoria deve
percorrer todos os passeios que possuem parquímetros passando duas vezes pelo mesmo
percurso o menor número de vezes possível; (ii) o caminho deve começar e acabar no mesmo
ponto, por exemplo, no local onde deixou estacionada a viatura.
Pode-se pensar nesse problema em termos de uma estrutura chamada grafo um dos muitos
modelos matemáticos que ajuda a simplificar problemas matemáticos complexos.
[Grafo] Um grafo é um par ordenado de conjuntos disjuntos (V,A), onde V é um conjunto arbitrário
que se designa por conjunto dos vértices e A um subconjunto de pares não ordenados de
elementos (distintos) de V que se designa por conjunto das arestas.
Grafo G C
c d g
e
A D
a b f
G={V,A}
V = { A, B, C, D }
A = { (A,C,c), (A,C,d), (A,B,a), (A,B,b), (A,D,e), (B,D,f), (C,D,g) }
No caso do problema dos policiais citado anteriormente, pode-se representar todo o território a ser
patrulhado por um grafo: pode-se pensar que cada cruzamento é um vértice e cada rua com
parquímetro uma aresta.
Mapa
Grafo
Na figura abaixo se efetua uma simplificação do problema: despreza-se o comprimento das ruas e
esquinas. Além disso, são mostrados dois percursos que o policial pode tomar para efetuar o
controle Em ambos os casos o ponto de partida coincide com o ponto de chegada. No entanto, a
segunda possibilidade é melhor que a primeira, uma vez que nesse caso o policial percorre cada
rua apenas uma única vez.
Antes de continuar a análise do problema, considere alguns conceitos importantes na teoria dos
grafos. Esses conceitos são bastante simples, embora seja apresentado com certo formalismo.
Grafo G C
c d g
e
A D
a b f
[Dígrafo (Grafo orientado)] Seja D=(V,A) um grafo constituído de um conjunto finito não vazio de
V (os vértices) e um conjunto A (as arestas orientadas) de pares ordenados de vértices. Portanto
em um dígrafo cada aresta (x,y) possui uma única direção de x para y.
Emerson Antonio
A relação definida por A não é simétrica, pois se <x é pai/mãe de y>, não é o caso de <y é
pai/mãe de x>. Há, portanto, uma orientação na relação, com um correspondente efeito na
representação gráfica de D.
[Laço] Um laço é uma aresta ou arco do tipo a=(v,v), ou seja, que relaciona um vértice a ele
próprio.
[Arestas paralelas] Arestas paralelas são duas arestas com as mesmas extremidades. Por
exemplo, no grafo a seguir, as arestas a e b são paralelas.
G = {V,A} sendo
V={1,2,3,4}
A={(1,2,a),(1,2,b),(2,2,c),(2,3,d),(1,3,e),(3,4,f)}
Laço c
O nó 2 tem grau 4
2
b
Arestas paralelas d
a
e f
1 3 4
1 2 1 5
3 4 6
2
Grafo Euleriano 4
Grafo Semi-Euleriano
1 2 1 2
5 5
3 4 3 4
Os problemas desta classe são, de modo geral, de dificuldade maior que os problemas eulerianos.
Enquanto que um grafo euleriano pode ser verificado em tempo linear, não se conhece algoritmo
polinomial para verificar se um grafo é hamiltoniando, exceto para casos particulares. Por exemplo,
não é complicado verificar que um grafo completo possui um ciclo hamiltoniano em tempo O(n2).
Exercício _____________________________________________________________
Matriz de adjacência
Suponha que um grafo possui n vértices numerados V={1,2,3,4}. Essa numeração impõe uma
ordem arbitrária nos vértices. No entanto, é importante ressaltar que essa ordem não influencia no
conjunto. A partir dela é possível construir uma matriz n x n onde o elemento i,j representa a
quantidade de arestas.
b
1 2 3 4
1 2 1 2
f c
2 2 1 1 a
3 1 1 1 d e
1 3 4
4 1
Para um grafo orientado (dígrafo) as arestas são apenas representadas na respectiva direção, ou
seja, a matriz não necessariamente será simétrica.
b
1 2 3 4
1 1 1 2
f c
2 1 1 1 a
3 d e
1 3 4
4 1
Lista de adjacência
5 3
3
8 7 8
7 1 2
9 6
1 2 4
5 4
1
7
1 2 5
7
9 6
2 3 4 3 4
8 4
6
A B C D E A B C D E
A 0 1 1 1 0 A 0 0 2 1 0
B 1 0 0 0 1 B 0 1 0 0 0
C 1 0 0 0 1 C 0 1 0 1 1
D 1 0 0 0 1 D 2 1 0 1 1
E 0 1 1 1 0 E 0 1 1 1 0
A B C D A B C D
A 2 1 0 0 A 0 1 2 0
B 1 0 1 1 B 1 0 0 0
C 0 1 1 2 C 2 0 0 2
D 0 1 2 0 D 0 0 2 0