Glossário de Teoria dos Grafos#
Definições#
grafo#
Um par ordenado G = (V(G), E(G)), onde V(G) e E(G) são conjuntos disjuntos, V(G) um conjunto de vértices, E(G) um conjunto de arestas juntamente com uma função de incidência ψ G que a associa cada aresta de G um par não ordenado de vértices de G.
ψ(e) = {u, v}
, se a aresta e
liga os vértices u
e v
-
u
e v
são extremos de e
.
incidência#
Os extremos de uma aresta incidem na aresta e a aresta incide em seus extremos.
adjacência#
Dois vértices são adjacentes se incidem numa mesma aresta.
Duas arestas são adjacentes se incidem num mesmo vértice.
vizinhança#
Dois vértices distintos adjacentes são chamados de vizinhos.
N G (v) é o conjunto de vizinhos do vértice v
.
finito#
Grafo onde ambos V(G) e E(G) são finitos.
ordem#
De um grafo G, é o seu número de vértices. Denotado por: v(G)
, |V(G)|
ou n
(simplificado).
tamanho#
De um grafo G, é o seu número de arestas. Denotado por: e(G)
, |E(G)|
ou m
(simplificado).
laço#
Aresta com extremos idênticos.
ligações#
Aresta com extremos distintos.
arestas paralelas#
Duas ou mais ligações de um mesmo par de vértices.
grafo simples#
Grafo que não tem laços nem arestas paralelas.
grafo completo#
Grafo simples em que todo par de vértices é adjacente. Denotado por K n.
caminho#
Grafo simples cujos vértices podem ser listados numa sequeência linear, tal que dois vértices são adjacentes se, e só se, são consecutivos na sequência. Denotado por P n.
ciclo#
Grafo simples com três ou mais vértices, cujos vértices podem ser listados numa sequência cíclica tal que dois vértices são adjacentes se, e só se, são consecutivos na sequência. Denotado por C n.
C 1 é um vértice com um laço.
C 2 é um par de vértices ligados por um par de arestas paralelas.
comprimento (de um caminho ou de um ciclo)#
Número de arestas no caminho/ciclo.
k-caminho/k-ciclo é o caminho/ciclo de comprimento k.
3-ciclo também é chamado de triângulo, assim como o 4-ciclo de quadrilátero e assim por diante.
Teorema: Seja G um grafo tal que δ(G) ≥ 2. Então G contém um ciclo.
grafo conexo#
Grafo em que toda partição de V em dois conjuntos não vazios X e Y, existe uma aresta com um extremo em X e o outro em Y.
O grafo é desconexo se é possível achar uma partição de V em dois conjuntos não vazios X e Y, em que não há arestas com um extremo em X e outro em Y.
grafos disjuntos#
Dois grafos que não têm vértices em comum.
grafos aresta-disjuntos#
Dois grafos que não têm arestas em comum.
Ver grafos disjuntos.
união#
De dois grafos simples G e H, denotada G ∪ H tem como vétices V(G) ∪ V(H) e arestas E(G) ∪ E (H).
componente conexo#
Cada grafo resultante da união disjunta de um ou mais grafos.
c(G) é o número de componentes conexas de um grafo.
interseção#
De dois grafos simples G e H, denotada G ∩ H tem como vétices V(G) ∩ V(H) e arestas E(G) ∩ E (H).
grafo nulo#
Grafo sem vértices.
grafo bipartido#
Grafo cujo conjunto de vértices V pode ser particionado em dois conjuntos X e Y tais que cada aresta de G tem um extremo em X e o outro em Y. (X, Y) é uma bipartição do grafo G[X, Y] e X e Y são suas partes.
Se G[X, Y] é simples e todo vértice em X é adjacente a todo vértice em Y, G[X, Y] é bipartido completo.
K x,y é o grafo bipartido completo em que x = |X|
e y = |Y|
.
K 1,y ou K x,1 é chamado estrela.
Teorema: Um grafo é bipartido se e somente se não tem ciclo ımpar.
grau (de um vértice)#
Número de arestas incidentes em v, cada laço contado duas vezes. Denotado por d G(v).
Um vértice de grau zero é chamado vértice isolado.
Grau mínimo de G é o grau do vértice de menor grau de G, denotado por δ(G). Grau máximo é o grau do vértice de maior grau de G, denotado por ∆(G).
grafo regular#
Grafo k-regular, onde d(v) = k para todo v em V, para algum valor de k.
Grafos 3-regulares são chamados grafos cúbicos.
grafo direcionado#
Grafo D formado por um conjunto de vértices V e outro de arcos A, além de uma função de incidência que associa cada arco de A com um par ordenado de vértices.
Se ψ D`(a) = uv, dizemos que ``a` liga u
a v
; ou u
domina v
. u
é sua origem (tail) e v
o destino
(head)
Vértices que dominam v
são chamados vizinhos de entrada, N D
- (v). Vértices dominados por v
são chamados vizinhos de saída,
N D + (v).
Grafos direcionados estritos, são aqueles que não possuem laços nem arcos paralelos.
grafo direcionado acíclico#
Grafo dirigido sem ciclo; isto é, para qualquer vértice v, não há nenhuma ligação dirigida começando e acabando em v.
orientação#
Grafo D resultante da substituição das arestas de um grafo G por arcos correspondentes.
grafo orientado#
Orientação de um grafo simples.
ordem (de um grafo)#
Número de vértices de um grafo.
tamanho (de um grafo)#
Número arestas de um grafo.
torneio#
Qualquer orientação de um grafo completo.
Isomorfismo#
isomorfismo#
Função que mapeia os vértices e aresta de dois grafos que têm a mesma estrutura, diferindo apenas nos rótulos dos vértices e das arestas.
complemento#
Grafo simples G’ cujo conjunto de vértices é V e o conjunto de arestas é dado pelos pares de vértices não adjacentes em G.
autocomplementar#
Grafo isomorfo ao seu complemento.
automorfismo#
Isomorfismo do grafo consigo mesmo.
Aut(G) conjunto de automorfismos de G.
similaridade#
Dois vértices u e v de um grafo simples são similares se existe automorfismo que mapeia u em v.
Duas arestas uv e xy são similares se existe automorfismo que mapeia uv em xy.
grafo vértice-transitivo#
Grafo em que todo par de vértices é similar.
grafo aresta-transitivo#
Grafo em que todo par de vértices é similar
Subgrafos#
remoções#
Remoção de uma aresta e
de um grafo G resulta no grafo denotado G e.
Remoção de um vértice v
de um grafo G resulta no grafo denotado G − v.
subgrafo#
Um grafo F é subgrafo de G se V(F) ⊆ V(G), E(F) ⊆ E(G) e ψ F é a restrição de ψ G a E(F).
G contém F e F está contido em G, denotado G ⊇ F e F ⊆ G respectivamente.
F pode ser obtido a partir de operações de remoção de vértices e arestas.
supergrafo#
Um grafo H é supergrafo de G se contém G, H ⊇ G.
Todo grafo é supergrafo de si mesmo.
subgrafo ou supergrafo próprio#
Subgrafos F e supergrafos H de G, denotados por F ⊂ G e G ⊃ H, respectivamente.
subgrafo gerador#
Subgrafo F obtido a partir de um grafo G pela remoção de arestas.
Se S é o conjunto de arestas removidas F é o grafo G S.
V(F) = V(G).
hamiltoniano#
Um caminho hamiltoniano - ou ciclo hamiltoniano - é aquele que é gerador de um dado grafo.
O grafo hamiltoniano possui um ciclo hamiltoniano.
Teorema de Rédei: Todo torneio tem um caminho hamiltoniano direcionado.
Problema do Caixeiro Viajante#
Dado um grafo ponderado (G , w ), encontre um ciclo hamiltoniano de G de peso mínimo.
k-fator#
Subgrafo gerador k-regular. 1-fator também é chamado emparelhamento perfeito.
subgrafo induzido#
Subgrafo induzido/gerado F obtido a partir de G pela remoção de vértices.
Toda aresta de E(G) com ambos os extremos em V(F) também é aresta de E(F).
Se X é o conjunto de vértices removidos F é o grafo G − X.
grafo ponderado#
Grafo no qual cada aresta tem um número real denominado peso w(e) associado à ela.
peso#
De um grafo G, d(G), é a somatória dos pesos de suas arestas.
De uma aresta é o número real associado à ela.
identificação#
Operação de substituição de dois vértices - x
e y
- por um único
vértice incidente em todas as arestas em que x
e y
incidiam. O grafo
resultante é denotado por G/{x, y}.
contração#
Operação de remoção de uma aresta e
seguida da contração
de seus extremos. O grafo resultante é denotado por G/e.
decomposição#
Família de subgrafos aresta-disjuntos de G tais que a união do conjunto de arestas de cada subgrafo da família resulta no conjnto de arestas do grafo original G.
grafo par#
Grafo em que todo vértice tem grau par.
Teorema de Veblen: Um grafo admite uma decomposição em ciclos se e somente se é par.
Teorema: Um grafo é par se e somente se |∂(X)| é par para todo subconjunto X de V.
cobertura#
Família de subgrafos não necessariamente aresta-disjuntos de G tais que a união do conjunto de arestas de cada subgrafo da família resulta no conjunto de arestas do grafo original G.
É chamada uniforme se cobre cada aresta de G o mesmo número de vezes. Se k é o número de vezes, a cobertura é denominada k-cobertura.
corte#
Seja E[X, Y] o conjunto de arestas de G com um extremo em X e o outro em Y.
Quando Y = V − X, E[X, Y] ́é chamado de corte (cut) de X em G e denotado por ∂(X).
Um corte ∂(X) respeita um conjunto de arestas A se A ∩ ∂(X) = ⦰.
aresta leve#
Em um corte ∂(S) se w uv := min (x,y) ∊ ∂(S) {w xy } - (u,v) é a aresta de menor peso no corte ∂(S).
corte trivial#
É dado por todas as arestas incidentes em v e denotado por ∂(v).
Conexidade#
passeio#
Sequência W = v 0 e 1 v 1 … e l v l
cujos elementos são vértices e arestas **não necessariamente* distintos, tal
que para todo 1 ≤ i ≤ l
, v i-1 e v i são extremos de e.
Se v 0 = x e v l = y, W conecta x a y e é um passeio de x a y.
Qualquer subsequência com vértice de início u e vértice de término v é chamada segmento de W e denotada por uWv.
Um passeio é fechado (closed) se os vértices de início e término coincidem.
trilha#
Passeio em que não existe repetiçào de arestas.
caminho#
Passeio em que não existe repetição de vértices, nem arestas.
conexidade#
Dois vértices u e v estão conectados se existe um passeio de u a v no grafo.
O grafo é conexo se todo par de vértices está conectado.
distância#
Comprimento do menor caminho de u a v em G, denotado por d G(u, v) .
aresta de corte#
Aresta e
que quando removida aumenta o número de componentes conexas de G,
ou seja, c(G e) = c(G) + 1.
Preposição: Uma aresta e de um grafo G é uma aresta de corte se e somente se e não pertence a um ciclo de G.
trilha euleriana#
Trilha que passa por cada aresta do grafo exatamente uma vez.
circuito euleriano#
Trilha Euleriana fechada.
grafo euleriano#
Grafo conexo e que possui um circuito Euleriano.
Teorema: Um grafo conexo é euleriano se e somente se é par.
Árvores#
árvore#
Grafo T conexo e acíclico.
Preposição: Em uma árvore, quaisquer dois vértices são conectados por precisamente um caminho.
Teorema: Se T é uma árvore, então e(T) = v (T) − 1.
floresta#
Grafo acíclico não necessariamente conexo.
folha#
Vértice de grau um em uma árvore.
Preposição: Toda árvore nào trivial tem pelo menos duas folhas.
árvore geradora#
Árvore subgrafo gerador de um grafo.
Teorema: Um grafo é conexo se e somente se tem uma árvore geradora.
áarrvore com raiz#
Árvore com um vértice x chamado de raiz, denotado por T(x).
arborescência#
Orientação de uma árvore com raiz em que todo vértice exceto a raiz tem grau de entrada 1.
Buscas em Grafos#
alcance#
Um vértice u
é alcançável a partir de um vértice v
de um grafo G
se existe um caminho de v
para u
em G.
distância#
Um vértice u
está a uma distância k
de um vértice v
se k
é
o comprimento do menor caminho que começa em v
e termina em
u
.
Se u
não é alcançável a partir de v
, determina-se que a distância
entre eles é infinita.
busca em largura#
Busca em largura ou BFS (Breadth First Search) em um grafo G = (V, E).
Método em que, partindo-se de um vértice especial u
, denominado raiz da
busca, percorre-se G visitando todos os vértices alcançáveis a partir de u
em ordem crescente de distância.
Complexidade: O(|V| + |E|)
busca em profundidade#
Busca em profundidade ou DFS (Depth First Search) em um grafo G = (V, E).
Método em que, partindo-se de um vértice especial u
, denominado raiz da
busca, percorre-se G visitando todos os vértices alcançáveis a partir de u
tendo como meta atingir primeiramente as folhas, retornando quando isso
acontecer. Generalização do percurso em pré-ordem.
Variáveis podem ser usadas para a marcação de tempo como instante de descoberta d e de exploração f.
Complexidade: O(|V| + |E|)
Classificação de arestas
Dada uma floresta G pred construída pela DFS:
aresta da floresta
Toda aresta em G pred .
aresta de retorno
É uma aresta (u, v) onde
v
é ancestral deu
em G pred .
aresta direta
É uma aresta (u, v) que não está em G pred onde
v
é descendente deu
em uma árvore contruída pela DFS.
aresta cruzada
Todas as arestas que não podem ser classificadas como de retorno ou diretas.
Teorema: Em uma DFS de um grafo não direcionado G = (V, E) toda aresta é da árvore ou é de retorno.
ordenação topológica#
Em um grafo direcionado acíclico G = (V, E), é uma ordem linear dos
vértices tal que, para todo arco (u, v) em E, u
_antecede_ v
na ordem.
Lema: Um grafo direcionado G é acíclico se e somente se uma bisca em peofundidade em G não classifica nenhum arco como sendo de retorno.
Teorema: Rotular os vértices do grafo em ordem decrescente dos valores f obtidos em uma DFS resulta em uma ordenação topológica correta de um grafo direcionado acíclico G.
Componentes Fortemente Conexas#
componentes fortemente conexas#
Uma componente fortemente conexa (CFC) H
de um grafo G = (V, E) é um
subconjunto de vértices tal que, para todo par de vértices u
e v
de
H
, existe um caminho de u
para v
e vice-versa. H
também é maximal com relação a inclusão de vértices.
grafo transposto#
É o grafo G T = (V, E T ) de um grafo direcionado G = (V, E) onde:
E T = {(u, v) ∊ V x V: (v, u) ∊ E}
o grafo obtido invertendo-se a orientação de seus arcos.
G e G T têm as mesmas componentes fortemente conexas.
Árvore Geradora Mínima#
árvore geradora mínima#
Árvore gerada pelo problema da Árvore Geradora Mínima:
Dado um grafo não orientado ponderado G = (V, E), onde w: E → ℝ + define os custos das arestas, encontrar um subgrafo gerador conexo T de G tal que, para todo subgrafo gerador conexo T’ de G
Σ e ∊ T w e ≤ Σ e ∊ T’ w e .
Características
Só tem solução se G é conexo. + Resulta em uma árvore - a Árvore Geradora Mínima (AGM) - dado que tal subgrafo não conterá ciclos.
Algoritmos
Algoritmo genérico: estratégia gulosa.
Invariante: Antes de cada iteração A é um subconjunto de arestas de uma AGM. A cada iteração A ∪ {(u, v)}, (u, v) é chamada aresta segura.
AGM-Generico(G, w)
A ← 0; enquanto A não forma uma árvore geradora faça encontre aresta segura (u, v); A ← A ∪ {(u, v)}; retorne A.
Teorema: Seja G = (V, E) um grafo conexo não orientado ponderado nas arestas por uma função w: E → ℝ. Seja A um subconjunto de E que está contido em alguma AGM de G, seja ainda ∂(S) um corte de G que respeita A e (u, v) uma aresta leve de ∂(S). Então, (u, v) é uma aresta segura para A.
Corolário: Seja G = (V, E) um grafo conexo não orientado ponderado nas arestas por uma função w: E → ℝ + . Seja A um subconjunto de E que está contido em alguma AGM de G, e seja C = (V C , E C ) uma componente conexa (árvore) da floresta G A = (V, A). Se (u, v) uma aresta leve de ∂(C), então (u, v) é segura para A.
Os algoritmos de Prim e de Kruskal especializam o algoritmo genérico usando o Colorário.
Prim#
Dado o colorário.
A é sempre uma árvore. A aresta segura adicionada a A é sempre uma aresta leve do corte ∂(C), onde C é o conjunto de vértices que sÃo extremidades de arestas em A.
Kruskal#
Dado o colorário.
A é sempre uma floresta. A aresta segura adicionada a A é sempre uma aresta de menor peso dentre todas as arestas ligando dois vértices de componentes distintas de G A .
Caminhos Mínimos#
caminhos mínimos#
Caminhos que se deseja encontrar no problema de Caminhos Mínimos:
Dados um grafo conexo ponderado G = (V, E), direcionado ou não, onde d:
E → ℝ + define as distâncias entre os extremos das arestas, e um
vértice r
de G, queremos encontrar, para todo vértice u
de G um
caminho C de distância mínima de r
a u
, ou seja, o caminho C deve ser
tal que, para todo caminho C de r
a u
em G :
∑ e ∊ C d e ≤ ∑ e ∊ C’ d e .
Algoritmos
Grafos direcionados ou não direcionados sem arestas de peso negativo.
Grafos direcionados com arestas de peso negativo e sem ciclos negativos.
Para DAGs, basta calcular os caminhos mínimos analisando os vértices segundo a ordenação topológica. Funciona mesmo com arestas de peso negativo.
Caminhos mínimos entre todos os pares de vértices
Entre todos os vértices quando o grafo é esparso.
Quando o grafo é denso.
Dijkstra#
Algoritmo para encontrar caminhos mínimos a partir de um vértice
r
. Resulta numa árvore geradora com raiz em r
-
árvore de caminhos mínimos para r
: ACM(r).
Características
Funciona para grafos direcionados e não direcionados desde que não haja arestas de peso negativo.
Ver Algoritmo de Prim.
Bellman-Ford#
Algoritmo para encontrar caminhos mínimos a partir de um vértice r
.
Características
Funciona para grafos direcionados não haja ciclos negativos.
Detecta a existência de ciclos negativos.
Floyd-Warshall#
Algoritmo para encontrar caminhos mínimos entre todos os pares de vértices de um grafo.
Características
Usado quando o grafo é denso
Funciona mesmo na presença de arestas de peso negativo, desde que não haja ciclos negativos
É possível detectar a existência de ciclo negativo analisando a matriz resultado do algoritmo.