Title:
1 Grafos
- Árvores (introdução)
- Anjolina Grisi de Oliveira
- Obs vários slides foram cedidos por
- Adolfo Almeida Duran (UFBA)
2Árvores
- Uma árvore é um grafo conexo não orientado e sem
circuitos simples
3- Uma floresta é um grafo cujas componentes conexas
são árvores
4- Teorema
- Um grafo não orientado é uma árvore se e somente
se existe um único caminho simples entre qualquer
par de vértices. - Prova
- Assuma que G é uma árvore. Logo G é um grafo
conexo e sem circuitos simples. Sejam x e y dois
nós de G. Logo, como G é conexo, existe um
caminho simples entre x e y. Adicionalmente, esse
caminho é único, pois se existisse um outro
caminho, o caminho formado através da combinação
do caminho de x até y com o segundo caminho
começando por y e chegando a x formaria um
circuito, o que contraria a hipótese de que G é
uma árvore.
5- Árvore EnraizadaUma árvore T (V,E) é
denominado enraizada quando algum vértice v é
escolhido como especial. Esse vértice v é a raiz
da árvore.
6- Árvore Enraizada
- Usualmente representamos graficamente a raiz no
topo. Podemos transformar uma árvore sem raiz
numa árvore enraizada simplesmente escolhendo um
vértice como raiz.
7ancestrais de je,c descendentes de
ji,k pai de je filhos de ji,k nível
de j2 altura da árvore 3 folhasb,a,i,k,f,h,
d
Raiz c
8O nível de um vértice é o tamanho do único
caminho da raiz até ele. nível de j2 A
altura da árvore é o maior nível entre os nós. É
o tamanho do maior caminho da raiz até uma das
folhas. altura da árvore 3
Raiz c
9- Árvore EnraizadaA raiz de uma árvore não possui
pai, e todo vértice v diferente de r, possui um
único pai. - Uma folha é um vértice que não possui filhos.
- Vértices que possuem filhos são chamados de
vértices internos. - Quando a raiz é o único nó do grafo ela é uma
folha. - O nível da raiz é zero, de seus filhos é 1. O
nível de um nó é igual ao nível de seu pai mais
um. - Para dois vértices irmãos v e w,
nível(v)nível(w). - A altura de uma árvore é o valor máximo de
nível(r) para todo vértice v de T.
10- Subárvore Seja T(V,E) uma árvore enraizada e v
? V. - Uma subárvore Tv de T é uma árvore enraizada cuja
raiz é v, definida pelo subgrafo induzido pelos
descendentes de v mais o próprio v. - A subárvore de raiz v é única para cada v ? V.
s
v
u
v
t
x
w
x
w
11- Árvore m-ária
- Uma árvore enraizada é chamada de m-ária se todo
nó interno não possui mais que m filhos. A árvore
é chamada árvore m-ária cheia se todo nó interno
possui exatamente m filhos. Uma árvore m-ária com
m2 é chamada de árvore binária.
Binária
3-ária
12- Árvore m-ária
- A árvore é chamada árvore m-ária cheia se todo nó
interno possui exatamente m filhos. Uma árvore
m-ária com m2 é chamada de árvore binária.
s
u
v
t
x
z
-
w
Binária cheia
13- Árvore m-ária
- Uma árvore enraizada m-ária de altura h é
balanceada se todas as folhas estão no nível h ou
h-1.
14h3 Nível(a) 1 Não está balanceada
15- Árvore Enraizada OrdenadaNa definição de árvore
enraizada, é irrelevante a ordem em que os filhos
de cada vértice v são considerados. - Caso a ordenação seja relevante a árvore é
denominada enraizada ordenada. - Assim, para cada vértice v pode-se identificar o
primeiro filho de v (o mais a esquerda), o
segundo filho (o segundo mais a esquerda), etc.
16 17- Árvore enraizada ordenada
- No caso de árvores binárias, se um nó interno
possui dois filhos, temos o filho da esquerda e o
filho da direita - A árvore cuja raiz é o filho da esquerda de um
vértice é chamada de subárvore da esquerda desse
vértice.
b
a
e
b
d
c
d
e
Subárvore da esquerda de a
18- Teorema
- Uma árvore com n nós possui n-1 arestas.
Prova Definimos uma bijeção entre as arestas e os
vértices diferentes da raiz, de forma que
associamos cada vértice terminal de uma aresta
com ela própria. Como existem n-1 nós além da
raiz, logo existem n-1 arestas na árvore.
19- Teorema
- Uma árvore m-ária cheia com i nós internos contem
n mi 1 nós.
Prova Cada vértice com exceção da raiz é filho de
um nó interno. Como cada um dos i nós internos
possui m filhos, existem mi nós na árvore além da
raiz. Consequentemente, a árvore contem n mi
1 nós.
20- Teorema
- Uma árvore m-ária cheia com
- n nós possui i(n-1)/m nós internos e
l ((m-1)n 1)/m folhas - i nós internos possui n mi 1 nós e f (m-1)i
1 folhas - f folhas possui n (mf 1)/ (m-1) nós e i
(f-1)/(m-1) nós internos
21- Teorema - Prova
- Uma árvore m-ária cheia com
- n nós possui i(n-1)/m nós internos e
l ((m-1)n 1)/m folhas - Vimos que n mi 1, logo i (n-1)/m.
- Temos também que n i f, onde f é o número de
folhas. - Logo, f n i
- f n (n-1)/m (mn (n-1))/m (mn n 1)/m
- ((m-1)n 1)/m
22- Exemplo
- Suponha que alguém iniciou uma corrente de
cartas. Cada pessoa que recebe a carta é
convidada a enviá-la para outras quatro pessoas.
Quantas pessoas receberam a carta, incluindo a
pessoa que iniciou a corrente, se nenhuma pessoa
recebeu mais que uma carta e se a corrente acabou
depois que 64 pessoas leram a carta e não mais a
enviaram? Quantas - pessoas enviaram a carta?
23- Solução
- A corrente pode ser representada usando uma
árvore 4-ária. Os nós internos correspondem às
pessoas que enviaram a carta, e as folhas às
pessoas que não a enviaram.
Temos que 64 pessoas não enviaram a carta. Assim
o número de folhas f é igual a 64.
Temos n i f e n mi 1.
Logo 64 i 4.i 1 gt 3.i 63 gt i 21
Resposta 21 pessoas enviaram a carta
24- Teorema
- Existem no máximo mh folhas em uma árvore m-ária
de altura h. - Prova por indução sobre a altura
Cada uma dessas subárvores possui altura no
máximo h-1. Portanto, pela H.I. existem no máximo
mh-1 folhas em cada uma delas. Como existem no
máximo m dessas subárvores, cada uma com no
máximo mh-1 folhas, então existem no máximo
m.mh-1 mh folhas.
? h-1
? h-1
? h-1
25- Aplicações Árvore binária de busca
- Busca de itens numa lista.
- Cada vértice é rotulado por uma chave de forma
que a chave de um vértice é maior do que as
chaves de todos os nós da subárvore da esquerda e
menor do que as chaves dos nós da subárvore da
direita.
55
30
80
90
35
20
45
32
26- Construindo uma árvore binária de busca
- Procedimento recursivo que recebe uma lista de
itens. - O primeiro item da lista é a raiz da árvore.
- Para adicionar um novo item compare-o com os nós
que já estão na árvore comece pela raiz e siga
para a esquerda se o item é menor que o item que
rotula o nó que está sendo comparado ou siga para
a direita, caso contrário. Quando o novo item é
menor que um item cujo nó não tem filho da
esquerda, adicione-o como filho da esquerda desse
nó. Analogamente, quando o item é maior que o
item cujo nó não tem filho da direita, adicione-o
como filho da direita desse nó,
27- Construindo uma árvore binária de busca
- Construa uma árvore binária de busca a partir da
seguinte lista - 55,30,80,90,35,32,20,45
28- Exemplo árvore binária de busca
- Use a ordem alfabética para construir uma árvore
binária de busca com as palavras da seguinte
frase - O título de uma das músicas de sucesso do cantor
Bruno Mars é The Lazy Song.
29- Caminhado em árvores enraizadas e ordenadas
- Procedimento universal para ordenar os seus nós
- Rotule a raiz com o inteiro 0. Em seguida
rotule seus k filhos da esquerda para direita com
1,2,3,....,k. - Para cada vértice v no nível n com rótulo A,
rotule seus k filhos da esquerda para a direita
com A.1, A.2, ...A.k.
30Exemplo
0
3
1
2
1.1
3.1
1.2
3.2
3.3
1.1.1
1.1.2
3.1.2
3.1.1
1.1.2.1
1.1.2.3
1.1.2.2
31- Procedimento universal para ordenar os nós
- Podemos ordenar os nós usando a ordem
lexicográfica de seus rótulos. -
- x1.x2....xn lt y1.y2....ym se
- existe um i, 0 ? i ? n, com x1 y1, x2y2,
...xi-1 yi-1 e xilt yi ou - n lt m e xiyi, para i 1,2,...,n.
32- Caminhamento em pré-ordem
- Seja T uma árvore enraizada e ordenada com raiz
r. Se T possui apenas r, então o caminhamento em
pré-ordem de T é r. Caso contrário, sejam T1,
T2,... Tn as subárvores de r da esquerda para a
direita. O caminhamento em pré-ordem começa
visitando r e continua fazendo um caminhamento em
pré-ordem em T1, em seguida em T2, e assim
sucessivamente até que Tn seja percorrida em
pré-ordem.
33Exemplo
a
d
b
c
e
g
f
i
h
j
k
m
l
p
o
n
34- Caminhamento em ordem
- Seja T uma árvore enraizada e ordenada com raiz
r. Se T possui apenas r, então o caminhamento em
ordem de T é r. Caso contrário, sejam T1, T2,...
Tn as subárvores de r da esquerda para a direita.
O caminhamento em ordem começa fazendo um
percorrendo em ordem em T1 em ordem, em seguida
visita r, e continua fazendo um caminhamento em
ordem em T2, em T3 , e finalmente em Tn .
35- Caminhamento em pós-ordem
- Seja T uma árvore enraizada e ordenada com raiz
r. Se T possui apenas r, então o caminhamento em
pós-ordem de T é r. Caso contrário, sejam T1,
T2,... Tn as subárvores de r da esquerda para a
direita. O caminhamento em pós-ordem começa
percorrendo T1 em pós-ordem, em seguida T2, T3 ,
... Tn , e finaliza visitando r.
36- Notação infixa, pré-fixa e pós-fixa
- Podemos representar expressões complicadas, tais
como proposições compostas, combinações de
conjuntos, e expressões aritméticas usando
árvores enraizadas ordenadas. - O nós internos representam operações
- As folhas representam as variáveis ou valores
- As operações são executadas na subárvore da
esquerda e depois na direita
37- Notação infixa exemplo
- Árvore que representa a expressão
- ((xy)2) ((x-4)/3)
- A árvore binária é construída de baixo para
cima. - Construímos a subárvore (xy), depois a
incorporamos como parte de uma subárvore maior
que representa (xy)2.
2
x
y
x
y
38- Notação infixa ((xy)2) ((x-4)/3)
- Do mesmo modo a subárvore (x-4) é construída e
incorporada à subárvore maior de (x-4)/3
2
x
y
x
y
/
-
-
3
x
4
x
4
39- Notação infixa ((xy)2) ((x-4)/3)
- Por último as subárvore de ((xy)2) e de
- ((x-4)/3) são combinadas para formar a expressão
toda
/
2
-
3
x
y
x
4
40- Caminhamento em ordem
- ((xy)2) ((x-4)/3)
/
2
-
3
x
y
x
4
41- Qual é a forma pré-fixa da expressão
- ((xy)2) ((x-4)/3) ? (notação polonesa)
- Fazemos um caminhamento em pré-ordem
- x y 2 / - x 4 3
/
2
-
3
x
y
x
4
42- Qual o valor da expressão
- - 2 3 5 / 2 3 4 ?
- 2 3 5 /
2 3
4
- 2 3 5 /
8
4
6
5 2
-
- 2 3 5
/ 8 4
- 6 5
2
- 2 3 5
2
2
1
2 3
5 2
-
2
1
6
5 2
-
3
43- Qual é a forma pós-fixa da expressão
- ((xy)2) ((x-4)/3) ? Fazemos um caminhamento
em pós-ordem - x y 2 x 4 3 /
/
2
-
3
x
y
x
4
44- Qual o valor da expressão em notação pós-fixa?
- 7 2 3 - 4 9 3 /
7
6
- 4 9 3 /
1 4 9 3 /
1 9 3 /
1 3
4
45- Encontre a árvore enraizada ordenada que
representa a seguinte proposição composta - ((p?q))?(p v q)
?
?
p
q
p
q
v
v
?
?
p
q
q
p
q
p
p
q
46- Forneça a notação pré-fixa e pós-fixa dessa
expressão ((p?q))?(p v q)
Pré-fixa ??pqvpq
?
Pós-fixa pq?pqv?
v
O caminhamento em ordem colocaria a negação
imediatamente após o seu operando. Isso acontece
sempre com os operadores unários.
?
q
p
p
q
A expressões em notação pré-fixa e pós-fixa não
são ambíguas. Por esse motivo, são utilizadas em
computação. Especialmente na construção de
compiladores
47- Desenhe a árvore enraizada ordenada da seguinte
expressão aritmética escrita usando a notação
pré-fixa. - - 5 3 2 1 4
- Em seguida, escreva a mesma expressão em notação
infixa.
4
((((5-3)2)1)4)
1
-
2
5
3
48- Mais aplicações de árvores 1 Árvores de decisão
- 2 Código de prefixo
- Pode ser usado em compactação de arquivos ou
criptografia - Considere o problema em que letras são
codificadas por sequências de bits - Uma maneira de garantir que nenhuma sequência de
bits corresponde a mais de uma sequência de
letras, é escolher códigos de forma que a cadeia
de bits para uma letra nunca ocorre como prefixo
de uma cadeia de bits de outra letra.
49- Construa a árvore binária com os códigos de
prefixo que representam os seguintes esquemas de
codificação 1) a11, e0, r101, s100 - 2) a1,e01,r001, s0001, n00001
1
0
e
1
0
a
1
0
s
r
50- 2) a1,e01,r001, s0001, n00001
0
1
0
a
1
1
e
0
r
1
s