Você está na página 1de 19

Web Aula 1

Introduo a rvores e Grafos.


rvores

bem provvel que a estrutura no linear de maior aplicao em computao a estrutura de rvore, ou simplesmente, rvore, que pode ser definida da seguinte maneira:

Uma rvore A um conjunto finito de N nodos, tal que N > O. Ento: 1 2 A1 ,..., Existe Os A
m

um N-1 sendo ,

nodo nodos que

especial, esto cada um ,

chamado em por sua

raiz m vez,

da conjuntos uma

rvore; disjuntos, rvore.

restantes

particionados

Essas rvores A1 ,... Am so chamadas subrvores da raiz.

Esta uma definio recursiva, ou seja, definimos rvore em funo de rvores. A recursividade aqui utilizada como uma ferramenta para a definio de um padro fundamental de estruturao. Na definio de listas lineares, utilizamos o sequenciamento (ou a repetio) como padro fundamental de estruturao e comportamento. importante observar que podemos utilizar a recursividade para expressar sequenciamento ou repetio, como m:

Uma lista linear um conjunto finito de N nodos, tal que, se N > O, ento: 1. Existe um modo especial que precede todos os demais;

2. Os restantes N - 1 nodos formam uma lista linear.

A recproca, no entanto, no verdadeira (Wirth, 1976). Podemos utilizar a recursividade para definir de uma maneira elegante e concisa estruturas com um grau de sofisticao muito alm da capacidade da repetio ou do sequenciamento. A definio de rvores um exemplo clssico Existem diversas maneiras de se representar graficamente uma rvore, e a figura 1.25 mostra algumas delas (as principais), para a rvore {A,B,C,D,E,F}.

Nesta rvore, A a raiz, e {B, D, E, F} e {C, G} so subrvores de A. {D}, {E} e {F} ]so subrvores da raiz B, e {G} subrvore da raiz C. 1) Grafo

2) Conjuntos Superpostos (Tambm conhecidos como DIAGRAMA DE VENN)

3) Parnteses

(A(B(D,E,,F), C(G)))

4) Paragrafamento ou Identao

Grau de um nodo o nmero de subrvores que possui; um nodo de grau 0 chamado nodo terminal, ou, significativamente, folha. Na rvore da figura 1.25:

A possui grau 2 B grau 3 C grau 1 D, E, F e G possuem grau 0, sendo folhas, portanto.

Repare que a representao em forma de grafo, apesar de ser a que mais justifica o nome dado estrutura, est desenhada na figura 1.25 de uma forma bastante incomum entre as rvores da natureza: com a raiz em cima e as folhas em baixo. Na verdade, este um costume generalizado em computao e,

provavelmente, teve sua origem na representao de estruturas hierrquicas por rvores.

Uma discusso sobre qual das maneiras (a), (b) ou (c) da figura 1.26 deve ser seguida, pode parecer bizantina primeira vista, mas existe uma terminologia associada com a disposio grfica dos nodos que j se tornou padro.

Dizemos, por exemplo, que B e C esto abaixo de A; C est acima de D e E, ou ento que o nodo mais esquerda da rvore. Somente a representao (A) est coerente com esta terminologia.

Definimos nvel de um nodo, com relao a uma rvore T, da seguinte maneira:

1 . Se um nodo X est no nvel i, ento, as razes de suas subrvores esto no nvel i + 1; 2. O nvel da raiz de T 1, arbitrariamente.

A figura 1.27 mostra a rvore da figura 1.25 com os nveis de seus nodos indicados.

Uma outra terminologia para referenciar relaes entre nodos de uma rvore baseia-se em relaes familiares. Na rvore da figura 1.27, B e C so filhos de A, e, naturalmente, A o pai deles; B e C so irmos, assim como D, E e F, que por sua vez so filhos de B e sobrinhos de C, etc...

Dizemos que uma rvore ordenada quando a ordem das subrvores A1 ...., Am na definio importante; nesse caso, dizemos que A a primeira subrvore da raiz, A2 a segunda, etc... Se esta ordem irrelevante, dizemos que equivalentes, o que no a rvore orientada, no sentido em que as rvores da figura 1.28 so

ocorre no caso das rvores serem ordenadas. rvores ordenadas ocorrem mais frequentemente em computao e, por isso, dizemos simplesmente rvores ordenadas.

Uma floresta um conjunto de zero ou mais rvores disjuntas. A distino entre florestas e rvore mnima: basta acrescentar um nodo a uma floresta que ela se transforma em uma rvore, enquanto que toda rvore uma floresta. Uma rvore binria uma rvore ordenada, na qual cada nodo possui no mximo duas subrvores. E quando s existe uma subrvore presente, distingue-se entre uma subrvore direita ou uma subrvore esquerda. Em termos da representao por grafos, isso quer dizer que as rvores binrias da figura 1.29 so diferentes.

rvores genealgicas, como a da figura 1.30, so exemplos de rvores binrias. Resultados de torneios de tnis so costumeiramente dados em forma de rvores binrias.

Um ninho de ses em programao pode tambm ser representado por uma rvore binria. Ao trecho

Corresponde rvore binria da figura 1.31

Onde, em cada nodo, a subrvore acima corresponde clusula ento, e a subrvore esquerda, clusula seno.

Web Aula 2
Introduo a rvores e Grafos.
RVORES BINRIAS

A ocorrncia de rvores binrias em computao suficientemente grande para, por si s, justificar o seu estudo mais detalhado. Alm disso, podemos representar qualquer floresta como rvore binria. Por exemplo: a floresta formada pelas rvores da figura 1.32 pode ser representada pela rvore binria da figura 1.33.

Essa foi obtida da floresta, unindo todos os filhos de uma mesma famlia (pelo lado direito), e removendo todas as ligaes de pai para filho, com exceo do primognito. Girando o diagrama da figura 1.33 de 45 , obtemos a rvore binria no esquema tradicional, como mostra a figura 1.34

Invertendo o processo, podemos dizer que a rvore binria da figura 1.35 corresponde floresta da figura 1.36

As transformaes acima formam a chamada correspondncia natural entre rvore binrias e florestas.

Um exemplo interessante de rvore binria uma expresso aritmtica com operadores didicos (com dois operandos). Cada operador possui como subrvores os seus operandos. A figura 1.37 mostra a expresso.

(a + b) * c d / (e f)

em forma de rvore binria.

A maneira tradicional de se representar uma rvore binria em um computador utiliza nodos do formato: tipo NODO = registro (INFORMAO : INFO; REFERENCIA-NODO: ANTERIOR, PROXIMO);

tipo REFERENCIA-NODO = referncia (NODO);

onde ANTERIOR e PROXIMO so referncias para a subrvore da esquerda e da direita, respectivamente. necessrio ainda um apontador

REFERENCIA-NODO : RAIZ;

Para referenciar o nodo raiz da rvore. A rvore da figura 1.37 , ento, representada como mostra a figura 1.38

Um problema que surge em muitos algoritmos que manipulam rvores binrias o de percorrer todos os seus nodos para examinar ou modificar seu contedo, de tal maneira que cada um dos nodos seja visitado exatamente uma vez. Um caminhamentocompleto atravs da rvore nos d uma sequncia de seus nodos; como em muitos algoritmos precisamos saber qual o prximo nodo (ou o anterior), nesta sequncia, conveniente definir uma sistemtica para o caminhamento. Os trs principais mtodos de caminhar atravs de uma rvore binria so: 1 Caminhamento em preordem Procedimento:

Visite a raiz; Caminhe atravs da subrvore da esquerda em preordem (se existir);

Caminhe atravs da subrvore da direita em preordem (se existir).

2 Caminhamento em inordem Procedimento:


Caminhe atravs da subrvore da esquerda em inordem (se existir). Visite a raiz; caminhe atravs da subrvore da direita em inordem (se existir) .

3 Caminhamento em posordem Procedimento:


caminhe atravs da subrvore da esquerda em posordem (se existir) Caminhe atravs da subrvore da direita em posordem (se existir). visite a raiz.

Aplicando as definies de caminhamento rvore da Figura 1.37, obtemos os seguintes arranjos:


Em preordem : Em inordem : Em preordem :

- * + abc/d - ef a + b * c - d/e - f ab + c * def - / -

Nestes, reconhecemos as formas prefixada, infixada e posfixada de uma expresso. A recursividade aparece aqui, mais uma vez, como caracterstica fundamental da estrutura de rvore. Veremos agora algoritmos na forma de procedimentos recursivos para os trs tipos de caminhamento, e tambm a verso no recursiva do procedimento para caminhamento em inordem (procedimentos recursivos e no recursivos esto explicados no mdulo 3, seo 35).

Procedimento PREORDEM ( P );

REFERENCIA-NODO: P; Incio Se P Ento visita P ^ ; PREORDEM ( P ^ . ANTERIOR ) ; PREORDEM ( P ^ . PROXIMO) Fim se Fim Fim PREORDEM;

Procedimento INORDEM ( P ); REFERENCIA-NODO : P ; Incio Se P Entuo INORDEM ( P ^ . ANTERIOR ); visita P ^ ; INORDEM (P ^ . PROXIMO ) Fim se Fim Fim INORDEM;

Procedimento POSORDEM ( P ) ; REFERENCIA-NODO : P ;

Incio Se P = ^ Ento POSORDEM ( P ^ . ANTERIOR ) ; POSORDEM ( P ^ . PROXIMO ) ; visita P ^ Fim se Fim Fim POSORDEM ;

Agora, o procedimento no recursivo para o caminhamento em inordem: procedimento INORDEM (P); REFERENCIA-NODO : P ; Incio tipo PILHA NODO PILHA inteiro : TOPO : = 0 ; Repita Se P Ento { P => PILHA } Se TOPO = 30 Ento OVERFLOW ; Seno TOPO : = TOPO + 1 ; PILHA [ TOPO ] : = P Fim se ; P : = P ^ . ANTERIOR DE APONTADORES TOPO : PILHA; ; DE APONTADORES = [ 1:30 ] REFERENCIA;

Seno se TOPO > 0 Ento P : = PILHA [TOPO] ; TOPO : = TOPO 1 ; visita P ^ ; P : = P ^ . PROXIMO Fim se Fim se At TOPO = 0 e P = Fim Fim INORDEM ; { P

PILHA }

Uma comparao entre este algoritmo e seu correspondente recursivo d uma medida do fato que operaes em estruturas de dados definidas recursivamente so programadas mais adequadamente por procedimentos recursivos. Na verso no recursiva, a pilha cumpre a sua misso tradicional de lembrar de coisas que devem ser feias, mas que, para tanto, faz-se necessria antes a execuo de sua subtarefa (ou subtarefas). bom lembrar que existe um mecanismo de pilha implcito nos procedimentos recursivos, j que em cada chamada recursiva gerada uma nova encarnao das variveis internas. Uma pilha o mecanismo essencial para implementao de recursividade. O algoritmo no recusivo para caminhamento em preordem anlogo ao apresentado para inordem. Para o caminhamento em posordem, o algoritmo no recursivo um pouco mais complicado, e por esta razo esse mtodo no to utilizado quanto os demais.

Recursividade: est relacionada ao uso de programas com funes. Quando um programa chama uma funo e dentro dessa funo existe uma chamada para ela mesma, temos um programa recursivo. Nesse caso, uma nova chamada de execuo criada (para a segunda chamada), enquanto que a primeira permanece parada, esperando o encerramento da segunda. Pode acontecer de serem criadas vrias chamadas, dependendo do problema. Uma vez encerradas as chamadas, as anteriores passaro a ser resolvidas.

Você também pode gostar