1 / 29

Algoritmos em Grafos

Algoritmos em Grafos. Celso C. Ribeiro Caroline T. Rocha. PARTE 1: CONCEITOS BÁSICOS. G = (V, E). v 1. v 5. v 8. vértices arestas. e 10. e 2. e 5. e 8. e 4. e 1. e 12. V = {v 1 , v 2 , ..., v n } | V | = n

zan
Download Presentation

Algoritmos em Grafos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha

  2. PARTE 1: CONCEITOS BÁSICOS Algoritmos em Grafos

  3. G = (V, E) v1 v5 v8 vértices arestas e10 e2 e5 e8 e4 e1 e12 V = {v1, v2, ..., vn} |V|= n E = {e1, e2, ..., em} |E|= m e7 v3 v4 v7 e3 e6 e9 e11 v9 v6 v2 Conceitos Básicos • Grafo: Geometricamente, um grafo é um conjunto de pontos (vértices ou nós) conectados por linhas (arestas). V = {v1, v2, v3, v4, v5, v6, v7, v8, v9} n = 9 E = {e1, e2, e3, e4,..., e9, e10, e11, e12} m = 12 Algoritmos em Grafos

  4. u e v são adjacentes e é incidente a v e é incidente a u e = (u, v) d(v) = 0 vértice isolado Conceitos Básicos • Cada aresta é definida por um par não-ordenado de nós, que são suas extremidades: e = (vi , vj) • d(v): grau do nó v = número de arestas incidentes a v (nós adjacentes) d(v1) = d(v2) = d(v8) = d(v9) = 2 d(v3) = d(v4) = d(v5) = d(v6) = 3 d(v7) = 4 e5,e7 ,e8 incidentes a v5 v5 adjacente a v4, v6, v7 Algoritmos em Grafos

  5. e1 • e = (u, v) é um laço se u = v • arestas paralelas possuem as mesmas extremidades e4 e2 e3 e5 Conceitos Básicos Teorema: o número de nós de grau ímpar em um grafo finito é par. Demonstração: • Multi-grafo: sem laços, mas eventualmente com arestas paralelas • Grafo simples (grafo) : sem laços nem arestas paralelos Algoritmos em Grafos

  6. Conceitos Básicos • Kn: grafo completo com n nósnúmero de arestas: n(n-1)/2 K3 K4 K5 • Grafo k-regular: todos os nós têm grau k. Kn é (n-1)-regular Algoritmos em Grafos

  7. É bipartido? SIM É bipartido? NÃO Conceitos Básicos • Grafo bipartido: o conjunto de nós pode ser particionado em dois subconjuntos V1 e V2 tais que qualquer aresta possui uma extremidade em V1 e a outra em V2. V1 V2 Km,n: grafo bipartido completo onde |V1| = m e |V2| = n Algoritmos em Grafos

  8. Conceitos Básicos • é um subgrafo de : • Grafo induzido em por : onde E(X) é o subconjunto de E formado por todas as arestas com as duas extremidades em X. 2 1 G X = {2, 3, 4, 5} 3 4 6 G(X) 5 Algoritmos em Grafos

  9. Conceitos Básicos • Clique: subconjunto de nós que induz um subgrafo completo. 5 C1 = {1, 2, 3} 2 1 C2 = {2, 4, 5} 6 C3 = {4, 6} C4 = {3} 4 3 • e são complementares: 1 2 1 2 3 4 3 4 Algoritmos em Grafos

  10. Conceitos Básicos • Caminho de a : Seqüência P de vértices e arestas alternados, tais que cada aresta é incidente ao nó anterior e ao nó posterior. P é um ciclo ou circuito. • Caminho simples: cada vértice aparece exatamente uma vez • Comprimento de um caminho: número de arestas • Caminhos disjuntos em vértices/arestas: não têm vértices/arestas em comum Algoritmos em Grafos

  11. Conceitos Básicos • Vértices vi e vj são conectados se existe um caminho de vi a vj. • Dois vértices vi e vj estão na mesma componente conexa se existe um caminho entre eles. • Um grafo é conexo se possui uma única componente conexa, ou seja, se existe um caminho entre qualquer par de nós Problema importante: determinar se um grafo é conexo ou não. É conexo? Algoritmos em Grafos

  12. v e Conceitos Básicos • Um grafo gerador de um grafo conexo G=(V,E) é um subgrafo conexo G’ com o mesmo conjunto de nós V. Grafo G Grafo gerador de G • v é um ponto de articulação do grafo conexo G se sua remoção desconecta G. • Se uma componente conexa de um grafo não contem ponto de articulação, então ela é uma componente 2-conexa. • Uma aresta e cuja remoção desconecta um grafo conexo é chamada de ponte. Algoritmos em Grafos

  13. 2 4 par ordenado 1 3 Início ou origem Fim ou destino 6 j é sucessor de i i é predecessor de j 5 i j = grau de entrada de i = número de predecessores de i = grau de saída de i = número de sucessores de i Conceitos Básicos • Digrafo ou grafo orientado: grafo no qual são associadas direções aos seus arcos. 1 0 3 1 Algoritmos em Grafos

  14. Conceitos Básicos • Uma cadeia a1, a2, ..., aq de arcos é uma seqüência tal que cada arco ai tem uma extremidade comum com o arco ai-1 e outra com o arco ai+1, 2 ≤ i ≤ q-1. 2 5 a3 a4 3 a1 a2 a6 a7 a2, a5, a6, a4 cadeia entre os nós 2 e 3 a5 1 4 • Ciclo: cadeia cujas extremidades coincidem. • Caminho a1, a2,..., aq: extremidade final do arco ai coincide com a extremidade inicial do arco ai+1. • Circuito: caminho cujas extremidades coincidem. Algoritmos em Grafos

  15. 7 6 2 1 8 4 7 1 5 3 10 9 6 3 2 5 4 Conceitos Básicos • Dois vértices vi e vj estão na mesma componente fortemente conexa de um grafo orientado se existe um caminho de vi a vj e um caminho de vj a vi. {1, 2, 3, 4, 5, 6, 8, 9, 10} {7} {1, 2, 3, 4} {5, 6, 7} Algoritmos em Grafos

  16. Conceitos Básicos • Grafos planares: Um grafo é planar se ele pode ser representado no plano de modo tal que não haja interseção entre suas arestas. K3 ? PLANAR K4 ? PLANAR K5 ? NÃO K3,3 ? NÃO Algoritmos em Grafos

  17. Um caminho é uma árvore? Conceitos Básicos • Árvore: grafo conexo sem circuitos • Floresta: grafo cujas componentes conexas são árvores Sim! Algoritmos em Grafos

  18. Conceitos Básicos Teorema: Se T é uma árvore com n vértices, então: • Existe um único caminho entre dois nós quaisquer de T. • Sejam i, j dois nós de T tais que a aresta (i, j) não existe. Então, a inserção da aresta (i, j) em T provoca a formação de exatamente um ciclo. • T possui n-1 arestas. Algoritmos em Grafos

  19. Conceitos Básicos Formas de representação e matrizes associadas a um grafo • Matriz de incidência nó-arco: Uma linha para cada nó Uma coluna para cada aresta a1 2 1 a4 a3 a2 a5 4 3 Algoritmos em Grafos

  20. Conceitos Básicos Formas de representação e matrizes associadas a um grafo • Uma matriz quadrada é unimodular se seu determinante é 1. • Uma matriz retangular A é totalmente unimodular se e somente qualquer matriz quadrada regular extraída de A é unimodular. Algoritmos em Grafos

  21. Conceitos Básicos Formas de representação e matrizes associadas a um grafo Teorema: A matriz de incidência de um grafo é totalmente unimodular. Uma matriz de incidência contém exatamente dois elementos não-nulos por coluna (+1, -1). Demonstração por indução: • Todas as matrizes quadradas regulares de dimensão 1 são unimodulares (det = 1). • Suponha a hipótese verdadeira até matrizes de ordem n-1 e considere uma matriz quadrada A’ de ordem n extraída de A. • Se toda coluna de A’ tem dois elementos não-nulos, então det(A’) = 0 (soma das linhas nulas). • Se uma coluna de A’ não tem elementos não-nulos, então det(A’) = 0. Algoritmos em Grafos

  22. Conceitos Básicos Formas de representação e matrizes associadas a um grafo • Se existe uma coluna com um único coeficiente não-nulo, então det(A’) =  det(A’’), onde A’’ é a matriz quadrada de ordem n-1 extraída de A’ pela eliminação da linha i e da coluna j. Como a hipótese é verdadeira para n-1, det(A’’) = 1 ou 0. Logo, det(A’) = 1 ou 0. Algoritmos em Grafos

  23. a12 2 1 a23 a24 a13 a34 4 3 1 1 2 2 4 4 3 3 Conceitos Básicos Formas de representação e matrizes associadas a um grafo • Matriz de adjacência: Uma linha para cada nó Uma coluna para cada nó aij = 1  (i , j ) A aij = 0  (i , j ) A • Grafos sem arcos paralelos: n2 posições Algoritmos em Grafos

  24. 2 1 1 2 3 4 1 2 3 4 4 3 2 3 3 4 1 4 2 1 3 2 Conceitos Básicos Formas de representação por listas de adjacências • Lista de nós: Cada nó aponta para a lista de seus sucessores (ou nós adjacentes) n nós m arestas n +m posições nós sucessores nós predecessores Algoritmos em Grafos

  25. 1 1 3 5 7 1 3 1 3 2 1 3 2 2 1 2 1 1 3 4 1 3 2 4 2 3 4 4 3 Conceitos Básicos Formas de representação por listas de adjacências • Lista de arcos 1 2 3 4 n m 1 2 3 4 5 6 7 S(.) T(.) É simples passar de uma forma de representação para outra. Algoritmos em Grafos

  26. 1 1 2 8 5 3 7 4 6 11 3 6 5 4 2 9 10 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 Conceitos Básicos • Desenhar o grafo representado pela matriz de adjacência abaixo: • Quais são as componentes fortemente conexas deste grafo? {1,2,5,6}, {3,4} • Representar sua matriz de incidência. Algoritmos em Grafos

  27. 1 2 3 4 5 6 2 6 1 1 3 6 2 8 5 3 4 7 4 3 6 11 3 2 4 5 6 2 4 9 10 5 1 3 1 2 3 4 5 6 7 8 9 10 11 1 1 6 6 2 6 2 5 5 3 4 2 6 1 3 6 5 3 2 4 4 3 Conceitos Básicos • Representar o mesmo grafo por sua lista de adjacências. • Representar o grafo por sua lista de arcos. Algoritmos em Grafos

  28. Ler número de nós n, matriz A linha 1, coluna  1, arco  0 Enquantolinha≤ nfaça Enquantocoluna ≤nfaça Se A(linha,coluna)=1 então arco arco+1, k 1 Enquantok≤nfaça B(k,arco)  0 k  k+1 fim_enquanto B(linha,arco)+1 B(coluna,arco)-1 fim_se coluna  coluna +1 fim_enquanto coluna  1 linha  linha +1 fim_enquanto Conceitos Básicos Algoritmo para converter uma representação de um grafo orientado sob forma de matriz de adjacência em matriz de incidência. Algoritmos em Grafos

  29. Conceitos Básicos Exercício: Escrever um algoritmo para converter a representação de um grafo orientado sob forma de matriz de incidência em uma representação por listas de adjacência. Algoritmos em Grafos

More Related