Teoria dos Grafos: Árvores e Fluxo em Redes
Teoria dos Grafos: Árvores e Fluxo em Redes
Material Teórico
Árvores e Ordenação Topológica
Revisão Textual:
Prof. Me. Luciano Vieira Francisco
Árvores e Ordenação Topológica
• Introdução;
• Árvore;
• Ordenação Topológica e Algoritmos de Fluxo de Rede;
• Fluxo em Redes.
OBJETIVO DE APRENDIZADO
• Conhecer todos os conceitos de árvores e topologia.
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem
aproveitado e haja maior aplicabilidade na sua
formação acadêmica e atuação profissional, siga
algumas recomendações básicas:
Conserve seu
material e local de
estudos sempre
organizados.
Aproveite as
Procure manter indicações
contato com seus de Material
colegas e tutores Complementar.
para trocar ideias!
Determine um Isso amplia a
horário fixo aprendizagem.
para estudar.
Mantenha o foco!
Evite se distrair com
as redes sociais.
Seja original!
Nunca plagie
trabalhos.
Não se esqueça
de se alimentar
Assim: e de se manter
Organize seus estudos de maneira que passem a fazer parte hidratado.
da sua rotina. Por exemplo, você poderá determinar um dia e
horário fixos como seu “momento do estudo”;
No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você tam-
bém encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua
interpretação e auxiliarão no pleno entendimento dos temas abordados;
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e de
aprendizagem.
UNIDADE Árvores e Ordenação Topológica
Introdução
Nesta Unidade estudaremos conceitos importantes sobre grafos, árvore, orde-
nação topológica e fluxo em redes. Tais conceitos são de suma importância no
estudo de grafos, além de aplicáveis em diversos problemas. Por exemplo, em pro-
jeto de circuitos eletrônicos frequentemente é necessário tornar os pinos de vários
componentes eletricamente equivalentes, juntando a fiação de todos. Nessa mode-
lagem, para interconectar um conjunto de n pinos, podemos utilizar um arranjo de
n-1 fios, cada qual conectado a dois pinos. Assim, de todos os arranjos possíveis,
aquele que utiliza a quantidade mínima de fios é normalmente o mais desejável.
Este problema é facilmente modelado com árvores – veremos mais detalhes.
Árvore
De uma maneira bem simples, podemos definir uma árvore como um grafo
conexo e acíclico. Todavia, essa conceituação é bem sucinta. Uma definição mais
completa e tradicional pode se dada a seguir:
Na teoria dos grafos, árvores são estruturas que podem ser utilizadas para mo-
delar diversos problemas, estes que podem ser encontrados em diversas áreas,
desde a computação, até a comunicação. A Figura 1 apresenta alguns exemplos
de árvores:
8
a) Árvore ponderada b) Árvore não ponderada c) Estrela
7 2 1 2 2
4 1 1
1 3
1 2 3 3
4
4 7 4 6
2 7 6
2
6
5 5 5
Árvore Geradora
Uma árvore geradora de um grafo G é um subgrafo gerador conexo e acícli-
co. Assim, todo grafo conexo possui, pelo menos, uma árvore geradora. Vale
lembrar que um grafo acíclico é aquele que não possui círculos, ou seja, as suas
arestas não formam círculos. A Figura 2 apresenta exemplos de árvores geradas
de um grafo:
4 5 6 4 5 6 5 6
7 8 9 7 8 9 7 8 9
Floresta
Na teoria dos grafos, floresta é um conjunto de árvores sem vértices em
comum. Uma floresta geradora contém todos os vértices de G. Podemos dizer
que uma floresta geradora é um subgrafo que generaliza o conceito de árvore
geradora. Assim, na floresta geradora cada componente conexo é uma árvore e
9
9
UNIDADE Árvores e Ordenação Topológica
cada vértice do grafo original está em alguma árvore. De maneira simples, uma
floresta geradora em G é um subgrafo acíclico e gerador – a Figura 3 exemplifica
florestas de um grafo:
5 6 7 5 6 7 5 6 7
8 9 10 11 8 9 10 11 10 11
Figura 3 – Florestas
Fonte: Adaptado de Goldbarg e Goldbarg, 2012
Aresta Elo
Na teoria de grafos, um conceito importante é o de aresta elo. Para entendê-lo
considere um grafo G = (N, M) e T (N, MT), uma árvore geradora de G, uma aresta
e ∈ M|MT, denominando-se elo de G em relação a T.
a) 10 b) 10 c) 10
1 2 3 1 2 3 1 2 3
e
e
8 9 4 8 9 4 8 9 4
7 6 5 7 6 5 7 6 5
10
a) Grafo G b) Árvore geradora mínima c) Árvore geradora máxima
5 5 5
10 12 10 12
8 7 1 6 7 1 6 8 6
8 5 5 8
4
1 4 1 2 1 4 1 2
8 5 8 5
Outros dois conceitos importantes são árvore geradora de grau mínimo e árvore
geradora mínima com mínimo grau. Começaremos por árvore geradora de grau
mínimo, tratando-se de uma árvore geradora desenvolvida em um grafo não pon-
derado e possuindo o menor grau máximo possível. Agora, árvore geradora mí-
nima com mínimo grau é uma árvore geradora mínima de um grafo ponderado a
qual possui o menor grau máximo possível (GOLDBARG; GOLDBARG, 2012).
Algoritmo de Prim
O algoritmo de Prim é eficiente e elegante. Foi proposto por Robert C. Prim, em
1957. A ideia central desse algoritmo é incluir, de forma gulosa, um a um, os vértices
da árvore. São sempre considerados os conjuntos TMIN, T, e V, onde TMIN ⊆ M, T ⊆
N, V ⊆ N. Eis a descrição do algoritmo de Prim (GOLDBARG; GOLDBARG, 2012):
Quadro 1
11
11
UNIDADE Árvores e Ordenação Topológica
3 2 3 2
3 5 3 5
2 2
T = {1} ≠ N T = {1, 2} ≠ N
c) Aresta 2, 3 d) Aresta 2, 4
1 1
2 4 2 4
1 3 1 1 3 1
4 4
1 1 -2 6 1 1 -2 6
3 2 3 2
3 5 3 5
2 2
T = {1, 2, 3} ≠ N T = {1, 2, 3, 4} ≠ N
e) Aresta 4, 6 f)
1 1
2 4 2 4
1 3 1 1 3 1
4 4
1 1 -2 6 1 1 -2 6
3 2 3 2
3 5 3 5
2 2
T = {1, 2, 3, 4, 5, 6} ≠ N
T = {1, 2, 3, 4, 5} ≠ N
Figura 6 – Evolução do algoritmo de Prim
Fonte: Adaptado de Goldbarg e Goldbarg, 2012
12
Algoritmo de Prim Colorido
O algoritmo de Prim obtém a árvore geradora mínima. Todavia, caso haja um
controle das arestas que são examinadas, esse algoritmo ficará mais eficiente. Essa
versão do algoritmo de Prim é chamada de Prim colorido, vejamos (GOLDBARG;
GOLDBARG, 2012).
Quadro 2
1 1 -3 6 1 1 -3 6 1 1 -3 6
3 3 3
3 2 3 2 3 2
3 5 3 5 3 5
2 2 2
d) Vértice 2 é examinado e as Arestas e) Aresta (1, 3) é colorida de vermelho f) Vértice 3 é examinado. A aresta (3, 5)
(2, 4) e (2, 5) são pintadas de verde e a Aresta (2, 3) é colorida de azul é colorida de verde e a aresta (2, 5)
de vermelho
22 22 22
13
2 4 2 4 2 4 13
1 3 1 3 1 3
UNIDADE Árvores
1
e1 Ordenação
3 -3
Topológica
6 1 1 3 -3 6 1 1 3 -3 6
3 2 3 2 3 2
3 5 3 5 3 5
2 2 2
d) Vértice 2 é examinado e as Arestas e) Aresta (1, 3) é colorida de vermelho f) Vértice 3 é examinado. A aresta (3, 5)
(2, 4) e (2, 5) são pintadas de verde e a Aresta (2, 3) é colorida de azul é colorida de verde e a aresta (2, 5)
de vermelho
22 22 22
2 4 2 4 2 4
1 3 1 3 1 3
1 1 -3 6 1 1 -3 6 1 1 -3 6
3 3 3
3 2 3 2 3 2
3 5 3 5 3 5
2 2 2
g) Aresta (3, 5) é pintada de azul h) Vértice 5 é examinado e as arestas i) A aresta (2, 4) é pintada de vermelho
(5, 6) e (5, 4) são coloridas de verde
22 22 22
2 4 2 4 2 4
1 3 1 3 1 3
1 1 -3 6 1 1 -3 6 1 1 -3 6
3 3 3
3 2 3 2 3 2
3 5 3 5 3 5
2 2 2
j) Dentre todas as verdes, a menor é (5, 4) Então l) O vértice 4 é examinado e a aresta (4, 6)
ela é pintada de azul e incluída na solução é colorida de vermelho e a (5, 6) de azul, i = n –1 e fim
22 22
2 4 2 4
1 3 1 3
1 1 -3 6 1 1 -3 6
3 3
3 2 3 2
3 5 3 5
2 2
Algoritmo de Kruskal
Além do algoritmo de Prim, diversos outros foram formulados para obter a ár-
vore geradora mínima, entre os quais encontra-se o algoritmo de Kruskal, proposto
por Joseph B. Kruskal, em 1956.
14
Quadro 3
1
6
3 9
2 3 4 Vetor H
8 3
1
2 1 h1 – (3, 6) = 1; h2 – (4, 7) = 1; h3 – (5, 6) = 2;
h4 – (2, 3) = 3; h5 – (2, 6) = 3; h6 – (6, 7) = 5;
2 5
5 6 7 h7 – (1, 3) = 6; h8 – (2, 5) = 8; h9 – (3, 4) = 9;
a) Grago G exemplo para o algoritmo Kruskal b) Ordenação das arestas de G em H
1 Vetor H 1 Vetor H
h1 – (3, 6) = 1; h1 – (3, 6) = 1;
h2 – (4, 7) = 1; h2 – (4, 7) = 1;
h3 – (5, 6) = 2; h3 – (5, 6) = 2;
2 3 4 h4 – (2, 3) = 3; 2 3 4 h4 – (2, 3) = 3;
h5 – (2, 6) = 3; h5 – (2, 6) = 3;
1 h6 – (6, 7) = 5; 1 1 h6 – (6, 7) = 5;
h7 – (1, 3) = 6; h7 – (1, 3) = 6;
h8 – (2, 5) = 8; h8 – (2, 5) = 8;
5 6 7 h9 – (3, 4) = 9; 5 6 7 h9 – (3, 4) = 9;
1 Vetor H 1 Vetor H
h1 – (3, 6) = 1; h1 – (3, 6) = 1;
h2 – (4, 7) = 1; h2 – (4, 7) = 1;
h3 – (5, 6) = 2; h3 – (5, 6) = 2;
2 3 4 h4 – (2, 3) = 3; 2 3 3 4 h4 – (2, 3) = 3;
h5 – (2, 6) = 3; h5 – (2, 6) = 3;
1 1 h6 – (6, 7) = 5; 1 1 h6 – (6, 7) = 5;
h7 – (1, 3) = 6; h7 – (1, 3) = 6;
2 h8 – (2, 5) = 8; 2 h8 – (2, 5) = 8; 15
5 6 7 h9 – (3, 4) = 9; 5 6 7 h9 – (3, 4) = 9; 15
2 3 4 h4 – (2, 3) = 3; 2 3 4 h4 – (2, 3) = 3;
h5 – (2, 6) = 3; h5 – (2, 6) = 3;
UNIDADE Árvores e Ordenação1 Topológica h6 – (6, 7) = 5; 1 1 h6 – (6, 7) = 5;
h7 – (1, 3) = 6; h7 – (1, 3) = 6;
h8 – (2, 5) = 8; h8 – (2, 5) = 8;
5 6 7 h9 – (3, 4) = 9; 5 6 7 h9 – (3, 4) = 9;
1 Vetor H 1 Vetor H
h1 – (3, 6) = 1; h1 – (3, 6) = 1;
h2 – (4, 7) = 1; h2 – (4, 7) = 1;
h3 – (5, 6) = 2; h3 – (5, 6) = 2;
2 3 4 h4 – (2, 3) = 3; 2 3 3 4 h4 – (2, 3) = 3;
h5 – (2, 6) = 3; h5 – (2, 6) = 3;
1 1 h6 – (6, 7) = 5; 1 1 h6 – (6, 7) = 5;
h7 – (1, 3) = 6; h7 – (1, 3) = 6;
2 h8 – (2, 5) = 8; 2 h8 – (2, 5) = 8;
5 6 7 h9 – (3, 4) = 9; 5 6 7 h9 – (3, 4) = 9;
1 Vetor H 1 Vetor H
h1 – (3, 6) = 1; h1 – (3, 6) = 1;
h2 – (4, 7) = 1; h2 – (4, 7) = 1;
h3 – (5, 6) = 2; h3 – (5, 6) = 2;
1 3 3 4 h4 – (2, 3) = 3; 2 3 3 4 h4 – (2, 3) = 3;
h5 – (2, 6) = 3; h5 – (2, 6) = 3;
3 1 1 h6 – (6, 7) = 5; 1 1 h6 – (6, 7) = 5;
h7 – (1, 3) = 6; h7 – (1, 3) = 6;
2 h8 – (2, 5) = 8; 2 5 h8 – (2, 5) = 8;
5 6 7 h9 – (3, 4) = 9; 5 6 7 h9 – (3, 4) = 9;
1
6
2 3 3 4
1 1
2 5
5 6 7
Ordenação Topológica e
Algoritmos de Fluxo de Rede
Segundo Cormen e colaboradores (2002), ordenação topológica é uma ordena-
ção linear de todos os seus vértices, tal que se G contém uma aresta (u, v), então u
aparece antes de v na ordenação. Para isso, o grafo deve ser acíclico e orientado.
Caso o grafo não seja acíclico, então não é possível nenhuma ordenação linear.
Podemos dizer que uma ordenação topológica de um grafo pode ser vista como
uma ordenação de seus vértices ao longo de uma linha horizontal, de tal forma que
todas as arestas orientadas sigam da esquerda para a direita.
16
peças de roupas antes de outras – por exemplo, meias antes de sapatos –; já outros itens
podem ser colocados em qualquer ordem. Assim, no grafo apresentado na Figura 9
uma aresta (u, v) indica que a peça de roupa u deve ser vestida antes da peça v.
Meias 17/18
11/16 Cuecas Relógio 9/10
Sapatos 13/14
12/15 Calças
Camisa 1/8
6/7 Cinto Gravata 2/5
Paletó 3/4
Figura 9 – Grafo do exemplo
Fonte: Adapatado de Cormen e colaboradores, 2002
Portanto, uma ordenação topológica desse grafo fornece uma ordem ao proces-
so de se vestir (CORMEN et al., 2002).
Fluxo em Redes
Segundo Goldbarg e Goldbarg (2012), os problemas de fluxo abordam a comple-
xidade de fazer circular determinado produto através dos vértices e das arestas de
uma rede. Assim, esse tipo de problema associa aos componentes de um grafo já
conhecido um novo elemento denominado fluxo. Habitualmente, os problemas de
fluxo são associados às diversas situações reais de distribuição de água, eletricidade,
produtos industriais, movimentação de veículos, entre outros fatores.
17
17
UNIDADE Árvores e Ordenação Topológica
Em Síntese Importante!
Nesta Unidade estudamos conceitos importantes sobre grafos, tais como árvore, orde-
nação topológica e fluxo em redes. Esses conceitos são de suma importância no es-
tudo de grafos, sendo aplicados em diversos problemas. De uma maneira bem simples,
podemos definir árvore como um grafo conexo e acíclico.
Ordenação topológica foi o segundo assunto estudado nesta oportunidade, de modo
que podemos dizer que uma ordenação topológica de um grafo pode ser vista como uma
ordenação de seus vértices ao longo de uma linha horizontal, de tal forma que todas as
arestas orientadas sigam da esquerda para a direita. Ademais, fluxo em rede envolve a
complexidade de fazer circular determinado produto através dos vértices e das arestas
de uma rede.
Por sua vez, árvore geradora de um grafo G é um subgrafo gerador conexo e acíclico.
Logo, na teoria de grafos uma árvore geradora mínima (TMIN) é a árvore geradora de me-
nor custo entre todas as possíveis em G. Existem dois algoritmos clássicos para se obter a
árvore geradora mínima, os algoritmos de Kruskal e de Prim.
18
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Livros
Introdução à teoria dos grafos
CLÁUDIO, L. L. Introdução à teoria dos grafos. [S.l.]: Impar, 2016.
Fundamentos da teoria dos grafos para computação
NICOLETTI, A. M.; HRUSCHKA JR, E. R. Fundamentos da teoria dos grafos para
computação. São Carlos, SP: Edufscar, 2006.
Grafos e redes: teoria e algoritmos básicos
SIMÕES, J. M. S. Grafos e redes: teoria e algoritmos básicos. [S.l.]: Interciência, 2013.
Leitura
Matemática discreta: combinatória, teoria dos grafos e algoritmos
[Link]
19
19
UNIDADE Árvores e Ordenação Topológica
Referências
BOAVENTURA NETTO, P. O. Grafos: teoria, modelos, algoritmos. 2. ed. São
Paulo: Blucher, 2001.
20