Apêndice F
Grafos Dirigidos
Muitos problemas de otimização combinatória são formuladas sobre grafos.
Este apêndice faz uma rápida revisão dos conceitos e da terminologia
da teoria dos grafos dirigidos.
F.1 Grafos dirigidos e seus arcos
Um grafo dirigido
(= directed graph)
é um par de conjuntos
em que é um conjunto finito não vazio e
um conjunto de pares ordenados de elementos de .
(Alguns livros dizem digrafo
(= digraph)
no lugar de grafo dirigido.)
Os elementos de são chamados nós
e os elementos de são chamados arcos
(= arcs).
[As letras
e são as iniciais de
vertex
e edge,
respectivamente.
(Quem sabe deveríamos escrever
e
em lugar de
e .)
A palavra vértice será aplicada apenas a vértices
de poliedros.]
Se é um conjunto de todos os pares ordenados de elementos de ,
dizemos que o grafo é completo.
Podemos dar um nome — como , por exemplo — a um grafo dirigido.
Nesse caso, o conjunto de nós do grafo é denotado por
e o conjunto de arcos por .
Um arco pode ser denotado simplesmente por .
O nó é a
ponta inicial
(= tail)
e o nó é a ponta final
(= head)
do arco.
Dizemos que um tal arco
sai de e
entra
em .
A ponta inicial de um arco também pode ser chamada
ponta negativa
e a ponta final pode ser chamada
ponta positiva.
[Outros livros adotam a convenção de circuitos elétricos
e dizem que a ponta inicial é positiva
e a ponta final é negativa
.]
Se é um arco, dizemos que é
vizinho direto
de
e é
vizinho inverso
de .
As pontas inicial e final de cada arco são distintas,
e portanto grafos dirigidos não têm laços
(= loops).
Além disso,
grafos dirigidos não têm arcos paralelos
,
pois dois arcos diferentes não podem ter a mesma ponta inicial
e a mesma ponta final.
Dois arcos e
são antiparalelos
se e .
O grau de entrada
(= indegree)
de um nó é o número de arcos que têm ponta final .
O grau de saída
(= outdegree)
de é o número de arcos que têm ponta inicial .
Uma fonte
(= source)
é qualquer nó que tenha grau de entrada nulo.
Um sorvedouro
(= sink)
é qualquer nó que tenha grau de saída nulo.
O número de nós de um grafo dirigido é denotado por
e o número de arcos por .
Portanto,
se é o grafo em discussão então e .
É claro que .
Um subgrafo
de um grafo dirigido
é qualquer grafo dirigido tal que
e .
Se ,
dizemos que
é um subgrafo gerador
(= spanning).
Dado um subconjunto de ,
se é o conjunto de todos os arcos de
que têm ambas as pontas em ,
dizemos que o subgrafo é
induzido por .
Esse grafo é denotado por .
Dado um subconjunto de ,
se é o conjunto de todos os nós de
que são ponta de arco de ,
dizemos que subgrafo é
induzido por .
Para qualquer nó de ,
denotamos por
o subgrafo induzido por .
Para qualquer arco ,
denotamos por
o subgrafo que tem conjunto de nós
e conjunto de arcos .
Para qualquer par de nós,
denotamos por
o grafo dirigido que tem conjunto de nós
e conjunto de arcos .
Um grafo dirigido é bipartido
se existe uma bipartição,
digamos ,
de tal que todo arco tem ponta inicial em
e ponta final em .
O grafo não-dirigido
subjacente a
(= underlying)
um grafo dirigido é o grafo não-dirigido tal que e
se e somente se ou .
Em termos informais,
é o grafo não-dirigido que se obtém quando ignoramos as orientações
de todos os arcos de .
Uma orientação
(= orientation)
de um grafo não-dirigido
é qualquer grafo dirigido
que satisfaz as seguintes condições:
e,
para cada aresta de ,
um e apenas um dos pares ordenado e é arco de .
Em termos informais,
é o grafo dirigido que se obtém
quando adotamos uma
das duas possíveis orientações de cada aresta de .
É claro que orientações de grafos não-dirigidos não têm
arcos antiparalelos.
F.2 Caminhos e ciclos
Um caminho (= path)
num grafo dirigido é qualquer sequência alternante
de nós e arcos tal que, para cada ,
o arco tem ponta inicial e ponta final
ou tem ponta final e ponta inicial .
(Note que os nós de um caminho não são necessariamente
distintos dois a dois.
A mesma observação vale para os arcos.)
Se , o arco é direto;
se , o arco é inverso.
Podemos dizer que os arcos diretos apontam da esquerda para a direita
,
enquanto arcos inversos apontam da direita para a esquerda
.
O nó é a origem
do caminho
e o nó é o término.
Dizemos que o caminho vai de a .
O comprimento
do caminho é ,
ou seja, o número de termos do caminho que são arcos.
O conjunto de nós de um caminho
é denotado por e o conjunto de arcos por .
Um caminho é subcaminho
de um caminho se pode ser obtido
pela remoção de termos
de .
(Por exemplo,
é um subcaminho de
.)
Um caminho
é segmento
de um caminho se pode ser obtido pela remoção
de termos do início e/ou do fim de .
(Por exemplo,
é um segmento de
.)
Um caminho
é quase-simples
(= edge-simple)
se não tem arcos repetidos, isto é,
se os arcos são diferentes entre si.
(Nada impede, entretanto, que o caminho tenha nós repetidos.
E nada impede que o caminho tenha um arco antiparalelo a outro.)
Se é um caminho quase-simples
então o comprimento de é igual a .
Um caminho é simples
se não tem nós repetidos.
(É claro que todo caminho simples é, em particular, quase-simples.)
Se é um caminho com origem e término então algum subcaminho
de é um caminho simples de a .
Dados caminhos
e ,
se o término do primeiro é igual à origem do segundo,
então os dois caminhos podem ser concatenados.
O resultado da concatenação é o caminho
.
A concatenação de dois caminhos e
é denotada por .
Caminhos dirigidos.
Um caminho é dirigido
(= dipath)
se todos os seus arcos são diretos.
Dizemos que um nó de um grafo dirigido está ao alcance
de um nó se existe um caminho dirigido de a .
Conexão.
Um grafo dirigido é conexo
se o grafo não-dirigido subjacente
for conexo.
Em outras palavras, um grafo dirigido é conexo
se, para cada par de seus nós,
existe um caminho (não necessariamente dirigido) de a
(e portanto também um caminho de a ).
Uma componente conexa
de um grafo dirigido é um subgrafo conexo maximal de .
Um grafo dirigido é fortemente conexo
se, para cada par de seus nós,
existe um caminho dirigido de a
e um caminho dirigido de a .
Ciclos.
Um ciclo
(= cycle)
é um caminho quase-simples
em que e .
Um ciclo é dirigido
se todos os seus arcos são diretos.
Lema F.1 (folclore)
Se todos os nós de um grafo dirigido
têm grau de entrada e grau de saída não nulos
então o grafo tem um ciclo dirigido. ■
Um ciclo é simples
se não tem nós repetidos exceto o último (que coincide com o primeiro).
Todo ciclo tem um segmento que é um ciclo simples.
Exercícios F.2
-
Prove que todo caminho com uma dada origem e um dado término
tem um subcaminho simples com origem
e término .
-
Prove o lema F.1.
-
Prove que todo ciclo tem um segmento que é um ciclo simples.
-
Mostre que todo grafo dirigido sem ciclos de comprimento ímpar
é uma orientação
de um grafo não-dirigido
bipartido.
Mostre que nenhuma orientação de um grafo não-dirigido bipartido
tem ciclos de comprimento ímpar.
F.3 DAGs
Um grafo dirigido é acíclico
se não tem ciclos dirigidos.
Grafos dirigidos acíclicos também são conhecidos pela abreviatura DAG
de directed acyclic graph.
Todos os caminhos dirigidos de um DAG são simples.
Lema F.2 (folclore)
Um grafo dirigido é acíclico se e somente se
tem uma permutação topológica. ■
Uma permutação do conjunto dos nós de um grafo dirigido é
topológica
se para cada arco , isto é,
se todos os arcos apontam da esquerda para a direita
na permutação.
Lema F.3 (folclore)
Em qualquer DAG, todo arco pertence a um caminho dirigido que
começa em uma fonte e termina em um sorvedouro. ■
Exercícios F.3
-
Prove os lemas
F.2
e F.3.
F.4 Florestas e árvores
Uma floresta orientada
(= oriented forest)
é um grafo dirigido sem ciclos
(em particular, sem ciclos dirigidos).
Portanto, toda floresta orientada é um DAG.
O grafo não-dirigido subjacente a uma floresta orientada é uma floresta.
Reciprocamente,
toda floresta orientada é uma orientação
de uma floresta.
Uma árvore orientada
(= oriented tree)
é uma floresta orientada conexa.
Em outras palavras, uma árvore orientada é uma orientação de uma árvore.
Para quaisquer dois nós e de uma árvore orientada,
existe um e um só caminho simples de a .
Para todo arco de uma árvore orientada ,
o grafo dirigido é uma floresta orientada
com exatamente duas componentes conexas.
Florestas e árvores radicadas.
Uma floresta radicada
(= rooted forest)
é uma floresta orientada
cada um de cujos nós tem grau de entrada ou .
Os nós com grau de entrada são as raízes
da floresta radicada.
Toda floresta radicada tem pelo menos uma raiz.
Todo nó de uma floresta radicada
é término de um único caminho dirigido simples que começa numa raiz.
Uma folha
de uma floresta radicada é um nó que tem grau de entrada
e grau de saída .
Uma árvore radicada
(= rooted tree)
é uma floresta radicada que tem uma só raiz.
Árvores radicadas também são conhecidas como arborescências
e como árvores divergentes.
Exemplo F.1:
A primeira figura representa uma árvore orientada.
A segunda representa uma árvore radicada.
Exemplo F.2:
Seja uma árvore radicada.
Para cada arco de ,
seja o conjunto de nós da componente conexa de
que contém a ponta final de .
(Em outras palavras,
é o conjunto de todos os nós de que estão ao alcance
da ponta final de .)
A coleção é
laminar.
Exercícios F.4
-
Árvores radicadas e coleções laminares.
No exemplo F.2,
mostre que a coleção é laminar.
-
Seja uma coleção laminar
de subconjuntos de um conjunto .
Mostre que pode ser representada por uma floresta radicada.
(Dica:
Cada elemento de é um nó da floresta
e, para cada elemento maximal
de ,
a floresta tem um arco .)
-
Mostre que toda floresta orientada é uma orientação
de um grafo não-dirigido bipartido.
F.5 Cortes
Dado um grafo dirigido e um subconjunto de ,
denotamos por
o conjunto .
Dizemos que um arco entra em
se e .
Dizemos que sai de
se e .
O conjunto de todos os arcos que saem de
é denotado por
(O na notação decorre de
nossa convenção
sobre qual das pontas de um arco é positiva e qual é negativa.)
Analogamente,
é o conjunto de todos os arcos que entram
em .
[Para justificar os superscritos
e ,
você pode imaginar que os nós são contas bancárias
e os arcos representam movimentação de dinheiro.
Assim, tudo que sai de uma conta é subtraído do saldo
e tudo que entra é somado.]
É claro que .
É claro também que
.
Se é um nó,
usamos as abreviaturas e
para e respectivamente.
O número é o grau de saída de e
o número é o grau de entrada de .
É claro que e .
É claro também que
Um corte
(= cut)
em um grafo dirigido
é o conjunto de todos os arcos que saem de algum conjunto de nós.
Em outras palavras, um corte é qualquer conjunto da forma ,
com .
(Pode parecer que um corte deveria ser
definido como ,
mas a definição que adotamos é mais útil.)
O conjunto é a margem negativa
do corte
e é a margem positiva.
Um corte é dirigido
(= directed)
se .
Exercícios F.5
-
Seja um nó de um grafo dirigido.
Mostre que
.
Mostre também que
.
-
★
Seja um corte dirigido em um grafo dirigido .
Mostre que não existe caminho dirigido em
que começa em e termina em .
F.6 Redes
Uma rede
(= network)
é um grafo dirigido juntamente com
uma ou mais funções que atribuem números
aos arcos e/ou aos nós do grafo.
O conceito é propositalmente vago.
Às vezes, a especificação de uma rede
inclui a designação de um ou dois nós
que desempenham um papel especial no problema
que está sendo estudado.
Por exemplo, se é um grafo dirigido e é uma função de em ,
podemos dizer que é uma rede.
Da mesma forma, se é uma função de em ,
podemos dizer que é uma rede.
F.7 Álgebra linear
A matriz de adjacências
de um grafo dirigido tem linhas e colunas indexadas pelos nós.
A componente da matriz na posição
vale se é um arco e vale em caso contrário.
A matriz de incidências
tem linhas indexadas pelos nós e colunas indexadas pelos arcos.
A coluna que corresponde a um arco tem
um na linha e
um na linha ,
sendo o resto da coluna igual a .
[Alguns livos adotam a convenção contrária:
na linha e na linha .]
Portanto, a linha da matriz tem
um na coluna correspondente a cada arco que sai de ,
um na coluna correspondente a cada arco que entra em ,
e nas demais colunas.
Exemplo F.3:
Seja o grafo dirigido com nós \ e arcos
\,.
A matriz de adjacências de está representada à esquerda
(com
representando )
e a matriz de incidências de está representada no meio:
Exemplo F.4:
Veja à esquerda a matriz de adjacências de uma árvore orientada
com nós .
À direita, uma árvore radicada com o mesmo conjunto de nós e raiz .
(Faça figuras.)
Lema F.4 (ciclos e dependência linear)
Seja a matriz de incidências de um grafo dirigido .
O conjunto das colunas de é linearmente dependente
se e somente se
tem um ciclo
(não necessariamente dirigido).
Prova do somente se
:
Suponha que o conjunto das colunas de é l.d..
Seja um vetor real não nulo
tal que .
Seja o conjunto e
considere o grafo induzido .
Seja o grafo não-dirigido subjacente a .
Como ,
nenhuma linha da matriz tem exatamente um elemento não nulo.
Portanto,
nenhum nó de tem grau .
De acordo com o lema E.1,
tem um ciclo.
Logo, tem um ciclo e portanto tem um ciclo.
Prova do se
:
Suponha que tem um ciclo, digamos
.
Defina o vetor
da seguinte maneira:
para cada índice ,
se é um arco direto do ciclo então ,
se é um arco inverso então ,
e se não pertence ao ciclo então .
Observe que .
Isso mostra que o conjunto das colunas de é l.d.. ■
Exemplo F.5:
A figura mostra a matriz de incidências de um grafo dirigido
que consiste em um ciclo simples e nada mais.
Corolário F.5 (florestas e independência linear)
Seja a matriz de incidências de um grafo dirigido .
O conjunto das colunas de é linearmente independente
se e somente se
é uma floresta orientada
(não necessariamente radicada). ■
Exercícios F.7
-
★
Seja a matriz de incidências de um grafo dirigido
com componentes conexas.
Prove que o posto
de
é igual .
-
Prove o lema F.4.
-
★
Vértices de poliedros versus ciclos.
Seja a matriz de incidências de um grafo dirigido
e um vetor real indexado por .
Considere o poliedro
(veja o apêndice B)
.
Seja um vetor do poliedro e
suponha que o grafo tem um ciclo (não necessariamente dirigido).
cujos arcos estão no suporte
de .
Prove que não é vértice
do poliedro.