Curso de Engenharia da Computao Matemtica Discreta 10 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br - www.univasf.edu.br/~jorge.cavalcanti Matemtica Discreta 10 2 1 - Grafos e rvores Muitas aplicaes em computao necessitam considerar conjunto de conexes entre pares de objetos: Existe um caminho para ir de um objeto a outro seguindo as conexes? Qual a menor distncia entre um objeto e outro? Quantos outros objetos podem ser alcanados a partir de um determinado objeto? Grafos so utilizados para modelar tais problemas. Alguns exemplos de problemas prticos que podem ser resolvidos atravs de uma modelagem em grafos: Ajudar mquinas de busca a localizar informao relevante na Web. Descobrir qual o roteiro mais curto para visitar as principais cidades de uma regio turstica.
3 1 - Grafos e rvores Definio informal - Um grafo um conjunto no-vazio de ns (vrtices) e um conjunto de arcos (arestas) tais que cada arco conecta dois ns. Os grafos que sero estudados tero sempre um nmero finito de ns e arcos. 4 1 - Grafos e rvores O grafo a seguir tem cinco ns e seis arcos:
A definio informal de um grafo funciona bem se tivermos sua representao visual, mostrando que arcos se conectam aos ns. Sem essa visualizao, precisamos de uma definio formal de mostrar esse grafo. 1 3 2 4 5 a 5 a 4 a 2 a 1 a 3 a 6 5 1 - Grafos e rvores Definio Formal - Um grafo uma tripla ordenada (N, A, g), onde: N = um conjunto no-vazio de ns (vrtices) A = um conjunto de arcos (arestas) g = uma funo que associa a cada arco a a um par no- ordenado x-y de ns, chamado de extremidades de a 1 3 2 4 5 a 5 a 4 a 2 a 1 a 3 a 6
Ex. 01: No grafo acima, a funo g que associa arcos a suas extremidades a seguinte: g(a 1 )=1-2, g(a 2 )=1-2, g(a 3 )=2-2, g(a 4 )=2-3, g(a 5 )=1-3 e g(a 6 )=3-4.
6 1 - Grafos e rvores Grafo direcionado (dgrafo) Um grafo uma tripla ordenada (N, A, g), onde N = um conjunto no-vazio de ns (vrtices) A = um conjunto de arcos (arestas) g = uma funo que associa a cada arco a a um par ordenado (x, y) de ns, onde x o ponto inicial e y o ponto final de a. Em um grafo direcionado, cada arco tem um sentido ou orientao. Ex. 02: No grafo acima, a funo g que associa arcos a suas extremidades a seguinte: g(a 1 )=(1,2), g(a 2 )=(1,4), g(a 3 )=(1,3), g(a 4 )=(3,1) e g(a 5 )=(4,4).
1 3 2 4 a 5 a 4 a 1 a 2 a 3 7 1 - Grafos e rvores Terminologia Alm da orientao, podemos colocar informaes nos ns (rtulos), gerando um grafo rotulado. Pode-se tambm atribuir valores ou pesos aos arcos, gerando um grfico com pesos. Ns adjacentes se ambos so extremidades de algum arco. Lao - um arco com extremidades n-n para algum n n. Arcos paralelos dois arcos com a mesma extremidade. Grafo Simples um grafo sem laos ou arcos paralelos. N isolado um n que no adjacente a nenhum outro. Grau o nmero de extremidades de arcos que se conectam a um n. Grafo completo - um grafo no qual dois ns distintos quaisquer so adjacentes. Subgrafo consiste em um conjunto de ns e arcos que so subconjuntos do conjunto original de ns e arcos.
1 3 2 4 5 a 5 a 4 a 2 a 1 a 3 a 6 1 3 2 a 5 a 4 a 1 8 1 - Grafos e rvores Terminologia Caminho do n n 0 para o n n k uma sequncia: n 0 , a 0 , n 1 , a 1 ,.. N k-1 , a k-1 , n k O comprimento de um caminho o nmero de arcos que ele contm. Grafo conexo se existe um caminho de qualquer n para outro. Ciclo um caminho de algum n n 0 para ele mesmo tal que nenhum arco aparece mais de uma vez. n 0 o nico n que aparece mais de uma vez e apenas nas extremidades. Um grafo sem ciclos dito acclico.
1 3 2 4 5 a 5 a 4 a 2 a 1 a 3 a 6 1 3 2 a 5 a 4 a 1 9 1 - Grafos e rvores Exerccio Ex. 03: Esboce um grafo com ns {1,2,3,4,5}, arcos {a 1 ,
a 2 , a 3 ,
a 4 ,
a 5 ,
a 6 } e funo g, dada por g(a 1 )=1-2, g(a 2 )=1-3, g(a 3 )=3-4, g(a 4 )=3-4, g(a 5 )=4-5 e g(a 6 )=5-5. Depois responda o que se segue: a) Encontre 2 ns que no so adjacentes b) Encontre um n adjacente a si mesmo c) Encontre um lao d) Encontre 2 arcos paralelos e) Encontre o n de grau 3 f) Encontre um caminho de comprimento 5 g) Encontre um ciclo h) Esse grafo completo? i) Esse grafo conexo? 10 1 - Grafos e rvores Terminologia As figuras abaixo ilustram os grafos simples completos de 1 a 4 vrtices. Um grafo simples completo denotado por K n .
O grafo simples da figura abaixo no completo, pois nem todo n adjacente a todos os outros.
1 K 1 5 3 4 K 2 K 3 K 4 K 5 = ? 2 11 1 - Grafos e rvores Terminologia Entretanto, os ns podem ser divididos em 2 conjuntos disjuntos {1,2} e {3,4,5}, tais que os ns de cada conjunto no so adjacentes, mas dois ns escolhidos um em cada conjunto so adjacentes. Esse tipo de grafo chamado de bipartido completo. Grafo bipartido completo se os seus ns podem ser divididos em 2 conjuntos disjuntos no-vazios N 1 (m elementos) e N 2 (n elementos), tais que 2 ns so adjacentes se, e somente se, um deles pertence a N 1 e o outro pertence a N 2 . Um tal grafo denotado por K m,n 1 2 5 3 4 K 2,3 12 1 - Grafos e rvores Terminologia Dois grafos podem parecer diferentes na sua representao visual, mas podem ser o mesmo grafo de acordo com sua representao formal.
Grafos Isomorfos dois grafos (N 1 , A 1 , g 1 ) e (N 2 , A 2 , g 2 ) so isomorfos se existem bijees f 1 :N 1 N 2 e f 2 : A 1 A 2
tais que, para cada arco a A 1 , g 1 (a) = x-y se, e somente se g 2 [f 2 (a)] = f 1 (x)-f 1 (y). 1 3 4 2 a 1 a 2 1 3 b 2 4 a 1 a 2 e 1 e 2 a d c f 1 : 1 a 2 c 3 b 4 d
f 2 : a1 e2 a2 e1
13 1 - Grafos e rvores Terminologia Em outras palavras, deve ser possvel re-rotular os ns de um grafo para serem rtulos de outro, mantendo os arcos correspondentes em cada grafo. Ex. 04: Nos grafos isomorfos abaixo, complete as bijees que estabelecem o isomorfismo. 1 2 a 1 a 2 3 4 5 a 4 a 3 a 5 a 6 a 7 a 8 a b c e d e 8 e 7 e 3 e 2 e 4 e 1 e 6 e 5 f 1 : 1 c 2 e 3 d 4 b 5 a
f 2 : a1 e1 a2 e4 . . 14 1 - Grafos e rvores Terminologia Ex. 05: Nos grafos abaixo verifique se so isomorfos e, em caso positivo, descreva as bijees que estabelecem o isomorfismo. 1 5 3 2 4 6 a b e f c d 15 1 - Grafos e rvores Terminologia Teorema sobre Isomorfismo de Grafos Simples Dois grafos simples (N 1 , A 1 , g 1 ) e (N 2 , A 2 , g 2 ) so isomorfos se existem bijees f 1 :N 1 N 2 tal que, quaisquer que sejam os ns n i e n j de N 1 , n i e n j so adjacentes se, e somente se, f(n i ) e f(n j ) so adjacentes. A funo f chamada de um isomorfismo do grafo 1 no grafo 2. Para provar que dois grafos so isomorfos necessrio encontrar a bijeo e depois mostrar que a propriedade de adjacncia preservada. Por outro lado, provar que dois grafos no so isomorfos, preciso mostrar que as bijees necessrias no existem. Esse mtodo pode ser invivel em grafos maiores. Existem algumas condies que deixam claro que os grafos no so isomorfos, tais como:
16 1 - Grafos e rvores Condies de no isomorfismo 1. Um grafo tem mais ns que o outro. 2. Um grafo tem mais arcos que o outro. 3. Um grafo tem arcos paralelos e o outro no. 4. Um grafo tem um lao e o outro no. 5. Um grafo tem um n de grau k e o outro no. 6. Um grafo conexo e o outro no. 7. Um grafo tem um ciclo e o outro no.
Mesmo assim, ainda podemos falhar.. (a)
(b)
17 1 - Grafos e rvores Grafo planar um grafo que pode ser representado de modo que seus arcos se intersectam apenas em ns. Um grafo isomorfo a um grafo planar tambm planar. Ex. 06: Mostre que K 4 um grafo planar. Ex. 07: K 5 tambm planar ? Outra Forma ? 18 1 - Grafos e rvores O matemtico suo Leonard Euler descobriu que um grafo planar, simples e conexo, divide o plano em um determinado nmero de regies, incluindo regies limitadas por arcos e uma regio exterior ilimitada. Euler observou uma relao entre o nmero n de ns, o nmero a de arcos e o nmero r de regies em um tal grafo. Frmula de Euler: n a + r = 2 Verifique a Frmula de Euler no grafo abaixo: 19 1 - Grafos e rvores Representao de grafos no computador Maior vantagem do grafo a sua representao visual da informao. E se quisermos armazenar o grafo em forma digital? Imagem digital Difcil manipulao e ocupa mais espao. O que precisamos armazenar os dados essenciais que fazem parte da definio do grafo. Os ns e quais so extremidades de arcos e outras informaes pertinentes (pesos, cores etc.). As representaes computacionais usuais envolvem uma das estruturas de dados: Matriz de adjacncia Lista de adjacncias
20 1 - Grafos e rvores Representao de grafos no computador Matriz de Adjacncia Seja um grafo com n ns numerados (n 1 , n 2 ..,n n ) arbitrariamente. Aps a ordenao dos ns, podemos formar uma matriz n x n onde o elemento i, j o nmero de arcos entre os ns n i e n j .
A matriz de um grafo no-direcionado simtrica 1 2 3 4 A = 0 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0
21 1 - Grafos e rvores Representao de grafos no computador Matriz de Adjacncia Encontre a matriz de adjacncia para o grafo abaixo:
A matriz de adjacncia de um grafo direcionado no ser simtrica, pois a existncia de um arco de n i para n j no implica em um arco de n j para n i .
22 1 - Grafos e rvores Representao de grafos no computador Matriz de Adjacncia 1. Vantagens: Fcil visualizao para vrtices adjacentes Muito til para algoritmos em que necessitamos saber com rapidez se existe uma aresta ligando dois vrtices Fcil clculo do grau do n. A soma dos nmeros de uma linha retorna o grau do vrtice, em grafos no direcionados Em grafos direcionados A soma dos nmeros de uma linha retorna o grau de sada A soma dos nmeros de uma coluna retorna o grau de entrada 2. Desvantagens: Requer muito espao de armazenamento Deve ser mais utilizada para grafos densos 23 1 - Grafos e rvores Representao de grafos no computador Lista de Adjacncias Se um grafo tem n ns, precisamos de n 2 dados para representar a matriz (ou n 2 /2), mesmo que muitos desses dados seja igual a zero. Um grafo com poucos arcos pode ser representado de modo mais eficiente armazenando-se somente os elementos no nulos da matriz de adjacncia. Essa representao consiste em uma lista, para cada n, de todos os ns adjacentes a ele. Cada linha da matriz representa uma lista.
3 4 5 2 1 3 2 4 1 1 2 3 3 5 2 1
4 3 2 4 4 1 4
24 1 - Grafos e rvores Representao de grafos no computador Lista de Adjacncias Mais utilizada para grafos esparsos, pois tambm exige muito espao para armazenamento Verificao de grau: No Direcionais: quantidade de ns em uma linha Direcionais: A quantidade de ns de uma linha representa o grau de sada. Como saber o grau de entrada de cada n? Deve-se pesquisar em todos os vrtices do grafo, excluindo ele, se existe alguma referncia para o n em questo!!! 25 1 - Grafos e rvores Representao de grafos no computador Exerccios 1. Escreva a matriz e a lista de adjacncia do seguinte grafo:
2. Desenhe o grafo representado pela matriz de adjacncia:
3. Desenhe o grafo direcionado representado pela lista de adjacncia a seguir: A = 0 2 0 2 0 2 0 2 0 1 2 3 4
1 2 4 1 2 2 4 3 1 26 1 - Grafos e rvores rvores e suas representaes rvore um tipo especial de grafo, til na representao de dados Por definio um grafo conexo, acclico e com um n especial, denominado de raiz. r r 27 1 - Grafos e rvores rvores e suas representaes Uma rvore tambm pode ser definida de maneira recorrente. O nico n uma rvore (esse n como raiz). Sejam T1, T2, ...Tt rvores disjuntas com razes r1, r2,... rt. Um grafo formado colocando-se um novo n r, ligado, por um nico arco a cada um dos ns r1, r2...r uma rvore com raiz r. r r2 r1 T1 T2 N pai N filho N filho 28 1 - Grafos e rvores rvores e suas representaes Como a rvore acclica e conexa, existe somente um caminho da raiz para qualquer outro n da rvore. A profundidade de um n o comprimento do caminho da raiz ao n. A altura de uma rvore a maior profundidade dos ns na rvore. Um n sem filhos chamado de folha da rvore. Uma floresta uma coleo de rvores disjuntas. 29 1 - Grafos e rvores rvores e suas representaes As rvores binrias so as que cada n tem, no mximo, dois filhos (esquerdo e direito). rvore binria cheia uma rvore com todos os ns internos com dois filhos e todas as folhas esto mesma profundidade. rvore binria completa uma rvore binria quase cheia, o nvel mais baixo vai se completando da esquerda para direita, mas pode ter folhas faltando. 30 1 - Grafos e rvores rvores e suas representaes Como um rvore tambm um grafo, as representaes de grafos podem ser usadas para rvores. rvores binrias tm caractersticas especiais na representao, tal como a identidade dos filhos esquerdo e direito. O equivalente matriz de adjacncia uma tabela onde os contm os dados de cada n. O equivalente de uma lista de adjacncia uma coleo de registros com trs campos contendo o n em questo, um ponteiro para registro de cada n filho. 1 2 5 4 3 6 N FILHO ESQ FILHO DIR 1 2 3 2 4 5 3 0 6 4 0 0 5 0 0 6 0 0 1 2 3
6 5 4
31 1 - Grafos e rvores rvores e suas aplicaes rvores genealgicas Fluxo organizacional Estrutura de organizao de informaes
Demonstrao de propagao de informao N = 4 n 32 1 - Grafos e rvores rvores e suas aplicaes Expresses algbricas envolvendo operaes podem ser representadas por rvores algbricas rotuladas. Para qualquer n interno, a operao binria de seu rtulo efetuada com as expresses associadas s sub- rvores. Ex.: (2+x) (y*3) - + x 2 * 3 y Qual a rvore que representa a expresso (2+3) * 5? 33 1 - Grafos e rvores Algoritmos de percurso em rvores Se uma estrutura de rvore est sendo usada para armazenar dados, til termos um mecanismo sistemtico de escrita de dados nos ns; Isso pode ser feito percorrendo-se a rvore, visitando-se todos os ns na sua estrutura; Os trs algoritmos mais comuns de percurso em rvores so os percursos em pr-ordem, em ordem simtrica e em ps- ordem. Seja uma rvore T com uma raiz r, com sub-rvores da esquerda para a direita, T1, T2.. Tt. r r1 T1 T2 ... Tt r2 rt 34 1 - Grafos e rvores Algoritmos de percurso em rvores Os termos pr-ordem, em ordem simtrica e em ps- ordem, referem-se ordem da visita da raiz em comparao com os ns das sub-rvores. No percurso em pr-ordem, a raiz visitada primeiro e depois processam-se as sub-rvores, da esquerda para a direita, cada uma em pr-ordem. ALGORITMO Pr-Ordem Pr-ordem(rvore T) //Escreve os ns de uma rvore com raiz r em pr-ordem escreva (r) para i=1 at t faa Pr-ordem (Ti) fim do para
fim Pr-ordem 35 1 - Grafos e rvores Algoritmos de percurso em rvores No percurso em ordem simtrica, a sub-rvore da esquerda percorrida em ordem simtrica, depois a raiz visitada e, em seguida, as outras sub-rvores, da esquerda para a direita, sempre em ordem simtrica. Se a rvore for binria, a raiz visitada entre as duas sub-rvores. ALGORITMO OrdemSimtrica OrdemSimtrica(rvore T) //Escreve os ns de uma rvore com raiz r em ordem simtrica OrdemSimtrica(T 1 ) escreva (r) para i=2 at t faa OrdemSimtrica (Ti) fim do para
fim OrdemSimtrica 36 1 - Grafos e rvores Algoritmos de percurso em rvores No percurso em ps-ordem, a raiz a ltima a ser visitada , aps o percurso, em ps-ordem, de todas as sub- rvores da esquerda para a direita. ALGORITMO Ps-Ordem Ps-ordem(rvore T) //Escreve os ns de uma rvore com raiz r em ps-ordem para i=1 at t faa Ps-ordem (Ti) fim do para escreva (r)
fim Ps-ordem 37 1 - Grafos e rvores Algoritmos de percurso em rvores Em rvores binrias: Pr-ordem: raiz, esquerda, direita Ordem simtrica: esquerda, raiz, direita Ps-ordem: esquerda, direita, raiz. a b e d c g f i h Pr-ordem: a b d e c f h i g Ordem simtrica: d b e a h f i c g Ps-ordem: d e b h i f g c a 38 1 - Grafos e rvores Algoritmos de percurso em rvores Escreva os percursos em pr-ordem, ordem simtrica e ps-ordem da rvore abaixo: a b e d c h g k i f j Pr-ordem: a b d i e f c g j k h Ordem simtrica: i d b e f a j g k c h Ps-ordem: i d e f b j k g h c a 39 1 - Grafos e rvores Algoritmos de percurso em rvores Vimos que expresses algbricas podem ser representadas por rvores binrias. Se fizermos um percurso em ordem simtrica na rvore abaixo, obteremos a expresso (2+x) * 4 Notao infixa.
Um percurso em pr-ordem fornece a expresso *+ 2 x 4 O smbolo precede o operando. Essa forma de expresso chamada de notao prefixa ou notao polonesa. * + 2 x 4 * (2 + x) 4 (2 + x) * 4 * + x 2 4 40 1 - Grafos e rvores Algoritmos de percurso em rvores Um percurso em ps-ordem fornece a expresso 2 x + 4* O smbolo vem aps os operandos. Essa forma de expresso chamada de notao posfixa ou notao polonesa reversa (NPR). 2 x + 4 * (2 + x) 4 * (2 + x) * 4
Embora pouco familiares, essas notaes dispensam parnteses para evitar ambiguidades e so mais eficientes. Compiladores normalmente mudam expresses algbricas de programas para NPR para obter processamento mais eficiente.
* + x 2 4 41 1 - Grafos e rvores Algoritmos de percurso em rvores Exerccio: Escreva a rvore que representa a expresso: a + (b * c d) e escreva a expresso em notaes polonesa e polonesa reversa.