Teoria dos Grafos e Otimização com Grafos POP2 – UDESC Prof. Adelmo A. Martins Aspectos históricos Euler resolveu o problema das pontes de Königsberg do rio Pregel, em 1736, utilizando um modelo de grafos: partir de uma das 4 regiões, atravessar cada ponte uma única vez e retornar à região de partida. Figura 1. Rio Pregel e suas sete pontes. Figura 2. Leonhard Euler. Definições • Dado um conjunto V, denotaremos V(2) o conjunto de todos pares não ordenados de elementos de V. Se V tem n elementos então V(2) tem n(n-1)/2 elementos. • Os elementos de V(2) serão identificados com os subconjuntos de V que têm cardinalidade 2. Assim, cada elemento de V(2) terá a forma {v, w}, sendo v e w dois elementos distintos de V. • Um grafo é um par (V, A) em que V é um conjunto arbitrário e A é um subconjunto de V(2). Os elementos de V são chamados vértices e os de A são chamados arestas. Definições • Uma aresta como {v, w} será denotada simplesmente por vw ou por wv. Diremos que a aresta vw incide em v e em w e que v e w são as pontas da aresta. Se vw é uma aresta, diremos que os vértices v e w são vizinhos ou adjacentes. • De acordo com a definição, um grafo não pode ter duas arestas diferentes com o mesmo par de pontas (ou seja, não pode ter arestas “paralelas”). Também não pode ter uma aresta com pontas coincidentes (ou seja, não pode ter “laços”). Há quem goste de enfatizar esse aspecto da definição dizendo que o grafo é “simples” ou simplesmente conectado. Teoria dos Grafos • A teoria dos Grafos fornece uma linguagem para tratarmos com as propriedades dos grafos. • São uma maneira de modelar problemas. • Muitos problemas algorítmicos são simplificados ao pensar neles em termos de grafos. Aplicações 1. Grafos planares: problemas de linhas montagens/trevos A D1 A, B, C : linhas de montagens/rodovias principais B D2 D1, D2, D3: departamentos/rodovias secundárias C D3 Ligações: esteiras/viadutos ou túneis Aplicações 2. Problemas de Localização Existindo n cidades consumidoras de um produto fabricado por uma determinada empresa, deseja-se saber onde seria o melhor local para a instalação de uma filial que atendesse as n cidades com menor custos de distribuição deste produto. Sendo este um problema específico, existem algoritmos próprios para sua solução, além de várias heurísticas que possuem bom desempenho. Mais Definições • Diz-se que um grafo é fracamente conectado (ou simplesmente conectado) se existe pelo menos uma cadeia entre quaisquer dois de seus nós, e é fortemente conectado se existe pelo menos um caminho de cada nó a todos os demais nós do grafo. Para efeitos da disciplina trataremos de grafos fortemente conectados. • Uma árvore é um grafo conectado sem ciclos. • Um Grafo G’ = (N’, E’) é um subgrafo de G = (N,E) se N’ está contido (ou seja igual) em N e E’ está contido (ou seja igual) em E, com a condição de que se (i,j) pertence a E’ e i e j também pertencem a N’. Mais Definições • Diz-se que um grafo é fracamente conectado (ou simplesmente conectado ou simples) se existe pelo menos uma cadeia entre quaisquer dois de seus nós, e é fortemente conectado se existe pelo menos um caminho de cada nó a todos os demais nós do grafo. Neste caso, poderá existir laços e arestas paralelas. S1 3 1 S2 4 2 6 5 7 8 O grafo acima não é fortemente conectado mas os subgrafos S1 e S2 são. Mais Definições • Relembrando, uma árvore é um grafo conectado sem ciclos. Ex. 5 3 4 1 2 Um Grafo G’ = (N’, E’) é um subgrafo de G = (N,E) se N’ está contido (ou seja igual) em N e E’ está contido (ou seja igual) em E, com a condição de que se (i,j) pertence a E’ e i e j também pertencem a N’. Mais Definições • Uma árvore geradora de um grafo G é um subgrafo de G que é uma árvore e inclui TODOS os nós do grafo G. Exemplo. Indique possíveis árvores geradoras para o seguinte grafo. 3 1 4 2 Mais Definições São possíveis árvores geradoras as seguintes: 3 1 4 3 2 1 4 2 3 1 4 2 Mais Definições Considerações sobre árvores geradoras: • Seja um grafo G = (N,E) com |N| = n, isto é, G tem n nós, e um subgrafo G’ = (N,E’) de G. O subgrafo G’ = (N, E’) é uma árvore geradora de G se: • 1. |E’| = n - 1 (n - 1 arcos) e G’ é conectado ou • 2. |E’| = n - 1 e G’ não tem ciclos • Em outras palavras, toda árvore geradora de um grafo com n nós tem n – 1 arcos, e basta que seja um subgrafo conectado ou sem ciclos. Mais Definições Utilizando a definição detalhada anteriormente, NÃO SÃO árvores geradoras do exemplo anterior, os seguintes subgrafos: 3 1 4 2 3 1 4 2 Mais Definições • Uma árvore geradora de um grafo G é um subgrafo de G que é uma árvore e inclui TODOS os nós do grafo G. Exemplo. Indique as possíveis árvores geradoras para o seguinte grafo. 3 1 4 2 Mais Definições São as seguintes: 3 1 4 3 2 1 4 2 3 1 4 2 Mais Definições Considerações sobre árvores geradoras: • Seja um grafo G = (N,E) com |N| = n, isto é, G tem n nós, e um subgrafo G’ = (N,E’) de G. O subgrafo G’ = (N, E’) é uma árvore geradora de G se: • 1. |E’| = n - 1 (n - 1 arcos) e G’ é conectado ou • 2. |E’| = n - 1 e G’ não tem ciclos • Em outras palavras, toda árvore geradora de um grafo com n nós tem n – 1 arcos, e basta que seja um subgrafo conectado ou sem ciclos. Representação dos Grafos 1. Matemática G(V, A) onde: V = Conjunto de vértices ou nós do grafo A = Conjunto de arcos ou arestas do grafo 2. Diagramas 2 a 2 c a 3 1 b Grafo não Orientado c 3 1 b Grafo Orientado Representação dos Grafos 3. Matriz de adjacência (grafo não-orientado) 1, se aresta do nó i ao nó j A = (aij) = 0, se aresta do nó i ao nó j 2 c a Onde A = 3 1 b 10 2 1 3 1 1 1 0 1 2 1 1 0 3 Representação dos Grafos 3. Matriz de incidência (grafo orientado) A = (aij) é a matriz (não necessariamente quadrada) de incidência de G na qual 1, se o arco j sai do nó i aij -1, se o arco j chega no nó i 0, se o arco j não é incidenteao nó i Representação dos Grafos 3. Matriz de incidência (grafo orientado) A = (aij) é a matriz (não necessariamente quadrada) de incidência de G na qual 1, se o arco j sai do nó i aij -1, se o arco j chega no nó i 0, se o arco j não é incidenteao nó i Tipos de Grafos Valorado RJ 400 SP MG 700 1500 RS d a e h c f i b Especial d g Tipos de Grafos Árvore – Grafo conexo sem ciclos e a f d b c e Cadeia – sequência de arcos com extremidade em comum a b d c Tipos de Grafos Caminho – sequência de arcos com mesma orientação f e a b d c Tipos de Grafos d Ciclo – Cadeia fechada l a i b g a c Circuito – Caminho Fechado b Problema da Árvore Mínima Também chamado de árvore geradora mínima, ou custo mínimo, este problema também está relacionado à menor distância. Tem várias aplicações práticas diretas ou apresentase como um subproblema de outros problemas mais complexos. Exemplo de Problema. • Como ligar a fibra ótica a todos departamentos da empresa a um custo mínimo? Algoritmo de Kruskal Determinação de uma árvore mínima num grafo G (V, A) Para cada aresta (i, j) existe um custo associado Cij. |V| = cardinalidade do conjunto de nós V = número de nós. 1. Considerar o grafo trivial formado apenas pelos nós de G 2. Para construção da árvore acrescentar ao grafo trivial a aresta (i,j) associada ao menor valor de custo Cij. Repetir o procedimento respeitando a ordem crescente de valores de Cij, desde que a aresta analisada não forme ciclo com as arestas já incorporadas à árvore. Após incorporar |V| - 1 arestas parar! A árvore mínima foi obtida. Algoritmo de Kruskal - Exercício Determinar a Árvore Mínima para o grafo abaixo A 8 2 7 2 1 E 3 S C 4 2 1 1 7 2 B T D Algoritmo de Kruskal - Exercício Solução: Custo Mínimo = 1 + 1 + 1 + 2 + 2 + 2 = 9 A 8 2 7 2 1 E 3 S C 4 2 1 1 7 2 B T D