AP1_Estrutura de Dados_2016-2_Gabarito

Propaganda
Curso de Tecnologia em Sistemas de Computação
Disciplina: Estrutura de Dados e Algoritmos
Gabarito da AP1 - Segundo Semestre de 2016
Nome Assinatura -
Observações:
1. Prova sem consulta e sem uso de máquina de calcular.
2. Use caneta para preencher o seu nome e assinar nas folhas de questões e
nas folhas de respostas.
3. Você pode usar lápis para responder as questões.
4. Ao final da prova devolva as folhas de questões e as de respostas.
5. Todas as respostas devem ser transcritas nas folhas de respostas. As respostas nas folhas de questõesnão serão corrigidas.
1
1. (2,0) Ordene as funções de complexidade dadas em cada item, da assintoticamente menor para a maior. Exemplo: se as funções dadas forem
n3 , n, n2 , sua resposta deve ser: n, n2 , n3 .
(a) n2 , 3n log n,
Resposta:
2
3 n,
1 3 2
2 n , 3 n.
3n log n, n2 ,
1 3
2n
(b) 23 n, 56 log n, 25, 2n .
Resposta: 25, 56 log n,
2
3 n,
2n .
2. (2,0) É dada uma sequência S de sı́mbolos, onde cada sı́mbolo pode ser
“e” ou “s”. É dada também uma fila implementada em um vetor F com
4 posições, que se encontra inicialmente vazio. A sequência S indica, da
esquerda para a direita, o movimento de clientes na fila F . Cada sı́mbolo e
indica a entrada de um novo cliente na fila, e cada sı́mbolo s indica a saı́da
de um cliente da fila para ser atendido. Em cada item abaixo, você deve
desenhar a fila F após a leitura de toda a sequência S, da esquerda para a
direita. Exemplo: se S = e e e s e s, sua resposta deve ser F = [− − 3 4],
isto é, o terceiro e o quarto clientes a chegar ainda estão aguardando na
fila. (Cada sı́mbolo “−” indica uma posição vazia no vetor F ).
Importante: você deve responder “overflow” ou “underflow”, caso ocorram. Exemplo: se S = e e e s e e e então ocorreria overflow ao ler o último
sı́mbolo de S.
(a) S = e s e s e e
Resposta: F = [− − 34]
(b) S = e e s s e s
Resposta: F = [− − −−]
(c) S = e e e s e e s e e
Resposta: “overflow”
(d) S = e e s s s
Resposta: “underflow”
3. (2,0) É dada a lista L = (12, 23, 34, 45, 56, 67, 78, 89, 91, 105, 117, 126).
(a) Determine a sequência correta de comparações que a BUSCA BINÁRIA efetua ao buscar a chave x = 90.
Resposta:
1a.
2a.
3a.
4a.
comparação:
comparação:
comparação:
comparação:
90=67?
90=91?
90=78?
90=89?
2
(b) Quantas comparações a BUSCA BINÁRIA efetua no pior caso para
uma lista de entrada com n elementos? Justifique.
Resposta: No pior caso a BUSCA BINÁRIA efetua log n + 1 comparações, pois após cada comparação o número de elementos a serem
considerados é reduzido pela metade. log n comparações nos conduzem
no pior caso a um vetor com um único elemento, sendo uma última comparação necessária pa determinar se o elemento foi encontrado ou não.
4. (2,0) Considere o algoritmo de BUSCA na LISTA SIMPLESMENTE ENCADEADA (não ordenada).
(a) Escreva este algoritmo.
procedimento BUSCA-ENC(x, ant, pont)
ANT:= PTLISTA
PONT := λ
PTR := PTLISTA↑.PROX
enquanto PTR 6= λ faça
se PTR↑.CHAVE 6= x então
ANT := PTR
PTR := PTR↑.PROX
senão
PONT := PTR
PTR := λ
(b) Determine as complexidades de melhor e pior caso deste algoritmo.
Resposta: No melhor caso o elemento buscado encontra-se na primeira
posição, portanto o algoritmo efetua O(1) passos no melhor caso. Por
outro lado, no pior caso o algoritmo deverá percorrer todas as posições e
portanto efetuará O(n) passos, um possı́vel cenário de pior caso é quando
o elemento buscado não encontra-se na lista.
5. (2,0) Para os próximos dois itens, recorde que existem dois métodos clássicos para ordenação de listas lineares: a ORDENAÇÃO POR SELEÇÃO
(OS) e a ORDENAÇÃO PELO MÉTODO DA BOLHA (OB).
(a) Desenhe um vetor de 5 elementos que leve a OS a realizar o MAIOR
número possı́vel de trocas de elementos.
Resposta: No pior caso a ORDENAÇÃO POR SELEÇÃO efetua n − 1
trocas para um vetor com n posições. O vetor V = [5, 2, 1, 3, 4] é um
exemplo de vetor com 5 posições para o qual a OS efetua 4 trocas.
(b) Desenhe um vetor de 5 elementos que leve a OB a realizar o MAIOR
número possı́vel de trocas de elementos.
3
Resposta: No pior caso a ORDENAÇÃO PELO MÉTODO DA BOLHA
2
efetua n 2−n trocas para um vetor com n. O vetor V = [5, 4, 3, 2, 1] é um
exemplo de vetor com 5 posições para o qual a OB efetua 10 trocas.
4
Download