O intuito desta postagem é apresentar a solução de algumas questões do POSCOMP sobre Complexidade de Algoritmos. O POSCOMP (Exame Nacional para Ingresso na Pós-Graduação em Computação) "testa conhecimentos na área de Computação e tem como objetivo específico avaliar os conhecimentos de candidatos a Programas de Pós-Graduação em Computação oferecidos no Brasil" (SBC sobre o POSCOMP).

Para mais questões sobre o exame acesse a página POSCOMP.
POSCOMP 2002
Questão 29
Qual das seguintes afirmações sobre crescimento assintótico de funções não é verdadeira:
- (a) 2n2+3n+1=O(n2)
- (b) Se f(n)=O(g(n)) então g(n)=O(f(n))
- (c) logn2=O(logn)
- (d) Se f(n)=O(g(n)) e g(n)=O(h(n)) então f(n)=O(h(n))
- (e) 2n+1=O(2n)
Resolução
Conforme o gabarito, a alternativa (b) é a correta. Vamos analisar cada uma:
(a) A afirmação é verdadeira, pois qualquer polinômio de grau k é O(nk). Neste caso, k = 2, portanto 2n2+3n+1=O(n2).
(b) É falso. Quando afirmamos que f(n)=O(g(n)) significa que que g(n) representa um limite superior para f(n), portanto nem sempre temos g(n)=O(f(n)). Além disso, podemos também utilizar um contraexemplo. Suponha que f(n)=n2 e g(n)=n3. Dessa forma, teríamos n2=O(n3), que é verdade. Porém, n3≠O(n2), portanto a afirmação é falsa.
(c) logn2=2logn=O(logn), portanto é verdade.
(d) É verdade. Essa é a propriedade transitiva da notação Big-O.
(e) 2n+1=2×2n=O(2n), portanto é verdade.
Questão 31
Considere o algoritmo da busca sequencial de um elemento em um conjunto com n elementos. A expressão que representa o tempo médio de execução desse algoritmo para uma busca bem sucedida é:
- (a) n2
- (b) n(n+1)/2
- (c) log2n
- (d) (n+1)/2
- (e) nlogn
Resolução
O caso médio é a média (ou valor esperado) de todos os casos possíveis. Basicamente, multiplicamos a probabilidade de cada caso pelo custo e somamos os resultados. Como todos os casos são igualmente prováveis, então a probabilidade de cada caso é 1/n, onde n é o tamanho do vetor. O custo para encontrar um elemento é igual à posição que o mesmo ocupa, que é a quantidade de comparações necessárias para encontrá-lo. Isto é, se o elemento está na posição i, então o custo é i. Logo,
T(n)=n∑i=11n×i=1nn∑i=1i
T(n)=1n×n(n+1)2=n+12
Portanto, a resposta correta é (d).
Questão 32
Quais dos algoritmos de ordenação abaixo possuem tempo no pior caso e tempo médio de execução proporcional a O(nlogn).
- (a) Bubble sort e quicksort
- (b) Quicksort e merge sort
- (c) Merge sort e bubble sort
- (d) Heap sort e selection sort
- (e) Merge sort e heap sort
Resolução
Vamos analisar cada alternativa:
(a) Não é verdade, pois o Bubble sort tem pior caso e caso médio igual a O(n2) e o pior caso do Quicksort também é O(n2).
(b) É falso, pois, apesar do Merge sort ser O(nlogn) no pior caso e no caso médio, o Quicksort é quadrático no pior caso.
(c) É falso, pois o Bubble sort é quadrático no caso médio e no pior caso.
(d) É falso, pois o Selection sort é quadrático.
(e) É verdade, pois o Merge sort e o Heap sort têm complexidade O(nlogn) no pior caso e no caso médio.
Portanto, a alternativa correta é a (e).
POSCOMP 2003
Questão 37
Qual é o número mínimo de comparações necessário para encontrar o menor elemento de um conjunto qualquer não ordenado de n elementos?
- (a) 1
- (b) n - 1
- (c) n
- (d) n + 1
- (e) n log n
Resolução
A alternativa correta é a (b), porque se você considerar que o primeiro elemento do conjunto é o menor, então terá que fazer comparações com os outros n - 1 elementos restantes, fazendo substituições no valor (variável) caso algum valor menor seja encontrado.
Questão 39
Quais das seguintes igualdades são verdadeiras?
- I. n2=O(n3)
- II. 2∗n+1=O(n2)
- III. n3=O(n2)
- IV. 3∗n+5∗nlogn=O(n)
- V. logn+√n=O(n)
- (a) somente I e II
- (b) somente II, III e IV
- (c) somente III, IV e V
- (d) somente I, II e V
- (e) somente I, III e IV
Resolução
Vamos analisar cada afirmação:
I) É verdadeira, pois n3 é um limite superior para n2.
II) É verdadeira, pois n2 é assintoticamente maior que 2∗n+1.
III) É falsa, pois n2 não é um limite superior para n3. Na prática, n3 é assintoticamente maior que n2.
IV) É falsa, pois nlogn é assintoticamente maior que n.
V) É verdadeira, pois n é um limite superior para √n e para logn.
Portanto, a alternativa correta é a (d).
POSCOMP 2004
Questão 25
Considere as seguintes afirmativas sobre o algoritmo de pesquisa binária:
- I. a entrada deve estar ordenada
- II. uma pesquisa com sucesso é feita em tempo logarítmico na média
- III. uma pesquisa sem sucesso é feita em tempo logarítmico na média
- IV. o pior caso de qualquer busca é logarítmico
As afirmativas corretas são:
- (a) Somente I e II.
- (b) Somente I, II e III.
- (c) Somente II e III.
- (d) Somente III e IV.
- (e) Todas as afirmativas estão corretas.
Resolução
A afirmativa I é verdadeira, pois a pesquisa binária só funciona se o vetor estiver ordenado.
As afirmativas II, III e IV também são verdadeiras. O pior caso e o caso médio têm complexidade O(logn). Observe que as afirmativas III e IV são quase equivalentes, pois o pior caso é justamente a busca sem sucesso.
Questão 34
Um algoritmo é executado em 10 segundos para uma entrada de tamanho 50. Se o algoritmo é quadrático, quanto tempo em segundos ele gastará, aproximadamente, no mesmo computador, se a entrada tiver tamanho 100?
- (a) 10
- (b) 20
- (c) 40
- (d) 100
- (e) 500
Resolução
Como ele é quadrático, então podemos fazer a seguinte aproximação para o tempo de execução: T(n)=cn2, onde c é uma constante que determinaremos a seguir.
Sabe-se que T(50)=10, logo
c×502=102500c=10c=102500=1250.
Ou seja, T(n)=1250n2. Para n=100, temos
T(100)=1250×1002=10000250=40.
Portanto, a alternativa correta é a (c).
Nenhum comentário:
Postar um comentário