330 likes | 669 Views
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
E N D
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha
PARTE 1: CONCEITOS BÁSICOS Algoritmos em Grafos
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
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
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
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
É 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
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
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
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
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
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
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
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
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
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
Um caminho é uma árvore? Conceitos Básicos • Árvore: grafo conexo sem circuitos • Floresta: grafo cujas componentes conexas são árvores Sim! Algoritmos em Grafos
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
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
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
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
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
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
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
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
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
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
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
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