MC3305 - Algoritmos e Estruturas de Dados II Prova 01 – 07/07

Propaganda
MC3305 - Algoritmos e Estruturas de Dados II
Prova 01 – 07/07/2015 – Diurno
RA:
NOME:
Instruções para a prova (leia antes de começar):
• A prova tem a duração de 1h45min.
• É proibido o uso de qualquer celular, calculadora ou recurso de comunicação.
• As respostas podem ser feitas a lápis ou caneta (desde que legíveis).
• Responda as perguntas em ordem.
1. Dada uma matriz Anxm de inteiros considere os seguintes algoritmos baeados em
comparações para encontrar o maior elemento:
(a) Acha-se o máximo de cada linha, armazenando-se os resultados em um vetor, e depois
acha-se o máximo do vetor.
(b) Acha-se o máximo de cada coluna, armazenando-se os resultados em um vetor, e depois
acha-se o máximo do vetor.
supondo-se que n<m, qual deles realiza menos comparações? Justifique (4 pontos).
2. Uma empresa deseja comprar um software para resolver sistemas lineares. Existem no
mercado quatro softwares para tal tarefa com custos operacionais diferentes. Seja n o tamanho
da entrada para o sistema.
- ExtremeLS: O(5(n^3)/2 + 2n/3)
- Lumaster: O((n^3)/3 - (n^2)/4 + n/3)
- superQR: O(2(n^3)/3 + n/2 - n/4)
- DonkeyShot: O((n^4)/9 + n)
Do ponto de vista de análise assintótica, qual software deveria ser escolhido? Justifique sua
resposta. (4 pontos)
3. O Professor Progresso encontrou um algoritmo de ordenação baseado em comparações que
gasta tempo O(n log(sqrt(n)). Considerando-se o limitante inferior para o tempo de ordenação,
isso é possível? Justifique detalhadamente. (4 pontos)
4. Todo algoritmo de ordenação parcial visto em aula faz uso de estruturas auxiliares (por
exemplo, vetores adicionais)? Justifique detalhadamente. (4 pontos)
5. Suponha que os nós de uma árvore tem a seguinte estrutura (5 pontos) :
struct cel { int chave; int conteudo; struct cel *esq; struct cel *dir; }; typedef struct cel no; Escrever, usando a linguagem C/C++, uma função que permita percorrer em nível uma árvore
binária. Assinatura: void percorrerArvore(no *r)
6. Analise uma árvore T que armazena 100.000 elementos. Quais são o pior e o melhor casos
em relação à altura de T das seguintes árvores (5 pontos):
- T é uma árvore binária completa;
- T é uma árvore AVL.
Justifique detalhadamente.
7. Escrever um algoritmo de exclusão (eliminação/remoção) de nós em árvores AVL. Apresente
diagramas que exemplifiquem as operações. Obs. Pode descrever seu algoritmo em
pseudocódigo. (4 pontos)
Boa Prova!
MC3305 - Algoritmos e Estruturas de Dados II
Prova 01 – 07/07/2015 – Noturno
RA:
NOME:
Instruções para a prova (leia antes de começar):
• A prova tem a duração de 1h45min.
• É proibido o uso de qualquer celular, calculadora ou recurso de comunicação.
• As respostas podem ser feitas a lápis ou caneta (desde que legíveis).
• Responda as perguntas em ordem.
1. Dada uma matriz Anxm de inteiros considere os seguintes algoritmos baeados em
comparações para encontrar o maior elemento:
(a) Acha-se o máximo de cada linha, armazenando-se os resultados em um vetor, e depois
acha-se o máximo do vetor.
(b) Acha-se o máximo de cada coluna, armazenando-se os resultados em um vetor, e depois
acha-se o máximo do vetor.
supondo-se que n<m, qual deles realiza menos comparações? Justifique (4 pontos).
2. Uma empresa deseja comprar um software para resolver sistemas lineares. Existem no
mercado quatro softwares para tal tarefa com custos operacionais diferentes. Seja n o tamanho
da entrada para o sistema.
- ExtremeLS: O(5(n^3)/2 + 2n/3)
- Lumaster: O((n^3)/3 - (n^2)/4 + n/3)
- superQR: O(2(n^3)/3 + n/2 - n/4)
- DonkeyShot: O((n^4)/9 + n)
Do ponto de vista de análise assintótica, qual software deveria ser escolhido? Justifique sua
resposta. (4 pontos)
3. Todo algoritmo de ordenação em tempo linear visto em aula faz uso de estruturas auxiliares,
além do vetor de entrada? Justifique detalhadamente (ao todo foram tratados 3 algoritmos.
(4 pontos)
4. Descreva um algoritmo em que, dado um vetor v[0,..,n-1] de n elementos, permita ordenar
os elementos no intervalo v[a,..,b]. Para 0 <= a <= b <= n-1. Qual a complexidade
computacional em termos de número de comparações entre elementos? Obs. Não é permitido
ordenar todos os elementos do vetor. Pode descrever seu algoritmo em pseudocódigo.
(4 pontos)
5. Suponha que os nós de uma árvore tem a seguinte estrutura (5 pontos):
struct cel { int chave; int conteudo; struct cel *esq; struct cel *dir; }; typedef struct cel no; Escrever, usando a linguagem C/C++, uma função que decida se uma dada árvore binária é ou
não é de busca. Assinatura: int EhArvoreBinariaDeBusca(no *r)
6. Quais são as diferenças/semelhanças entre Árvores binárias, ABBs, AVLs, e estrutura de
heap? Todos os algoritmos baseadas nessas estruturas tem complexidade proporcional a
O(log(n)), onde n é o número de elementos da estrutura? Obs. Apresente uma tabela
comparativa entre as operações mais comuns consideradas nessas estruturas. (5 pontos)
7. Escrever um algoritmo de exclusão (eliminação/remoção) de nós em árvores AVL. Apresente
diagramas que exemplifiquem as operações. Obs. Pode descrever seu algoritmo em
pseudocódigo. (4 pontos)
Boa Prova!
Download