Você está na página 1de 20

PLANO DE AULA

Faculdade de Ciências
Departamento de Matemática Ano lectivo de 2020 Semestre: II
Curso : Licenciatura em Informática

Unidade Curricular:Matemática Discreta II No da aula 5


Unidade didáctica : Teoria de Grafos e Aplicações Duração: 100 minutos
Objectivos Conteúdo
No final desta aula o estudante deve:  Introdução á árvores
 Conhecer algumas aplicações de árvores  Aplicações de árvores
 Conhecer o conceitos de árvores  Percuso de arvores
 Dominar os algorítmos de percurso de
árvores
 Conhecer as notações infixa posfixa e
prefixa
Procedimentos e métodos Recursos/meios Avaliação

Momentos Actividades Tempo


da aula Docente Estudante
Definição de árvore 5 minutos
Exemplos de árvores 10 minutos
Definição de árvores m-árias e 5 minutos
binárias completas
Exemplos de árvores 15 minutos
Algorítmos de percurso de arvores 15 minutos
Percurso preorder inorder 15 minutos
postorder
Notação prefixa, infixa e posfixa 15 minutos
Exemplos de percursos de árvores 20 minutos
e de notação prefixa, infixa e
posfixa

Assinatura do Docente________________ Data:


Tema: Árvore de pesquisa binária. Árvore de decisão

Introdução
Vamos discutir três problemas que podem ser estudadas usando árvores. O primeiro problema é:
Como itens em uma lista devem ser armazenados de modo que um item seja, facilmente, localizado?
O segundo problema é: Qual série de decisões devem ser feitos para encontrar um objecto com uma
certa propriedade de uma colecção de objectos de um determinado tipo? O terceiro problema é:
Como deve ser, um conjunto de caracteres, eficientemente codificados por cadeias de bits?

Definição de árvore
Uma árvore é um grafo simples conexo e aciclico.

Exemplo: Qual dos grafos abaixo são árvores?

Figure 1: Os primeiros dois são árvores e os restantes não são

Solução: Os grafos e são árvores pois são conexos simples e aciclicos. No entatnto, o grafo
G3, apesar de ser simples e conexo, não é aciclico, portanto não é árvore. O grafo G4 não é árvore
porque não é conexo.

Definição de árvore com raiz


Uma árvore com raiz é uma árvore com um vértice especial denominado raiz.
Figure 2: Árvore com raiz

Definição de árvore binária


Uma árvore binária é uma árvore com raiz na qual cada vértice tem nenhum filho ou um filho a
esquerda ou um filho a direita.
Exemplo:

Figure 3: Arvore binária

Definição de árvore m-ária completa


Uma árvore m-ária completa é uma árvore com raiz na qual cada vértice tem nenhum filho ou m filhos

Exemplo: As primeiras três árvores são completas e a última é incompleta.

Figure 4: Árvores m-árias

Teorema
Uma árvore com vértices tem arestas.
Demonstração: Pela indução matemática, suponhamos que a árvore consiste de um vertice é obvio
que terá nenhuma áresta, de acordo com a definição da árvore.
A hipótese indutiva afirma que todas as árvores com k vértices tem – arestas, onde é um número
inteiro positivo. Suponhamos que uma árvore tem vértices e que v é uma folha de (que deve
existir porque a árvore é finito), e seja w o pai do v. Removendo do T do vértice v e a aresta conectando
para produz uma árvore com vértices, porque o gráfo resultante ainda é conexo e não tem ciclos
simples. Pela hipótese indutiva, tem de arestas. Segue-se que tem arestas porque tem mais do
que uma aresta , A extremidade de ligação e . Isto completa o passo indutivo.

Árvore de pesquisa binária


A busca de itens em uma lista é uma das tarefas mais importantes que se coloca em ciência da
computação. Nosso principal objetivo é implementar um algoritmo de busca que localiza itens de
forma eficiente quando os itens são totalmente ordenado. Isto pode ser conseguido através da
utilização de uma árvore de pesquisa binária, que é uma árvore binária em que cada filho de um
vértice é designado como um filho direito ou filho esquerdo, não há vértice que tem mais do que um
filho à direita ou um filho à esquerda, e cada vértice está marcado com uma chave, que é um dos
itens. Além disso, os vértices são atribuídos teclas de modo que a chave de um vértice é de maior
dimensão do que as chaves de todos os vértices no seu sub esquerda e menor do que as chaves de
todos os vértices no seu sub direita. Este procedimento recursivo é utilizado para formar a árvore de
pesquisa binária para obter uma lista de itens. Comece com uma árvore contendo apenas um vértice,
isto é, a raiz. O primeiro item da lista é atribuído como a chave da raiz. Para adicionar um novo
item, primeiro compará-lo com as chaves de vértices já na árvore, começando na raiz e se movendo
para a esquerda se o item é inferior a chave do respectivo vértice se este vértice tem um filho
esquerdo, ou em movimento para a direita se o item é maior do que a chave do respectivo vértice se
este vértice tem um filho à direita. Quando o item é inferior ao respectivo vértice e este vértice tem
nenhum filho à esquerda, em seguida, um novo vértice com este item como sua chave é inserida
como um novo filho esquerdo. Da mesma forma, quando o item é maior que o respectivo vértice e
este vértice tem nenhumfilho à direita, em seguida, um novo vértice com este item como sua chave é
inserida como uma novo filho à direita. Ilustraremos este procedimento com o Exemplo.

Exemplo 1: Formar uma árvore de busca binária para as palavras mathematics, Physics, geography,
zoology, meteorology, geology, psicology e Chemistry (usando ordem alfabética).
Solução: A Figura 1 mostra os passos utilizados para construir esta árvore de busca binária. A
palavra mathematic é a chave da raiz. Porque a physics vem depois de mathematics (em ordem
alfabética), adicione um filho à direita da raiz com a physics. Porque a geography vem antes de
mathematics, adicione uma filho à esquerda da raiz com a chave geography. Em seguida, adicione
um filho à direita do vértice com a physic, e atribuí-lo a chave zoology, porque zoology vem depois
de mathematics e physic. Da mesma forma, adicionar um filho esquerdo do vértice com a physic e
atribuir este novo vértice da chave meteorology . Adicionar um filho à direita do vértice com a chave
geography e atribuir este novo vértice a chave geology. Adicionar um filho à esquerda do vértice
com chave zoology e atribuí-lo a chave psicology. Adicionar um filho à esquerda do vértice com a
chave geography e atribuí-lo a chemistry.
Figura 1: Construindo uma árvore de pesquisa binária

Exemplo 2: Use Algoritmo 1 para inserir a palavra oceanography na árvore de busca binária no
Exemplo 1.
Solução: Algoritmo 1 começa com V, o vértice sob exame, igual à raiz de T, de modo etiqueta (v) =
matemática. Porque rótulo v? = Null e (v) = matemática <oceanografia, nós próxima examinar o
filho direita da raiz. Existe esse filho à direita, por isso, definir v, o vértice sob exame, a ser este filho
à direita. Nesta etapa temos v? = Null e etiqueta (v) = physics> oceanography, portanto, examinar o
filho à esquerda do v. Esse filho esquerdo existe, por isso, definir v, o vértice em análise, a este filho
da esquerda. Nesta etapa, também temos v? = Null e etiqueta (v) = metereology <oceanography,
então tentamos examinar o filho à direita de v. No entanto, este filho da direita não existe, por isso,
acrescentar um novo vértice como o direito filho de v (que neste momento é o vértice com a chave
metereology) e montamos v: = null. Agora, saimos do loop while porque v = null. Uma vez que a
raiz de T não é nula e v = nulo, usamos o else if no final do algoritmo para marcar o novo vértice
com o chave Oceanography.

Agora vamos determinar a complexidade computacional deste procedimento. Suponha que temos
uma árvore binária de busca T para uma lista de n items. Podemos formar uma árvore binária U
completa de T, adicionando vértices não marcados sempre que necessário, de modo que cada vértice
com uma chave tem dois filhos. Isto é ilustrada na Figura 2. Uma vez que tenhamos feito isso,
podemos facilmente localizar ou adicionar um novo item como uma chave sem adição de um
vértice.
A maioria das comparações necessárias para adicionar um novo item é o comprimento do caminho
mais longo a partir de L a raiz de uma folha. Os vértices internos de L são os vértices de T. Daqui
resulta que L tem n interna vértices. Podemos concluir que U tem folhas. Vemos que a altura
de U é maior do que ou igual a . Por conseguinte, é necessário realizar pelo
menos comparações para adicionar algum item. Observe que, se L é equilibrada, a sua
altura é de Assim, se uma árvore binária de pesquisa é equilibrado, localizar ou
adicionar um item não requer mais de comparações. Uma árvore de busca binária
pode tornar-se desequilibrada do jeito como os itens são adicionados a ele.

Figura 2: Adicionando Vertices não marcados para balanceamento da árvore

Árvore de decisão
Árvores com raiz podem ser usadas para modelar problemas nos quais uma série de decisões leva a
uma solução. Por exemplo, uma árvore de pesquisa binária pode ser usado para localizar artigos com
base numa série de comparações, onde cada comparação nos diz se temos localizado o item, ou se
devemos ir à direita ou à esquerda em uma sub-árvore. Uma árvore com raiz no qual cada vértice
interno corresponde a uma decisão, com uma sub-árvore nesses vértices para cada resultado possível
da decisão, é chamado de uma árvore de decisão. As possíveis soluções para o problema
correspondem aos caminhos para as folhas desta árvore com raiz. Exemplo 3 ilustra uma aplicação
da árvore de decisão.
Exemplo: Suponha que há sete moedas, todas com o mesmo peso, e uma moeda falsa que pesa
menos do que as outras. Quantas pesagens são necessários utilizando uma balança para determinar
qual das oito moedas é a falsa? Dê um algoritmo para encontrar uma moeda falsificada.
Solução: Existem três possibilidades de cada um pesando em uma escala de equilíbrio. As duas
panelas de lata têm igual peso, a primeira panela pode ser mais pesado, ou o segunda panela pode ser
mais pesado. Consequentemente, a árvore de decisão para a sequência de pesagens é uma árvore 3-
ário. Existem, pelo menos, oito folhas na árvore de decisão porque existem oito resultados possíveis
(porque cada uma das oito moedas pode ser a falsificação de moeda mais leve), e cada resultado
possível deve ser representado por pelo menos em folha. O maior número de pesagens necessários
para determinar a moeda falsa é a altura de a árvore de decisão. A altura da árvore de decisão é, pelo
menos, . Assim, são necessários, pelo menos, duas pesagens. É possível determinar a
moeda falsa usando duas pesagens. A árvore de decisão que ilustra como isto é feito é mostrado na
Figura 3.

Figura 3: Árvore de decisão para localização da moeda leve

Teorema 1: Um algoritmo de ordenação com base em comparações binárias requer pelo menos
comparações.

Corolário 1: O número de comparações utilizados por um algoritmo de ordenação para ordenar n


elementos com base em comparações binário é .
Teorema 2: O número médio de comparações utilizados por um algoritmo de ordenação para
ordenar os elementos com base em n comparações binárias é .

Exercícios
1. Criar uma árvore de busca binária para o palavras banana, pêssego, maçã, pêra, coco, manga,
papaia e usando ordem alfabética.
2. Criar uma árvore binária de pesquisa para as palavras enologia, frenologia, campanology,
ornitologia, ictiologia, limnologia, a alquimia, astrologia e usando ordem alfabética.
3. Quantas comparações são necessários para localizar ou para adicionar cada uma dessas
palavras na árvore de busca de Exercício 1, começando do zero de cada vez?
a) Pêra b) Banana c) laranja
4. Quantas comparações são necessários para localizar ou para adicionar cada uma das palavras
na árvore de busca de Exercício 2, começando do zero de cada vez?
a) Quiromancia b) etimologia c) paleontologia d) glaciologia
5. Usando ordem alfabética, construir uma árvore de busca binária para as palavras na frase "A
ligeira raposa marrom ataca sobre o cão preguiçoso. "
6. Quantas pesagens de uma escala de balança são necessárias para encontrar uma moeda falsa
mais leve entre os quatro moedas? Descreva um algoritmo para encontrar a moeda mais leve
usando este número de pesagens.
7. Quantas pesagens de uma escala de balança são necessárias para encontrar uma moeda falsa
entre as quatro moedas, se a moeda falsa pode ser maior ou menor do que os outros?
Descreva um algoritmo para encontrar a moeda falsa usando este número de pesagens.
8. Quantas pesagens de uma escala do balança são necessárias para encontrar uma moeda falsa
entre as oito moedas, se a moeda falsa é mais pesado ou mais leve do que os outros?
Descreva um algoritmo para encontrar a moeda falsa usando este número de pesagens.
9. Quantas pesagens de uma escala de balança são necessárias para encontrar uma moeda falsa
entre as 12 moedas se a moeda falsa é mais leve do que os outros? Descreva um algoritmo
para encontrar a moeda mais leve usando este número de pesagens.
10. Encontre o menor número de comparações necessárias para classificar quatro elementos e
elaborar um algoritmo que classifica esses elementos usando este número de comparações.
1. Construir o sistema universal de endereços para uma dada árvore com raiz e ordenada.
Em seguida, usar isso para encomendar seus vértices usando a ordem lexicográfica de
seus rótulos.

2. Suponha-se que o endereço do vértice na árvore enraizada e ordenada é 3.4.5.2.4.

a) Em que nível esta ?


b) Qual é o endereço do pai do ?
c) Qual é o menor número de irmãos pode ter?
d) Qual é o menor número possível de vértices em se tem este endereço?
e) Encontre os outros endereços que devem ocorrer.
3. Suponha que o vértice com o maior endereço em uma árvore enraizada ordenada tem
endereço 2.3.4.3.1. É possível determinar o número de vértices em ?
4. Suponha que o vértice com o maior endereço em uma árvore enraizada e ordenada tem
endereço 2.3.4.3.1. É possível determinar o número de vértices em ?
a) 1.1.1, 1.1.2, 1.2, 2.1.1.1, 2.1.2, 2.1.3, 2.2, 3.1.1, 3.1.2.1, 3.1.2.2, 3.2
b) 1.1, 1.2.1, 1.2.2, 1.2.3, 2.1, 2.2.1, 2.3.1, 2.3.2, 2.4.2.1, 2.4.2.2, 3.1, 3.2.1, 3.2.2
c) 1.1, 1.2.1, 1.2.2, 1.2.2.1, 1.3, 1.4, 2, 3.1, 3.2, 4.1.1.1

5. Determinar a ordem em que um percurso preorder visita os vértices da árvore com raiz e
ordenada.

6. Em que ordem são os vértices da árvore com raiz do exercício anterior são visitados
através de um percurso em inorder?
7. Em que ordem são os vértices da árvore com raiz do exercício anterior são visitados
através de um percurso em postorder?

8.
a) Representa a expressão usando uma árvore
binária. Escreva esta expressão em
b) notação prefix
c) notação postfix .
d) notação infix .

9.
a) Representa as expressões e usando um
árvores binárias.Escreva estas expressões em
b) notação prefix
c) notação postfix .
d) notação infix .

10. Desenhar a árvore enraizada ordenada correspondente a cada uma destas expressões
aritméticas escritas em notação prefix. Em seguida, escrever cada expressão usando a
notação de infix.
a) + * + - 5 4 3 2 1
b) ↑ + 2 3 - 1 5
c) * / 9 * 3 + 2 4 - 6 7

11. Qual é o valor de cada uma destas expressões escritas na notação prefix?
a) - * 2/4 3 8
b) ↑ - * 3 * 4 3 5 2
c) + - ↑ ↑ 2 3 2 3/6 - 4 2
d) * + 3 + 3 + 3 ↑ 3 3 3

12. Qual é o valor de cada uma destas expressões escritas na notação posfix?
a) 5 2 1 4 1--3 * ++
b) 9 3/5 + 7 2 - *
c) 3 2 * 2 ↑ 5 3 - 8 4 / * -

13. Construa a árvore enraizada ordenado cujo percurso preorder é a, b, f, c, g, h, i, d, e, j, k,


l, onde a tem quatro filhos, c tem três filhos, j tem dois filhos, b e e têm um cada um
filho, e todos os outros vértices são folhas.

14. Mostram que o percurso preorder dos duas árvores enraizadas apresentados abaixo
produziem a mesma lista de vértices.

15. Mostre que que o percurso postorder destas duas árvores enraizadas produzem a mesma
lista de vértices.

Você também pode gostar