Isomorfismos de Grafos, Grafos Planares e Árvores Esdras Medeiros – p. 1/25 Isomorfismo de Grafos Os isomorfismos preservam adjacências entre vértices. – p. 2/25 Isomorfismo de Grafos Definição 1 Dois grafos (N1 , A1 , g1 ) e (N2 , A2 , g2 ) são isomorfos se existem funções f1 : N1 → N2 e f2 : A1 → A2 tais que, para cada arco a ∈ A1 , g1 (a) = x − y se, e somente se, g2 [f2 (a)] = f1 (x) − f2 (y). a a1 1 e7 2 a2 a3 a4 3 c e6 e3 e2 e d a5 4 e1 e5 a6 a7 e4 e8 a8 5 b – p. 3/25 Isomorfismo de Grafos Isomorfismo encontrado: f1 : 1 → c f 2 2→e 3→d 4→b 5→a : a1 a2 a3 a4 a5 a6 a7 a8 → e1 → e4 → e2 → e3 → e8 → e7 → e5 → e6 – p. 4/25 Isomorfismo de Grafos Teorema 1 Dois grafos simples (N1 , A1 , g1 ) e (N2 , A2 , g2 ) são isomorfos se existe f1 : N1 → N2 onde quaisquer n1 , n2 ∈ N1 são adjacentes se, e somente se, f (n1 ), f (n2 ) são adjacentes. – p. 5/25 Isomorfismo de Grafos Pode-se mostrar que grafos não são isomorfos através de invariantes como: • Número de nós; • Número de arcos; • Existência de arcos paralelos; • Existência de laços; • Existência de um nó com grau diferente; • Conexidade; • Existência de ciclos; – p. 6/25 Isomorfismo de Grafos Exemplo: Mostre que os grafos abaixo não são isomorfos. – p. 7/25 Grafos Planares Definição 2 Um grafo é planar quando pode ser representado em uma folha de papel, de modo que seus arcos se intersectem apenas em nós. O grafo à esquerda é planar pois é isomorfo ao grafo à direita que é planar. Em grafos planares além de nós e arcos também há regiões planares . No caso acima existem 4 regiões. – p. 8/25 Grafos Planares-Fórmula de Euler Em todo grafo planar vale a fórmula de Euler N − A + R = 2, onde N é o número de vértices, A é o número de arestas e R é o número de regiões divididas no plano pelo grafo. Exemplo: N = 13, A = 19 e R = 8. Logo 13 − 19 + 8 = 2. – p. 9/25 Grafos Planares-Fórmula de Euler Demonstração: Façamos indução sobre o número de arcos A. I) A = 1. (a) (b) II)Suponha que seja válido para uma grafo qualquer com K arcos. III)Vamos provar que vale para um grafo qualquer com K + 1 arcos. – p. 10/25 Grafos Planares-Fórmula de Euler Temos dois casos: Caso 1: O grafo tem um nó de grau 1. Apagando temporariamente o arco e o nó vale N − K + R = 2. Colocando de volta o arco e o nó vale (N + 1) − (k + 1) + R = 2 – p. 11/25 Grafos Planares-Fórmula de Euler Caso 2: O grafo não tem nós de grau 1. Apagando temporariamente o arco vale N − K + R = 2. Colocando de volta o arco vale N − (k + 1) + (R + 1) = 2. – p. 12/25 Grafos Planares - Duas Desigualdades Desigualdade 1: Temos que em qualquer grafo vale 2A ≥ 3R usando que N − A + R = 2, temos 2A ≥ 3(2 − N + A) = 6 − 3N + 3A 2A ≤ 3N − 6 Fato importante: O número de de arestas é linear em relação ao número de nós. – p. 13/25 Grafos Planares - Duas Desigualdades Desigualdade 2: Em grafos sem ciclos de comprimento 3 vale 2A ≥ 4R usando que N − A + R = 2, temos 2A ≥ 4(2 − N + A) = 8 − 4N + 4A A ≤ 2N − 4 Com isso podemos mostrar a impossibilidade de resolver o problema da água, luz e telefone. – p. 14/25 Grafos Planares - Duas Desigualdades Observe o grafo abaixo: Nesse grafo A = 9, N = 6 e não há ciclos de tamanho 3. Logo não satisfaz a desigualdade 2 A ≤ 2N − 4 pois 9 > 2(6) − 4. – p. 15/25 Árvores Definição 3 Uma árvore é um grafo conexo acíclico com um nó especial, denominado raiz da árvore. Exemplos: r – p. 16/25 Árvores-Terminologia R R1 raiz R2 R3 T2 • T2 é sub-árvore • R é nó pai de R1, R2 e R3. • R1, R2 e R3 são nós filhos de R. – p. 17/25 Árvores-Terminologia • A profundidade de um nó em uma árvore é o comprimento do caminho da raiz ao nó. • A profundidade (altura ou nível) de uma árvore é a maior profundidade dos nós na árvore. • Uma folha é um nó sem filhos. • Nós internos são nós que não são folhas. • Floresta é um grafo acíclico não necessariamente conexo – p. 18/25 Árvores binárias Definição 4 Em uma árvore binária cada nó tem no máximo dois filhos, filho esquerdo e filho direito. • Uma árvore estritamente binária é uma árvore binária em que cada nó tem 0 ou 2 filhos. • Uma árvore binária cheia é uma árvore em que se um nó tem alguma sub-árvore vazia então ele está no último nível. • Uma árvore completa é aquela em se n é um nó com algumas de sub-árvores vazias, então n se localiza no penúltimo ou no último nível. Portanto, toda árvore cheia é completa e estritamente binária. – p. 19/25 Árvores binárias Exemplos: Estritamente Binaria Completa Cheia – p. 20/25 Árvores binárias-Aplicações Fluxo Organizacional: Presidente Reitor Vice−Reitor Academico Diretor Humanas Diretor Ciencias Chefe Ciencia Computacao Vice−Reitor Administrativo Diretor Engenharias Diretor Saude Coordenador Ciencia Computacao Professor Ciencia Computacao – p. 21/25 Árvores binárias-Aplicações Diretórios: – p. 22/25 Árvores binárias-Aplicações Expressões Algébricas: − * + 2 x y 3 A expressão correspondente é (2 + x) − (y ∗ 3). – p. 23/25 Lendo arquvos em C Abrindo um arquivo: #include <stdio.h> int main() { FILE *fp; fp = fopen ("MEU_ARQUIVO", "r"); if (fp == NULL) { printf ("Houve um erro ao abrir o arquivo.\n"); return 1; } printf ("Arquivo MEU_ARQUIVO criado com sucesso.\n"); fclose (fp); return 0; } – p. 24/25 Lendo arquvos em C Lendo letra por letra: #include <stdio.h> int main(){ FILE *entrada, *saida; int letra; int str[100]; int i=0; entrada = fopen("arquivo1", "r"); //abre para leitura! while((letra = fgetc(entrada)) != EOF){ //le arquivo1 str[i] = letra; //armazena string no vetor str i++; } fclose(entrada); } – p. 25/25