Sie sind auf Seite 1von 6

Lista de exerccios

Projeto e anlise de algoritmos

(1) Notao assinttica


1. Hoje, dos algoritmo de ordenao mais utilizados, o que possui menor complexidade o insero, considerando o seu
melhor caso, O(n). Podemos dizer que nenhum outro algoritmo poder atingir uma complexidade melhor do que
esta? Justifique.
2. Dois algoritmos A e B possuem complexidade n5 e 2n , respectivamente. Voc utilizaria o algoritmo B ao invs do A.
Em qual caso? Exemplifique.
3. Considerando, que as chaves inseridas em um Hashing no provocaram coliso. Independente do algoritmo, podemos
dizer que a pesquisa por uma chave na tabela ser de ordem de complexidade constante, ou seja, O(1)? Existem
argumentos suficientes para dizer que o mesmo timo? Justifique.
4. Para duas funes g(n) e f (n) temos que f (n)=(n) se somente se f (n) = (g(n)) e f (n) = O(g(n)). Explique o
teorema acima.
5. Apresente a funo de complexidade e a notao assinttica de O(n), (n) e (n) (necessrio justificar) juntamente
com uma implementao completa em C para as operaes de inserir e remover elementos das seguintes estruturas de
dados
a) Lista encadeada
b) Lista duplamente encadeada
c) Lista simples (em vetor)
d) Pilha encadeada
e) Pilha simples (em vetor)
f) Fila encadeada
g) Fila duplamente encadeada
h) Fila simples (em vetor)
6. Um programador implementou um algoritmo de custo O(n2 ) e (log n) de modo que, ao executar em duas mquinas
distintas com a mesma entrada a primeira mquina executou mais rpida do que a segunda. Em seguida, ele conclui
que na primeira mquina o custo assinttico da execuo foi log n e na segunda foi n2 . Esta afirmao correta?
Justifique, e se necessrio, explique como deve ser corrigido seu experimento e/ou afirmao.
7. Considere um algoritmo que tenha como estrutura inicial um vetor v de tal modo que v0 < v1 < < vn1 < vn ,
qual o custo assinttico para a operao de insero neste vetor, de modo a obedecer a regra inicial.
8. Para duas funes f (n) e g(n) de tal modo que O(g(n)) < (f (n)) e O(g(n)) = n2 quais as concluses podem ser
tiradas sobre o custo assinttico de g(n)?
9. Implemente e descreva um algoritmo para recuperar o segundo maior elemento de um vetor. Qual a funo assinttica
deste algoritmo? Qual o custo de um pior caso, caso mdio e melhor caso?
(2) Clculo do custo assinttico
10. Calcule o f (n), O(n), (n) e (n) para os seguintes algoritmos

a) a =0;
f o r ( int i =0; i <n ; i ++)
f o r ( int j =0; j <n ; j ++)
a+=i j ;

1
b) a =0;
f o r ( int i =0; i <n ; i ++)
i f ( i %2==0)
a+=i ;

c) a =0;
f o r ( int i =0; i <n ; i ++)
f o r ( int j =0; i <j ; j ++)
a+=i j ;

d) a =0;b=0;
f o r ( int i =0; i <n ; i ++)
i f ( i < a ) a+= i 2 ;
e l s e b+= i +1;

e) a =0;b=0;
f o r ( int i =0; i <n ; i ++) {
k=i +1;
while ( k<n )
a=(k++)+(++b ) ;
}

f) a =0;
f o r ( int i =0; i <n ; i ++)
f o r ( int j =0; j <i ; j ++)
i f ( i %2==0) a++;

(3) Recorrncias e recurso


11. Explique quais os passos do mtodo de diviso e conquista
12. Implemente em C uma busca binria explique os passos de diviso e conquista do mesmo juntamente com o seu custo
assinttico.
13. Aplique o teorema mestre e indique qual o caso deve-se aplicar em cada uma delas
a) T (n) = 2T (n/3) + n log n para  = 1
b) T (n) = 9T (n/2) + n para  = 1
c) T (n) = 2T (n/2) + n para  = 1
d) T (n) = 5T (n/3) + n2 para  = 2
e) T (n) = 3T (n/2) + n/2 para  = 3
14. Qual a principal propriedade da rvore heap? Apresente a execuo do heap sort para o vetor {3, 58, 2, 99, 8}.
15. Quais as diferenas entre o merge sort e o quick sort? Como um caso degenerado do quick sort resolvido no merge
sort?
16. Como podemos resolver o problema do caso degenerado do quick sort de forma a aproxim-lo do custo de (n log n)?
17. Quando possvel implementar o count sort? Qual a sua principal vantagem?
18. O Bucket sort um algoritmo de ordenao de custo linear, apesar de usar um insertion sort na sua implementao,
qual caracterstica torna a execuo deste insertion sort prximo ao seu melhor caso? (O melhor caso do insertion
sort O(n)).

(4) Projeto de algoritmos de ordenao

Voc foi contratado para computar o resultado de um concurso pblico para heris e o problema encontrado foi a a
construo do resultado final destes concurso. Para isto, voc dever um implementar um algoritmo em C++ para resolver
este problema

2
19. Voc dever implementar uma funo chamada cmp_candidatos onde receber por parmetro 2 candidatos (c1 e c2)
de modo que retorne -1 se a classificao de c1 for melhor que c2, 0 se for igual e +1 se a classificao de c2 for melhor.
O critrio de classificao ser dado pelas seguintes regras em ordem
a) A Nota final do candidato dada pela frmula nota_portugues2+nota_matematica2+nota_heroismo4+nota_redacao
4 .
b) A maior nota na redao
c) A maior soma das notas entre matemtica e portugus
20. Implemente para este problema os algoritmos de ordenao vistos em sala de aula (insertion, heap, merge, quick e
shell) de modo que o primeiro colocado do concurso esteja na posio 0 do vetor enquanto o ltimo esteja na ltima
posio.
21. Apresente como resutlado final a classificao do concurso com a posio do candidato, o seu nome e se o mesmo est
classificado ou no (o candidato precisa ter uma nota final maior ou igual 40).
22. Elabore um relatrio apresentando o tempo de execuo de cada um dos algoritmos. Em cada um dos algoritmos, o
custo computacional se aproximou do melhor, pior ou do caso mdio? Explique.
23. Para o projeto utilize o arquivo leitura_notas.h (ele possui a estrutura e funo para ler as notas do arquivo
notas.txt) pois o mesmo possui a funo ler_notas que far o processo de leitura de notas.

(5) rvore de busca binria e rvores rubro-negro


24. Crie um aplicativo para controle de cpfs onde os mesmos so armazenados na memria principal em estrutura de
rvore (Faa o mesmo trabalho para uma rvore BST e uma rubro-negro). Para isto, leve em consideraes os itens
abaixo
a) A comparao entre CPFs ser feita de forma lexogrfica1 , sendo assim, dever ser implementado a funo para
comparao entre ambos (chamada cmpcpf), esta funo ter 2 parmetros (cpf1 e cpf2) tendo como resposta:
A. -1 se cpf1 < cpf2
B. 0 se cpf1 = cpf2
C. +1 se cpf1 > cpf2
b) Implemente a funo cmpcpf de forma recursiva e de forma iterativa2 .
c) O sistema dever conter as seguintes opes como menu:
A. Consultar CPF
B. Inserir CPF
C. Excluir CPF
D. Listar CPFs (ordenado)
E. Imprimir rvore
d) A opo Consultar CPF dever imprimir na tela o CPF buscado (caso no encontre mostrar a mensagem CPF
no encontrado) alm da altura do n em que o mesmo foi encontrado (caso o CPF no exista, deve-se mostrar
tambm a altura da rvore em que foi buscado).
e) A opo Inserir CPF dever inserir um novo CPF na rvore
f) A opo excluir CPF dever excluir um CPF da rvore
g) A opo Listar CPFs Ordenado dever percorrer a rvore in-ordem alm de mostrar a altura da rvore em que o
n est.
h) A funo imprimir rvore dever imprimir os ns da rvore mostrando sua altura de forma tabulada (faa esta
impresso percorrendo a rvore em pr-ordem).
i) Crie um histograma em relao altura dos ns das rvores e discuta quanto ao uso de BSTs e rvores rubro-negras
para as seguintes situaes
A. Arquivo cpf.txt desornado (original)
B. Arquivo cpf.txt ordenado
C. Arquivo cpf.txt inversamente ordenado
1 Dado duas strings A e B definimos sua ordem lexogrfica buscando o primeiro par de caracteres distintos e verificando qual vem primeiro na tabela

ASCII.
2 DICA: O caractr terminador de strings \0 pode ser til!

3
25. O protocolo Manchester um sistema de classificao de risco de pacientes que so classificados segundo uma triagem
feita previamente. Sua aplicao est em hospitais onde o pronto-atendimento necessita dar prioridade determinados
pacientes e outros no. Basicamente, o paciente passa por uma anamnese no qual o classifica numa detemrinada
cor e estabelece o seu tempo mximo de espera na fila. Voc ento dever criar um aplicativo que utilize numa verso
uma BST e em outra uma rvore rubro-negra que controle esta fila.
a) O paciente receber ser classificado em umad as seguintes cores:
A. Vermelho: Paciente necessita de atendimento imediato (tempo mximo de espera de 0 min.)
B. Laranja: Paciente necessita atendimento o mais rpido possvel (tempo mximo de espera de 10 min.)
C. Amarelo: O paciente capaz de esperar pelo atendimento (tempo mximo de espera de 60 min.)
D. Verde: Caso menos grave, mas exige atendimento mdico mas pode ser assistido num ambulatrio (tempo
mximo de espera de 120 min.)
E. Azul: o caso de menor gravidade e sem problemas recentes. Este paciente pode ser acompanhado no
consultrio mdio (tempo mximo de espera de 240 min.)
b) Os ns da rvore tero que armazenar as seguintes informaes
A. Nome do paciente
B. Cor da sua classificao de risco
C. Tempo de espera restante do paciente
c) Dever ser implementado a funo fichacmp que receber como parmetro 2 fichas de pacientes (ou 2 ns da
rvore) chamados de ficha1 e ficha2, tendo como resultado:
A. -1 se ficha1 < ficha2
B. 0 se ficha1 = ficha2
C. +1 se ficha1 > ficha2
d) O mtodo de comparao entre os ns deve ser a seguinte
A. A cor vermelha tm prioridade maior que qualquer outra cor
B. Em seguida a cor laranja
C. As cores amarela em diante no possui preferencia
D. Quando da mesma cor ou a cor no tm preferncia, o critrio de desempate o tempo de espera restante
e) O sistema ter 3 opes (apresentadas abaixo) juntamente com os dados dos dois prximos pacientes a serem
chamados.
A. Inserir paciente (O usurio ir informar o nome e a cor de classificao do paciente).
B. Chamar paciente (Imprimir na tela o nome do paciente, atualizar a rvore em funo do tempo de consulta).
C. Imprimir rvore (Imprime a rvore da fila de prioridade, mostrando a altura da rvore em pre-ordem).
f) Toda vez que um paciente for chamado para a consulta ser feito em um tempo aleatrio. Neste caso, o tempo
pode ser entre 5 14 minutos (este tempo deve ser aleatrio, como exemplo para gerao de nmeros aleatrios,
veja o arquivo random.c) no qual dever atualizar o tempo de espera restante de todos os elementos da rvore.
(6) Programao dinmica
26. Quais as principais vantagens do uso da programao dinmica?
27. Escreva o pseudo-cdigo para o problema da multiplicao de matrizes usando programao dinmica (Premissa:
Dado as matrizes M1 , M2 e M3 temos M1 M2 M3 = (M1 M2 ) M3 ). Considere todas as matrizes com a mesma
dimenso.
28. Construa o LCS para os seguintes pares de sequncias
a) HOUSE e MOUSE
b) ACGGTCTG e ACGTTCT
c) PAROXITONA e PROPAROXICITONA
(7) Problemas N P e heursticas
29. Quais as principais caractersticas dos problemas de classe N P
30. Atualmente, qual(is) a(s) soluo(es) para se resolver um problema N P como P?

4
31. Considere que um determinado problema P tm custo O(log n) para ser resolvido, e, um problema Q tm sua
entrada modificada para se adaptar P bem como sua sada interpretvel para Q. Podemos ento dizer que Q
polinomialmente redutvel Q?
32. O que podemos dizer de Q p P e P P?
33. O que vem a ser heurstica?
34. Quando o problema PCC tm sua soluo em P?
35. Utilizando a heurstica da busca pela aresta de menor peso (O mesmo do problema do PCV). Apresente o ciclo
hamiltoniano dos seguintes grafos (para o mesmo grafo, faa ao menos 2 execues comeando de vrtices distintos):

a)

b)

c)

5
d)
36. Quais as vantagens e desvantagens no uso das seguintes heursticas do problema da mochila (apresente exemplos):
a) Selecionar primeiro os itens de maior valor
b) Selecionar primeiro os itens de menor peso
c) Selecionar os itens pela razo valor
peso
37. Para os grafos da questo 35. faa a colorao de cada um deles e apresente seu nvel cromtico.

Das könnte Ihnen auch gefallen