A fim de analisar um algoritmo, pode

Propaganda
Projeto e Análise de Algoritmos
Aula de Exercícios - 1
Prof. André Amaral
Página 1 de 3
1. Mostrar que
1 2
n − 3n é Θ(n2).
2
2. Mostrar que f(n) = 37n 2 + 120n + 17 é O( g(n) ) , onde g(n) =
n3
.
3
3. A fim de analisar um algoritmo, pode-se concentrar em uma operação fundamental
para o problema estudado denominada operação básica. Desta forma, ignoram-se as
inicializações, os controles de laço e conta-se apenas o número de operações básicas
realizadas. Desde que as operações básicas sejam bem escolhidas, e o numero total de
operações realizadas seja aproximadamente proporcional ao número de operações
básicas, teremos nas operações básicas uma boa medida do trabalho realizado por um
algoritmo. Para cada problema abaixo, faça uma escolha razoável para a operação básica
a ser realizada. a) Encontrar um nome x em uma lista de nomes. b) Multiplicar duas
matrizes contendo valores iguais. c) Ordenar uma lista de números.
4. Considere um vetor A contendo n valores. O algoritmo de pesquisa linear, apresentado
abaixo, encontra o índice de um valor v especificado, se v estiver no vetor. Retorna zero
se v não estiver no vetor.
Entrada: Uma seqüência de n números A= < a1, a2,.., an > e um valor v.
Saída: Um índice i tal que v= A[i] ou zero se v não está presente em A.
1. index Å 1
2. enquanto index ≤ n e A[index] ≠ v faça
3.
index Å index + 1
4. fim {enquanto}
5. se index > n então index Å0
a) Qual seria uma escolha razoável para a operação básica realizada?
b) Qual o número máximo de operações básicas realizadas pelo algoritmo?
c) Determine o número de operações básicas realizadas em média pelo
algoritmo.(Suponha que (i) sabemos que v está na lista; (ii) Qualquer posição na
lista é igualmente provável para v; (iii) Os elementos de A são distintos).
Projeto e Análise de Algoritmos
Aula de Exercícios - 1
Prof. André Amaral
Página 2 de 3
5. Considere o algoritmo abaixo:
Entrada: Um vetor contendo n números A= < a1, a2,.., an >.
Saída: Uma variável max contendo o maior elemento em A.
1. max ÅA[1]
2. para index Å2 até n
se max < A[index]
3.
então max ÅA[index]
4.
fim {se}
5.
6. fim {para}
a) Forneça uma escolha razoável para a operação básica realizada.
b) Forneça um limitante superior para o número de comparações necessárias para se
encontrar o máximo elemento no pior caso.
c) Forneça um limitante inferior para o número de comparações necessárias para se
encontrar o máximo elemento no pior caso.
6. Considere o seguinte algoritmo (pesquisa binária):
Entrada: Um vetor ordenado contendo n números A= < a1, a2,.., an > e um valor v.
Saída: Um índice i tal que v= A[i] ou zero se v não está presente em A.
1. first Å 1; last Å n
2. found Å FALSO
3. enquanto first ≤ last e found = FALSO faça
4.
index Å  (first + last) / 2
se v = A[index] então found ÅVERDADEIRO
5.
senão se v < A[index] então last Å index – 1
6.
senão first Å index + 1
7.
fim {se}
8.
9. fim {enquanto}
10. se found = FALSO então index Å 0
Determine o número de operações básicas realizadas pelo algoritmo de pesquisa binária
no pior caso.
7. Mostrar que a solução exata para a recorrência
F(n) = 1
F(n) = F(  n / 2 ) + 1
é F(n) = lg n + 1, para n ≥1.
para n =1,
para n >1,
Projeto e Análise de Algoritmos
Aula de Exercícios - 1
Prof. André Amaral
Página 3 de 3
8. Suponha que se quer ordenar n elementos contidos em um vetor A, inicialmente,
encontrando-se o menor elemento de A e trocando-o de posição com o elemento A[1].
Em seguida, encontre o segundo menor elemento de A e o troque com o elemento A[2].
Continue desta maneira para os primeiros (n –1) elementos de A. a) Escreva um pseudocódigo para este algoritmo, o qual é conhecido como selection sort. b) Qual o tempo de
execução no pior caso? E no melhor caso?
9. Mostre que a solução de
é O(n2).
T(n) = 2.T( n / 2) + n
10. Mostrar que a solução para a recorrência
T(n) = Θ(1)
T(n) = T( n – 1) + Θ(1)
para n =0,
para n >0,
é T(n) = O (n).
11. Considere o problema de ordenação de uma seqüência de n números em ordem nãodecrescente. Um método simples para ordenar os números é localizar o menor elemento
varrendo a seqüência e então trocar o menor elemento com o primeiro. A seguir
repetimos o processo para os (n – 1) últimos elementos resultando na colocação do
segundo menor elemento na segunda posição. Repetindo este processo para os (n – 2),
(n – 3),..., 2 elementos, teremos a seqüência completamente ordenada. Este algoritmo é
conhecido como selection sort. Escreva uma recorrência para o tempo de execução da
versão recursiva do algoritmo selection sort.
12. Mostrar que a solução exata para a recorrência
T(n) = 0
T(n) = T( n – 1) + n –1
é T(n) = n (n–1) / 2, para n ≥1.
para n =1,
para n >1,
Download