Pesquisar este blog

terça-feira, 30 de agosto de 2011

QUESTIONÁRIO 03 - ED II

QUESTIONÁRIO 03 – ÁRVORES  BINÁRIA DE BUSCA



1)     Uma árvore binária é uma árvore onde cada nó tem no máximo 2 filhos.  Uma árvore binária de busca é uma árvore binária onde os elementos da subárvore esquerda são menores que a raiz e os elementos da subárvore direita são maiores que a raíz. Portanto explique como serão inseridos os elementos 10, 20, 15, 18,  30, 40 e 13 numa árvore binária de busca.

Resposta:
 
Primeiro ordenamos os valores em ordem crescente:
10 – 13 – 15 – 18 – 20 – 30 - 40

Procuramos o valor que se encontra no meio do intervalo e definimos como raiz; neste caso seria o numero 18:
10 – 13 – 15 – 18 – 20 – 30 – 40

Em seguida iremos inserir os demais valores obedecendo a regra de uma árvore binária de busca:
18 – 13 – 30 – 10 – 20 – 15 – 40

Representação Gráfica:


Obs.: Esta árvore é uma árvore de busca otimal.

2)     Sabendo que podemos inserir elementos numa árvore binária e que isso é uma operação básica das árvores, indique e explique quais são as operações básicas de uma árvore binária?

Consulta/Busca: Percorre a árvore de forma simples obedecendo aos critérios onde os elementos da subárvore esquerda são menores que a raiz e os elementos da subárvore direita são maiores que a raiz.

Resposta: 
Inserção: Insere os valores obedecendo aos critérios de busca, onde os elementos serão sempre inseridos no final da árvore, ou seja, o novo elemento será uma nova folha.

Remoção: Permite retirar um determinado elemento da árvore. Existem  três situações possíveis.
A primeira é:
Quando se deseja retirar um elemento que não tem filhos (Folha), basta retirar o elemento da árvore e atualizar o pai, apontando para null.

A segunda é:
Se o nó a ser retirado possui um único filho é necessário antes acertar o ponteiro do pai, deve ser refeito o apontamento do nó pai para o nó neto, ou seja, o pai do neto morreu.


A terceira é:
Quando o nó a ser retirado tem dois filhos devemos proceder da seguinte forma:
a) Encontramos o elemento mais à direita da sub-árvore à esquerda;
b) Trocamos a informação do nó a ser retirado com a informação do nó encontrado;
c) retiramos o nó encontrado (que agora contém a informação do nó que se deseja retirar).

Exemplo da operação para retirar o elemento com informação igual a 6.



3)    Sabendo que as árvores binárias podem ser cheias e completas e que uma árvore otimal é uma árvore completa que a operação de inserção segue a regra de inserção por ordem das chaves. Como as inserções sempre ocorrem à nível de folha,  deve-se primeiro inserir as chaves que ficarão mais perto da raíz. Se temos um conjunto de chaves {c1,..,ci} tal que c1<...<ci, deve se inserir o valor médio das chaves, inserir o conjunto das chaves inferior a esse valor, e inserir o conjunto das chaves superior a esse valor.  Portanto no conjunto de chaves K={1,2,3,4,5,6,7}.  Uma ordem de inserção otimal seria o 4, 2, 6, 1, 7, 5 e 3. Explique como ficaria uma inserção otimal do conjunto K={2,4,6,8,10,12,14}.

Resposta:

        Primeiro ordenamos os valores em ordem crescente:
02 – 04 – 06 – 08 – 10 – 12 – 14

Procuramos o valor que se encontra no meio do intervalo e definimos como raiz; neste caso seria o numero 08:
        02 – 04 – 06 – 08 – 10 – 12 – 14

        Em seguida iremos inserir os demais valores obedecendo à regra de uma árvore binária de busca:
        08 – 04 – 12 – 02 – 10 – 06 – 14

Representação Gráfica:



4)     Uma das operações mais úteis das ABB é a localização, outra característica desse tipo de árvore são os chamados percursos que mostram os elementos que a árvore contém e que são classificados em pré-fixado/pré-ordem, pós-fixado/pós-ordem e in-ordem/em ordem. Explique como funciona o procedimento para realizar cada percurso considerando as subárvores. Existe alguma diferença com relação às árvores binárias comuns?

Resposta:
In-ordem:
1. Percorre a subárvore esquerda em ordem simétrica;
2. Visita a raiz;
3. Percorre a subárvore direita em ordem simétrica.

Pré-ordem:
1. Visita a raiz;
2. Percorre a subárvore esquerda em pré-ordem;
3. Percorre a subárvore direita em pré-ordem.

Pós-ordem:
1. Percorre a subárvore esquerda em pós-ordem;
2. Percorre a subárvore direita em pós-ordem;
3. Visita a raiz.

      A diferença para percorrer uma arvore binária de uma arvore binária de busca é que, a arvore binária pode ser percorrida também pelo percurso de extensão e pelo percurso em nível além dos percurso de pré-ordem, in-ordem e pós-ordem. Já a arvore binária de busca só pode ser percorrido pelo pré-ordem,in-ordem e pós-ordem.

quarta-feira, 17 de agosto de 2011

QUESTIONÁRIO 02 – ED II


QUESTIONÁRIO  02 – ÁRVORES BINÁRIAS

EXERCÍCIO - PERCURSO ÁRVORE BINÁRIA.
1) Uma árvore é um conjunto de 1 ou mais nós, onde existe um nó especial chamado raiz e os demais nós formam conjuntos disjuntos onde cada conjunto é uma árvore (subárvore). O que caracterizaria então uma árvore Binária?

Resposta:
A árvore binária deve conter até no máximo dois filhos (nós), ou seja, os nós de uma árvore binária possuem graus zero, um ou dois. Outra característica é a recursividade
, que nada mais é, que a utilização da recursão nas operações binárias.


2) Uma árvore binária tem por tanto uma subárvore da esquerda e outra subárvore da direita (mesmo que exista uma só ou nenhuma), existe alguma maneira de calcular o número máximo de elementos de uma árvore conhecendo sua altura?

Resposta:
Sim, por que além da raiz cada nó poderá ter até dois novos nós.
Formula 2n – 1 = Numero máximo de elementos de uma árvore binária.
       (*n - Altura da árvore)


3) Nas árvores binárias podemos percorrer os elementos através de alguns percursos, quais são eles?

Resposta:
IN-Ordem, PRÉ-Ordem, PÓS-Ordem.


4) A definição do percurso EM-Ordem/IN-Ordem é:

Resposta:
A raiz fica entre as sub-arvores esquerda e direita.


5) A definição do percurso PRÉ-Ordem/PRÉ-Fixado é:

Resposta:
A raiz vem antes das sub-arvores esquerda e direita.


6) A definição do percurso PÓS-Ordem/PÓS-Fixado é:

Resposta:
A raiz vem depois das sub-arvores esquerda e direita.


7) Existe outra maneira de percorrer uma árvore (não obrigatoriamente binária), conhecida como percurso por extensão ou largura. Explique esse processo.

Resposta:

Um percurso em extensão é visitar cada nó começando do menor nível e move-se para os níveis mais altos, nível após nível, percorrendo cada nó da esquerda para a direita. Sua implementação é direta quando uma fila é utilizada. Depois que um nó é percorrido, seus filhos, se houver algum, são colocados no final da fila e o nó no início da fila é percorrido. Assim, os nós do nível n+1 serão visitados somente depois de ter percorrido todos os nós do nível.
Percurso em largura ou em nível (breadth-first): percorre a árvore em ordem crescente de seus níveis e, em cada nível, da esquerda para a direita. Uma fila é usada para realizar este percurso.


 - Faça o percurso em pré-ordem, in-ordem e pós-ordem da seguinte árvore:
Respostas:

PRÉ-ORDEM: (R E D)
A  B  D  G  C  E  F  H  I 

IN-ORDEM: (E R D)
D  G  B  A  H  E  I  C  F

PÓS-ORDEM: (E D R)
G  D  B  H  I  E  F  C  A








sexta-feira, 12 de agosto de 2011

QUESTIONÁRIO 01 – ED II

QUESTIONÁRIO 01 – ÁRVORES, CONCEITOS GERAIS

1)         A estrutura de uma árvore é especializada em representar hierarquia. Defina e caracterize de forma completa o conceito da Estrutura Árvore.

Resposta:


Constituem uma das estruturas mais importantes da área da computação, inclusive em aplicações. Dentro da estrutura de árvores existe um relacionamento lógico entre os componentes da estrutura, isto é; existe uma hierarquia ou subordinação onde um subconjunto dos componentes é subordinado a outro. A estrutura de árvore é utilizada em casos onde os dados ou objetos a serem representados possuem relações hierárquicas entre si.

2)         O conceito da estrutura árvore é muito importante para as disciplinas de Sistema Operacional e Banco de Dados. Dê exemplos da aplicação prática da estrutura de dados árvore, explicando cada exemplo (pelo menos 3).

Resposta:

Hierarquia de classes (classes/subclasses) – hierarquia ou subordinação onde um subconjunto dos componentes é subordinado a outro.
Abstração de Composição – um objeto é composto por outros objetos
Organogramas de empresas – hierarquia entre os empregados
Ordenação de Valores – Árvore ordenada. Ex. esquerda / raiz / direita
Árvores de Derivação – Análise Sintática

3)         Para compreender o conceito de árvore é necessário entender alguns conceitos básicos. Explique o conceito de raiz, nó filho, nó pai, nó terminal, nó ascendente, nó descendente, grau, altura, nível, profundidade, caminho e floresta.

Resposta:
Uma árvore é um conjunto finito A de zero ou mais nós, tais que:

Caso o número de nós seja maior que zero, existe um nó denominado raiz da árvore, os demais nós formam m >= 0 conjuntos disjuntos S1, S2, ..., Sm, onde cada um destes conjuntos é uma árvore (Si são denominadas sub-árvores)
Número de nós zero: árvore vazia
Cada nó da árvore é a raiz de uma sub-árvore.
Grau de um Nó é o número de sub-árvores de um nó. Nó de grau zero é denominado nó folha ou nó terminal.
Nível de um Nó raiz possui nível zero. Demais nós: é o comprimento do caminho que vai da raiz até o nó.
Altura de uma Árvore é o maior nível de uma árvore (mais alto).
Floresta conjunto de zero ou mais árvores disjuntas. Se o nó raiz de uma árvore for eliminado, as sub-árvores, que restarem serão chamadas de floresta.
Nó Pai – é o pai das raízes de suas sub-árvores. Nó Filho – possui um nó pai associado. Nós Irmãos – são os vários filhos de um nó pai.

4)         Existem diversas maneiras de representar a estrutura de uma árvore. Demonstre e conceitue a representação Hierárquica, Diagrama de Inclusão, Expressão parametrizada e Expressão não parametrizada.

Resposta:
Representação hierárquica:


        
Representação por conjuntos (diagrama de inclusão)
Representação por expressão parentetizada (parênteses aninhados)
Cada conjunto de parênteses correspondentes contém um nodo e seus filhos. Se um nodo não tem filhos, ele é seguido por um par de parênteses sem conteúdo.
( A ( B ( D ( ) E ( ) ) ) ( C ( F ( ) ) ) )
Representação por expressão não parentetizada
Cada nó é seguido por um número que indica a quantidade de filhos desse nodo, e em seguida por esses filhos, representados do mesmo modo.
A 2 B 2 D 0 E 0 C 1 F 0