Planaridade Grafos: Planaridade Um grafo é dito planar se pode ser representado no plano sem que suas linhas se cruzem Um grafo é planar se seu esquema puder ser traçado em um plano de forma que duas arestas quaisquer se toquem, no máximo, em algum extremidade. Estruturas de Dados - Grafos Planaridade ! Estruturas de Dados - Grafos Planaridade – Fórmula Euler Primeira aplicação – Cartografia – Posteriormente, coloração de mapas ! Outras aplicações – – – – Circuitos digitais Malhas de transporte terrestre Construção de viadultos Malha de transporte aéreo Estruturas de Dados - Grafos Estruturas de Dados - Grafos Planaridade – Fórmula Euler Planaridade – Fórmula Euler Face B Face A Face A Face E Face A Face E Face E C ce Fa Face A C ce Fa Face B Fac eB Face C Fac eB Face C Face E TEOREMA Seja G uma grafo planar. Então, n – m + f = 2 Onde: G é um poliedro com n vértices, f faces e m arestas. Estruturas de Dados - Grafos Planaridade – Fórmula Euler Estruturas de Dados - Grafos Planaridade – Fórmula Euler C ce Fa Face B Face A Fac eB Face C Face A Face E Face E TEOREMA n – m+ f = 2 Seja G uma grafo planar. Então, n – m + f = 2 –Verificar se segue a fórmula de Euler. Onde: G é um poliedro com n vértices, f faces e m arestas. Estruturas de Dados - Grafos Estruturas de Dados - Grafos D Face Face Planaridade – Fórmula Euler eF Fac eF Fac D Planaridade – Fórmula Euler Face B Face B Face A eC Fac eC Fac Face B Face A Face A Face E Face E 5–9+6=2 2=2 5–9+6=2 2=2 Face E 4–5+3=2 2=2 n – m+ f = 2 n – m+ f = 2 Estruturas de Dados - Grafos Planaridade – Fórmula Euler Estruturas de Dados - Grafos Planaridade – Fórmula Euler Face B Face E D 4–5+3=2 2=2 Face B Face B Face A Face A Face E 6–6+2=2 2=2 eC Fac eC Fac Face A Face Face A Face B Face Face B Face A Face E Face E eF Fac eF Fac D Face E Face A Face E 5–9+6=2 2=2 Face A Face E 4–5+3=2 2=2 6–6+2=2 2=2 6–7+3=2 2=2 5–9+6=2 2=2 n – m+ f = 2 n – m+ f = 2 Estruturas de Dados - Grafos Estruturas de Dados - Grafos Planaridade – Fórmula Euler Face E Face eF Fac D Face E Face E Face B Face B Face A Face A eC Fac Face B Planaridade – Limite Arestas Face A C D A B 1 2 1 2 4 3 4 3 Face E 4–5+3=2 2=2 Face A Face E 6–7+3=2 2=2 6–6+2=2 2=2 5–8+5=2 2=2 5–9+6=2 2=2 n – m+ f = 2 Estruturas de Dados - Grafos Planaridade – Limite Arestas 1 2 1 2 4 3 4 3 Planaridade – Limite Arestas 1 5 2 4 Estruturas de Dados - Grafos 1 2 1 2 4 3 4 3 3 1 5 2 4 m <= 3n - 6 3 M = número de arestas N = número de vértices Limite máximo para o número de arestas em um grafo planar Estruturas de Dados - Grafos Estruturas de Dados - Grafos Planaridade – Limite Arestas 1 2 4 3 Quanto maior o número de arestas em relação ao número de vértices, mais difícil de intuitivamente de se obter uma representação plana. 1 2 4 3 Planaridade – Limite Arestas 1 5 2 4 2 1 2 4 3 4 3 4 <= 3x4 – 6 4 <= 6 3 M = número de arestas N = número de vértices m <= 3n - 6 1 Limite máximo para o número de arestas em um grafo planar 5 6 <= 3x4 – 6 6 <= 6 m <= 3n - 6 3 M = número de arestas N = número de vértices Limite máximo para o número de arestas em um grafo planar Estruturas de Dados - Grafos Algoritmo de Hopcroft e Tarjan Planaridade ! 2 11 ! 7 ! 1 3 8 9 4 10 2 4 Estruturas de Dados - Grafos ? 10 <= 3x5 – 6 10 <= 9 1 6 Informa se um grafo G é ou não planar Caso positivo, exibe uma dentre as possíveis formas planares de representá-lo O algoritmo vai, gradativamente, montando o grafo sem interceptar linhas – Representa-se um subgrafo H de G – Estende-se o grafo colocando planarmente cada componente de G – Processo termina com a colocação de todo grafo G ou – Processo termina quando não se consegue colocar um componente 5 Estruturas de Dados - Grafos Estruturas de Dados - Grafos Algoritmo de Hopcroft e Tarjan Algoritmo para determinar planaridade (refazer) Planaridade (G1) 1. Escolhe-se um ciclo qualquer do grafo Como definir um ciclo? a. Não havendo ciclos, o grafo é planar e o algoritmo termina 2. 3. 4. Busca-se um caminho que divida o ciclo O ciclo e o caminho formam um subgrafo inicial H que apresenta 3 faces planas Enquanto houverem arestas a serem incluídas no grafo H, repete-se o algoritmo a seguir 1. H é um ciclo qualquer de G1 G:=G1-{arestas de H} Executar os passos 2 a 4 enquanto houver pelo menos uma aresta em G. Se todas as arestas de G forem colocadas em H, G1 é planar 2. P: cadeia, simples e elementar que liga u a w (u,w ε H e u <> w) Se não houver tal cadeia, aplica-se recursivamente o algoritmo ao grafo G’= G - {vértices de H} 3. Colocar u e w na mesma face de H. Se não for possível, voltamos a uma alternativa não examinada. Se não houver, G1 não é planar 4. Se for possível, duas situações podem ocorrer: a. u e w estão juntos em uma única face X de H b. u e w estão juntos no limite comum entre faces X e Y de H P é colocada na face X, dividindo-a em duas outras, X1 e X2. No caso b, é anotada a existência da alternativa Y (vide passo 3) As arestas de P são retiradas de G Estruturas de Dados - Grafos Algoritmo de Hopcroft e Tarjan Executando Algoritmo 1 2 1 2 4 3 4 3 Estruturas de Dados - Grafos 1 5 C 2 4 A 3 B Estruturas de Dados - Grafos Estruturas de Dados - Grafos Exemplo algoritmo planaridade Exemplo algoritmo planaridade (1) 1 2 3 4 5 6 7 8 9 10 11 1 0 2 2 0 0 0 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 1 0 1 1 0 0 0 1 0 0 0 0 3 2 2 0 2 0 0 0 0 0 0 0 4 0 0 2 0 2 0 0 0 0 0 1 2 1 0 1 0 0 0 0 0 0 0 0 5 0 0 0 2 0 2 0 0 1 0 0 3 1 1 0 1 0 0 0 0 0 0 0 6 0 0 0 0 2 0 2 1 0 0 0 7 2 0 0 0 0 2 0 1 0 0 0 4 0 0 1 0 1 0 0 0 0 0 1 8 0 0 0 0 0 1 1 0 1 1 0 9 0 0 0 0 1 0 0 1 0 1 1 5 0 0 0 1 0 1 0 0 1 0 0 10 0 0 0 0 0 0 0 1 1 0 1 11 0 0 0 1 0 0 0 0 1 1 0 6 0 0 0 0 1 0 1 1 0 0 0 7 1 0 0 0 0 1 0 1 0 0 0 8 0 0 0 0 0 1 1 0 1 1 0 9 0 0 0 0 1 0 0 1 0 1 1 10 0 0 0 0 0 0 0 1 1 0 1 11 0 0 0 1 0 0 0 0 1 1 0 Inicialização Ciclo: 1 2 3 Cadeia:1 7 6 5 4 3 Faces: A: 1 2 3 B: 1 7 6 5 4 3 2 C: 1 7 6 5 4 3 2 A 1 3 7 6 5 Estruturas de Dados - Grafos Exemplo algoritmo planaridade (2) 1 2 3 4 5 6 7 8 9 10 11 1 0 2 2 0 0 0 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 3 2 2 0 2 0 0 0 0 0 0 0 4 0 0 2 0 2 0 0 0 0 0 3 5 0 0 0 2 0 2 0 0 3 0 0 6 0 0 0 0 2 0 2 1 0 0 0 7 2 0 0 0 0 2 0 1 0 0 0 8 0 0 0 0 0 1 1 0 1 1 0 9 0 0 0 0 3 0 0 1 0 1 10 0 0 0 0 0 0 0 1 1 11 0 0 0 3 0 0 0 0 3 Exemplo algoritmo planaridade (3) 1 2 3 4 5 6 7 8 9 10 11 1 0 2 2 0 0 0 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 3 2 2 0 2 0 0 0 0 0 0 0 4 0 0 2 0 2 0 0 0 0 0 3 5 0 0 0 2 0 2 0 0 3 0 0 6 0 0 0 0 2 0 2 4 0 0 0 7 2 0 0 0 0 2 0 4 0 0 0 8 0 0 0 0 0 4 4 0 1 1 0 3 9 0 0 0 0 3 0 0 1 0 1 3 0 1 10 0 0 0 0 0 0 0 1 1 0 1 1 0 11 0 0 0 3 0 0 0 0 3 1 0 A E 3 C 7 Cadeia: 4 11 9 5 = 5 9 11 4 Quebrar B (D,E) ou C Faces: A: 1 2 3 C: 1 7 6 5 4 3 D: 4 11 9 5 E: 1 7 6 5 9 11 4 3 2 Estruturas de Dados - Grafos 2 1 6 4 5 D 9 11 Estruturas de Dados - Grafos B 4 C Cadeia: 6 8 7 = 7 8 6 Quebrar E (F, G) ou C Faces: A: 1 2 3 C: 1 7 6 5 4 3 D: 4 11 9 5 F: 7 8 6 G: 1 7 8 6 5 9 11 4 3 2 2 A 1 3 C 7 6 4 5 F D 8 9 G 11 Estruturas de Dados - Grafos Exemplo algoritmo planaridade (4) 1 2 3 4 5 6 7 8 9 10 11 1 0 2 2 0 0 0 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 3 2 2 0 2 0 0 0 0 0 0 0 4 0 0 2 0 2 0 0 0 0 0 3 5 0 0 0 2 0 2 0 0 3 0 0 6 0 0 0 0 2 0 2 4 0 0 0 7 2 0 0 0 0 2 0 4 0 0 0 8 0 0 0 0 0 4 4 0 5 1 0 9 0 0 0 0 3 0 0 5 0 1 3 10 0 0 0 0 0 0 0 1 1 0 1 11 0 0 0 3 0 0 0 0 3 1 0 Exemplo algoritmo planaridade (5) 2 A 1 3 C 7 Cadeia: 8 9 Quebrar G (H, I) Faces: A: 1 2 3 C: 1 7 6 5 4 3 D: 4 11 9 5 F: 7 8 6 H: 8 9 5 6 I: 1 7 8 9 11 4 3 2 4 6 F 5 8 9 I 2 3 4 5 6 7 8 9 10 11 0 2 2 0 0 0 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 3 2 2 0 2 0 0 0 0 0 0 0 4 0 0 2 0 2 0 0 0 0 0 3 5 0 0 0 2 0 2 0 0 3 0 0 6 0 0 0 0 2 0 2 4 0 0 0 7 2 0 0 0 0 2 0 4 0 0 0 8 0 0 0 0 0 4 4 0 5 6 0 9 0 0 0 0 3 0 0 5 0 6 3 10 0 0 0 0 0 0 0 6 6 0 1 11 0 0 0 3 0 0 0 0 3 1 0 11 2 A 1 3 C 7 Cadeia: 8 10 9 Quebrar I (J, K) ou H Faces: A: 1 2 3 C: 1 7 6 5 4 3 D: 4 11 9 5 F: 7 8 6 H: 8 9 5 6 J: 8 10 9 K: 1 7 8 10 9 11 4 3 2 D H 1 1 6 1 2 3 4 5 6 7 8 9 10 11 1 0 2 2 0 0 0 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 3 2 2 0 2 0 0 0 0 0 0 0 4 0 0 2 0 2 0 0 0 0 0 3 5 0 0 0 2 0 2 0 0 3 0 0 6 0 0 0 0 2 0 2 4 0 0 0 7 2 0 0 0 0 2 0 4 0 0 0 8 0 0 0 0 0 4 4 0 5 6 0 9 0 0 0 0 3 0 0 5 0 6 3 8 9 J 10 10 0 0 0 0 0 0 0 6 6 0 7 11 0 0 0 3 0 0 0 0 3 7 0 Cadeia: 10 11 Quebrar K (L,M) Faces: A: 1 2 3 C: 1 7 6 5 4 3 D: 4 11 9 5 F: 7 8 6 H: 8 9 5 6 J: 8 10 9 L: 10 11 9 M: 1 7 8 10 11 4 3 2 3 M 7 4 6 F 5 D H 8 9 J 10 L 11 Estruturas de Dados - Grafos 11 K Exemplo algoritmo planaridade (7) C D H Estruturas de Dados - Grafos 2 A 1 5 F Estruturas de Dados - Grafos Exemplo algoritmo planaridade (6) 4 1 2 3 4 5 6 7 8 9 10 11 1 0 2 2 0 0 0 2 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 0 3 2 2 0 2 0 0 0 0 0 0 0 4 0 0 2 0 2 0 0 0 0 0 3 5 0 0 0 2 0 2 0 0 3 0 0 6 0 0 0 0 2 0 2 4 0 0 0 7 2 0 0 0 0 2 0 4 0 0 0 8 0 0 0 0 0 4 4 0 5 6 0 9 0 0 0 0 3 0 0 5 0 6 3 10 0 0 0 0 0 0 0 6 6 0 7 11 0 0 0 3 0 0 0 0 3 7 0 2 A 1 3 M C 7 4 6 F 5 D H 8 9 J 10 L 11 Estruturas de Dados - Grafos