Luidi G. Simonetti
PESC/COPPE
V - conjunto dev´ertices- V ={1, 2, 3, 4, 5, 6, 7}
E - conjunto dearestas-E ={[1, 2], [1, 3], [1, 4], [2, 4], . . . , [6, 7]}
Uma fun¸c˜ao w : E → P(V ) que associa a cada aresta um subconjunto de dois ou de um elemento de V , interpretado como os pontos terminais da aresta. 1 2 3 4 7 5 6
Grafo (direcionado ou d´ıgrafo): G = (V , A)
V - conjunto de v´ertices - V ={1, 2, 3, 4, 5, 6, 7}
A - conjunto de arcos -A ={(1, 2), (1, 3), (4, 1), (2, 4), (4, 2), . . . , (7, 6)} Uma fun¸c˜ao w : A→ P(V ) que associa a cada arco um subconjunto de dois ou de um elemento de V (fonte e alvo), interpretado como os pontos terminais da arco. 1 2 3 4 7 5 6
Em um grafo (ou d´ıgrafo) com pesos, uma fun¸c˜ao adicional E → R associa um valor a cada aresta, o que pode ser considerado seu “custo”.
Note que a representa¸c˜ao gr´afica n˜ao deve ser confundida com o grafo em si (a estrutura abstrata, n˜ao-gr´afica). V´arios diferentes layouts podem
corresponder ao mesmo grafo. O que importa ´e quais v´ertices est˜ao conectados entre si por quantas arestas.
Dada uma aresta e = (a, b), dizemos que os v´ertices a e b s˜ao osextremos da aresta e e que a e b s˜ao v´erticesadjacentes.
Podemos dizer tamb´em que a aresta e ´eincidenteaos v´ertices a e b, e que os v´ertices a e b s˜ao incidentes `a aresta e.
Dizemos que um grafo ´esimplesquando n˜ao possui la¸cos ou arestas m´ultiplas.
Umla¸co´e uma aresta com ambos os extremos em um mesmo v´ertice e arestas m´ultiplas s˜ao duas ou mais arestas com o mesmo par de v´ertices como extremos.
Multigrafo ´e um grafo que permite m´ultiplas arestas ligando os mesmos v´ertices.
Exemplo:
a c
e
Ograude um v´ertice ´e o n´umero de arestas incidentes a ele. Em d´ıgrafo temos grau de sa´ıda e de entrada.
O conjunto devizinhosde um v´ertice consiste de todos os v´ertices adjacentes a ele. Outra maneira utilizada ´e o conjunto de arestas incidentes `a um v´ertice.
Exemplo: a c e b d d(a) = 2 d(b) = 3 d(c) = 4 d(d) = 3 d(e) = 2 N(a) ={b, c} N(b) ={a, c, d} N(c) ={a, b, d, e} N(d) ={b, c, e} N(e) ={c, d}
δ(a) ={(a, b), (a, c)} δ(b) ={(a, b), (b, c), (b, d)} δ(c) ={(c, a), (c, b), (c, d), (c, e)} δ(d) ={(d, b), (d, c), (d, e)} δ(e) ={(e, c), (e, d)}
Teorema
Para todo grafo G = (V , E ) temos: �
v∈V
Denotamos por|V | e |E | a cardinalidade dos conjuntos de v´ertices e arestas de um grafo G, respectivamente.
No exemplo abaixo temos|V | = 5 e |E | = 7.
a c
e
b d
UmsubgrafoH = (V�, E�) de um grafo G = (V , E ) ´e um grafo tal que V� ⊆ V , E�⊆ E .
Umsubgrafo geradorde G ´e um subgrafo H com V�= V .
Exemplo: a c e b d Grafo G a c b d
Subgrafo n˜ao gerador
a c
e
b d
Subgrafo gerador Subgrafo Induzido ´e obtido pela remo¸c˜ao de v´ertices e consequente das arestas relacionadas com ele de um outro grafo, dizemos que este novo grafo ´e um grafo induzido do original.
Em um grafo gen´erico G , ocorteassociado a um conjunto X de v´ertices ´e o conjunto de todas as arestas que tˆem uma ponta em X e outra em V− X . Grafo completo´e o grafo simples em que, para cada v´ertice do grafo, existe uma aresta conectando este v´ertice a cada um dos demais. Ou seja, todos os v´ertices do grafo possuem mesmo grau. O grafo completo de n v´ertices ´e frequentemente denotado por Kn. Ele tem n(n− 1)/2 arestas.
Caminho
Um caminho P de v0a vn no grafo G ´e uma sequˆencia finita e n˜ao vazia
(v0, v1, . . . , vn) de v´ertices tal que de cada um dos v´ertices existe uma aresta
para o v´ertice seguinte.
O comprimento do caminho P ´e dado pelo seu n´umero de arestas, ou seja, n. (contando-se arestas m´ultiplas m´ultiplas vezes)
O custo de um caminho num grafo balanceado ´e a soma dos custos das arestas atravessadas.
Dois caminhos s˜ao independentes se n˜ao tiverem nenhum v´ertice em comum, excepto o primeiro e o ´ultimo.
a f c e b d v0= a v1= b v2= d v3= c v4= b v5= d v6= e |P| = 6
arestas na sequˆencia.
Umciclo(circuito) ou caminho fechado ´e um caminho em que v0= vn.
Umciclo simples´e um ciclo que tem um comprimento pelo menos de 3 e no qual o v´ertice inicial s´o aparece mais uma vez, como v´ertice final, e os outros v´ertices aparecem s´o uma vez.
Exemplo: a f c e b d Caminho Simples a f c e b d Ciclo
Caminho hamiltonianoem um grafo ´e o caminho que visita cada v´ertice exatamente uma vez. Umciclo hamiltoniano´e um ciclo que visita cada v´ertice uma s´o vez.
Se for poss´ıvel estabelecer um caminho de qualquer v´ertice para qualquer outro v´ertice de um grafo, diz-se que o grafo ´econexo.
Quando o grafo G n˜ao ´e conexo, podemos particionar emcomponentes conexos. Dois v´ertices u e v de G est˜ao no mesmo componente conexo de G se h´a caminho de u a v em G. Exemplo: a f c e b d Conexo a f c e b d
n˜ao-conexo com 3 componentes conexos
Um grafo G ´e uma ´arvore se ´e conexo e n˜ao possui ciclos (ac´ıclico). ´e conexo com|V | − 1 arestas.
´e conexo e a remo¸c˜ao de qualquer aresta desconecta o grafo (minimal conexo). Para todo par de v´ertices u, v de G , existe exatamente um caminho de u a v em G . Exemplo: a f c e b d ´
As vezes, um v´ertice da ´arvore ´e distinto e chamado de raiz. Floresta ´e um conjunto de ´arvores.
Algoritmos em Grafos - Motiva¸c˜ao
Grafos s˜ao estruturas abstratas que podem modelar diversos problemas do mundo real.
Por exemplo, um grafo pode representar conex˜oes entre cidades por estradas ou uma rede de computadores.
O interesse em estudar algoritmos para problemas em grafos ´e que conhecer algoritmo para um ´unico problema em grafos pode significar conhecer algoritmos para diversos problemas reais.
Representa¸c˜ao Interna
A complexidade dos algoritmos para solu¸c˜ao de problemas modelados por grafos depende fortemente da sua representa¸c˜ao interna.
Existem duas representa¸c˜oes canˆonicas: matriz de adjacˆenciaselista de adjacˆencias.
O uso de uma ou outra num determinado algoritmo depende da natureza das opera¸c˜oes que ditam a complexidade do algoritmo.
Outras representa¸c˜oes podem ser utilizadas mas essas duas s˜ao as mais utilizadas por sua simplicidade.
Para alguns problemas em grafos o uso de estruturas de dados adicionais s˜ao fundamentais para o projeto de algoritmos eficientes.
Bibliografia
Algorithm Design - Jon Kleinberg e ´Eva Tardos, Addison-Wesley, 2005. Introduction to Algorithms - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein, McGraw Hill, 2002 (2a. edi¸c˜ao).
Grafos e algoritmos computacionais - Jayme Szwarcfiter, Ed. Campus, 1984. Alan Gibbons. Algorithmic Graph Theory - Cambridge University Press, 1985. Introduction to Algorithms - Cormen et al., 3rd edition, MIT Press, 2009. Network Flows: Theory, Algorithms, and Applications - Ahuja et al., Prentice Hall, 1993.
http://en.wikipedia.org/wiki/Graph_theory . . .