Teoria dos Grafos e Aplicações 8 Cap. 2 Conceitos Básicos em Teoria dos Grafos 2.1 Grafo É uma noção simples, abstrata e intuitiva, usada para representar a idéia de alguma espécie de relação entre os objetos. Graficamente, aparece representado por uma figura com nós ou vértices, significando os objetos, unidos por um traço denominado aresta configurando a relação imaginada. Representação Matemática Um Grafo é representado matematicamente por: G=(V,E) 1 a 3 d 5 6 Onde V é o conjunto de vértices e E é o conjuntos de arestas ou ligações entre os vértices. ( V = n, E = m ) b 2 C 4 Figura 2.1 A figura acima (à direita) mostra o grafo G=(V,E). Observe que laços (self-loops) são permitidos pela definição. Múltiplas linhas não são permitidas. Neste exemplo, V={1,2,3,4,5,6} e E={{1,3},{2,3},{3,4},{3,5},{6,6}}. É comum a utilização da variável v i ou x i, i=1,2,...,n para a distinção dos nós (vértices). V = 6, E = 5. 2.2 Grafo direcionado (ou Digrafo) Um Grafo é dito direcionado ou Digrafo quando o sentido das ligações entre os vértices é considerado. Neste caso denomina-se de arco a aresta direcionada. Representação Matemática 5 Um Digrafo é representado matematicamente também por: G=(V,E) Onde V é o conjunto de vértices e E é uma relação binária em V (i.e., um conjunto de pares ordenados) das ligações. 1 b a 2 3 d C 4 6 Figura 2.2 Neste exemplo, V={1,2,3,4,5,6} e E={(3,1),(2,3),(4,4),(3,5),(6,6)}. V = 6, E = 5.
Teoria dos Grafos e Aplicações 9 2.3 Grafos valorados (Redes Networks) Uma Rede é um grafo não-direcionado (ou um digrafo) no qual um número real é associado os vértices e/ou ligações. Este número é freqüentemente referido como o peso da ligação. Essa classificação é dada de acordo com a necessidade, ou não, da indicação do fluxo entre os vértices. Na prática este número pode representar: - custos, distâncias, capacidades, e/ou suprimentos e demandas; tempo (trânsito, permanência, etc); confiabilidade de transmissão; probabilidade de ocorrer falhas; capacidade de carga; outros. Representação Matemática Um Rede é representado matematicamente também por: G=(V,E,w) Onde: V é o conjunto de vértices; E é o conjunto de ligações; e w é o peso associado aos vértices e/ou ligações.
Teoria dos Grafos e Aplicações 10 REDES / GRAFOS ESTRUTURA TOPOLÓGICA INFORMAÇÕES QUANTITATIVAS SOBRE ELEMENTOS Exemplos: Redes ferroviárias Redes de telecomunicações Redes de estradas Redes Elétricas Redes de esgotos Redes de transportes Redes de atividades scheduling de atividades em grandes projetos Nós, vértices atividades Arcos restrições de precedência X duração da atividade 0 1 7 4 10 6 5 5 8 início 0 2 2 10 8 5 7 9 8 0 3 15 2 10 3 fim Figura 2.4
Teoria dos Grafos e Aplicações 11 2.4 Grafo Parcial G=(V,E) G=(V,E ) E E Figura 2.5 2.5 - Subgrafo G =(V,E ) é subgrafo de G sss V ' V ; E' E Figura 2.6
Teoria dos Grafos e Aplicações 12 2.6 Grafo Completo w v v w v V e w E, v w ( v, w ) E ( w, v ) E Figura 2.7 2.6 Grafo Pleno Figura 2.8
Teoria dos Grafos e Aplicações 13 2.7 Grafo Bipartido a 1 a 2 a 3 b 1 b 2 X = X a X b X a X b = A X a x X b X a X b Aplicações : Probs. de Transporte (origem/destino) Probs. de Atribuição : (tarefas/pessoas) Namoro H O M E N S A B C 1 2 M U L H E R E S Figura 2.10 Procuramos um designação mais eficiente: nenhuma de duas linhas pode ser adjacente (encontrando-se num nó).
Teoria dos Grafos e Aplicações 14 PROBLEMA GERAL Problema de Designação Dado uma rede direcionada G=(X,A) Conjunto de nós X a X b (distintos) Linhas ( i, j ) somente de i X a para j X b Custos nas linhas c(a) Determine uma designação de custo mínimo de X a a X b : um conjunto de linhas (arestas) W * tendo custo total mínimo. CW ( ) = Ca ( ) a W FORMULAÇÃO DE PROGRAMAÇÃO LINEAR Seja c(a) = c ij o custo associado com a linha a = ( i, j ). Defina x i j = 1 se linha ( i, j ) está na designação W 0 caso contrário Designação Min. i, j cx ij ij s. a. x ik = 1 i x a k x kj = 1 j x b k x ij {0,1} NOTA: A última restrição pode ser substituída por 0 x ij 1, produzindo um programa linear que pode ser resolvido pelo MÉTODO SIMPLEX. Mas, não é aceitável devido a grande quantidade de soluções degeneradas produzidas. Algoritmos especializados : MÉTODO HÚNGARO, BARR.
Teoria dos Grafos e Aplicações 15 2.8 - Caminho, Percurso, Ciclo, Circuito e Comprimento Um caminho de um vértice v i0 para o vértice v ik é uma seqüência de arestas < v i0, v i1 >, < v i1, v i2 >,..., < v i,k 1, v ik >. Um caminho é dito elementar se passa exatamente uma vez por cada vértice e é simples se passa exatamente uma vez por cada aresta. Quando o grafo é não orientado o conceito de caminho é substituído por cadeia que pode ser representada pela seqüência de arestas que a forma ou dos vértices nela contidos. Alguns autores usam o termo percurso para denominar genericamente um caminho. Se os vértices inicial e final são coincidentes ( v i0 = v ik ), dizemos que o caminho é fechado e forma um ciclo que é chamado de circuito se o grafo for orientado. O comprimento de um percurso num grafo valorado é a soma dos custos de percorrer cada aresta e num grafo não valorado é igual ao número de arestas que o compõe. Na Figura 2.11 identificamos alguns destes elementos. Figura 2.11 - Grafo G com um Caminho e um Ciclo 2.9 - Ciclo Euleriano e Circuito Hamiltoniano Um Ciclo que passa por todas arestas de um grafo é dito Euleriano e um circuito elementar que passa por todos os vértices é chamado de Hamiltoniano. O problema do Caixeiro Viajante citado anteriormente consiste em analisar todos circuitos Hamiltonianos existentes para (n+1) pontos, e conforme vimos o número máximo destes caminhos é n!.
Teoria dos Grafos e Aplicações 16 2.10 - Conexidade Um Grafo G = (V, E) é conexo se para todo par de vértices existe pelo menos uma cadeia entre eles, por outro lado, se existir pelo menos um par de vértices que não é unido por nenhuma cadeia diz-se que o grafo é não-conexo, ou desconexo. Veja os exemplos da Figura 2.12. Figura 2.12 - Grafos Conexo ( G1 ) e Desconexo ( G2 ) Observe que o conceito de conexidade em grafos orientados não exige que haja um caminho ligando qualquer par de vértices, se isto acontecer diz-se que o grafo é fortemente conexo o que significa dizer que dados dois vértices v e w quaisquer, cada um pode ser atingido a partir do outro, ou seja partindo de v pode-se chegar a w ou vice-versa. A Figura 2.13 mostra um exemplo. Figura 2.13 - Grafo Dirigido Fortemente Conexo Como aplicação deste conceito podemos dizer que uma das características mais importante de uma rede de comunicação (telefonia, por exemplo) é sua conexidade.
Teoria dos Grafos e Aplicações 17 2.11 - Relação de Adjacência e de Incidência Dois vértices v V e w V de um grafo G = (V,E) são ditos adjacentes se existe a aresta (v,w), ou seja (v,w) E. Duas arestas são ditas adjacentes se possuem uma extremidade (vértice) comum. Uma aresta é incidente a um vértice se este vértice for uma de suas extremidades. Assim as arestas (u,v) e (v,w) são incidentes ao vértice v. 2.12 - Clique Clique ou grafo completo é um grafo, ou subgrafo, em que seus vértices são interligados ou adjacentes dois a dois; de forma que o caminho mais curto entre quaisquer dois vértices v e w é a aresta (v,w). A Figura 2.14 mostra um grafo com dois cliques. Figura 2.14 - Grafo com dois Cliques: {2,3,4} e {4,5,6,7} 2.13 - Grafos Planares Diz-se que um grafo é planar se for possível dispor seus vértices num plano de forma que não haja cruzamento de arestas. Pode-se então fazer uma associação entre um grafo planar e um mapa, onde cada região do mapa corresponde a um vértice e as fronteiras entre as regiões correspondem às arestas. Veja um exemplo na Figura 2.15. Figura 2.15 - Grafo Planar com 5 regiões Uma aplicação que utiliza o conceito de grafos planares é a disposição de circuitos impressos numa placa.
Teoria dos Grafos e Aplicações 18 2.14 - Árvores A definição clássica de árvore nos leva aos seguintes conceitos: Árvore é uma estrutura de dados que possui uma relação hierárquica entre seus elementos; Árvore é um conjunto finito de um ou mais nós, onde um deles é denominado raiz e os demais, recursivamente, formam uma nova árvore (ou sub-árvore). Quando num determinado nível a sub-árvore tem um único nó (sem descendentes) ele é chamado de folha. A árvore da Figura 2.16 tem as seguintes folhas : D, E, G, H e I. Figura 2.16 - Árvore de raiz A com duas sub-árvoes de raízes B e C Conforme conceitos definidos até aqui podemos dizer que uma árvore é um grafo conexo sem ciclos e que todo grafo G deste tipo que possuir n vértices tem exatamente (n 1) arestas. Outra característica que também pode ser observada é que todo par de vértices de G é unido por uma única cadeia simples. Por exemplo, a cadeia A-C-F-G da Figura 2.16 é a única que liga os vértices A e G. Convém salientar neste ponto que é desnecessário indicar as inúmeras aplicações de árvores em computação, por conseguinte, como estas são casos especiais de grafos notase quão importante é o estudo da Teoria dos Grafos, cuja bibliografia é extensa e deve ser consultada com mais profundidade, especialmente a referências [7].
Teoria dos Grafos e Aplicações 19 2.15 - Interrelacionamento entre vértices (Notação de Berge) * x j sucessor de x i (x i, x j ) A Γ + (x i ) = { x j / x j é sucessor de x i } d + (x i ) = card ( Γ + (x i )) ; d = grau * x j antecessor de x i (x j, x i ) A Γ - (x i ) = { x j / x j é antecessor de x i } d - (x i ) = card ( Γ - (x i )) ; * x j é adjacente (vizinho) a x i x i é sucessor ou antecessor de x j Γ (x i ) = { x j / x j é adjacente a x i }; Γ (x i ) = Γ + (x i ) U Γ - (x i ) Exemplo: X 2 Γ + (x 1 ) = {x 2,x 3,x 4 } X 1 X 3 Γ - (x 3 ) = {x 1,x 2,x 4 } X 4 2.16 - Fechos transitivos Fecho transitivo direto n Γ + (x i ) = {x i } U ( U Γ +k (x i ) ) k=1 onde Γ +2 = Γ + (Γ + (x i ))... Γ +n = Γ + (Γ +(n-1) (x i )) Exemplo : Seja G = ( X,A ) onde: X = { habitante da cidade} A = { (x i,x j ) / < x i conhece x j >} Γ + (x i ) pessoa é o conjunto de todas as pessoas às quais a pessoa x i pode fazer chegar alguma informação, através do contato entre pessoas conhecidas.
Teoria dos Grafos e Aplicações 20 2.17 Revisão Grafo Grafo completo Grafo conexo v u caminho de u a v Ciclo ciclo Hamiltoniano Árvore Árvore Geradora