Pontifícia Universidade Católica do Paraná
Centro de Ciências Exatas e de Tecnologia
Curso de Engenharia de Computação
PA Projeto e Análise de Algoritmos
Segunda Avaliação
18 de Outubro de 2006
OBSERVAÇÕES IMPORTANTES
•
•
•
•
•
Leia com atenção o enunciado das questões e responda de maneira adequada.
Para serem consideradas, as respostas devem ser completas e legíveis.
Apresente sempre os passos intermediários e não somente a resposta.
A prova terá duração de três aulas (150 minutos) iniciando as 9:30 e terminando as 12:00.
É permitido consultar somente uma folha A4 com anotações. Estas anotações não podem conter exercícios resolvidos, somente teoria.
Não será permitido o empréstimo ou troca desta folha de anotações durante a prova.
QUESTÃO 1 [3,5 pontos] Considere o problema de buscar um padrão de m caracteres em um texto de n caracteres (string
matching). Dados:
•
•
•
Posição
1 2 3 ...
....25
Texto (n = 25): b c b c a b a b b c b c a a a a a b d c a a b a a
Padrão (n = 5): a a b a a
OBS: Não há espaçamento entre os caracteres do texto e entre os caracteres do padrão!
a) Construa a tabela de deslocamentos de Horspool (deslocamento pelo mau símbolo) [0,5]
b) Construa a tabela de deslocamento pelos bons sufixos para o padrão [0,5]
c) Aplique o algoritmo de Horspool até encontrar o padrão no texto e forneça [1,0]:
c1) posições onde o padrão é alinhado com o texto (posição onde o final do padrão é alinhado com o texto);
c2) número de comparações bem sucedidas (BS) e mal sucedidas (MS) em cada posição de alinhamento;
c3) número total de comparações realizadas até encontrar o padrão.
d) Aplique o algoritmo de Boyer-Moore para localizar o padrão no texto e forneça [1,5]:
d1) posições onde o padrão é alinhado com o texto (posição onde o final do padrão é alinhado com o texto);
d2) número de comparações bem sucedidas (BS) e mal sucedidas (MS) em cada posição de alinhamento;
d3) número total de comparações realizadas até encontrar o padrão.
QUESTÃO 2 [ 4 pontos] Considere o problema de encontrar os dois pontos mais próximos em um conjunto de n pontos em
um espaço 2-dimensional. A distância entre dois pontos Pi=(xi,yi) e Pj=(xj,yj) pode ser calculada utilizando a distância
Euclideana, que é definida como:
d (Pi , P j ) = ( xi − x j )2 + ( y i − y j )2
Dado um espaço 2D e um conjunto de 8 pontos:
10
9
8
b) Proponha um algoritmo não recursivo baseado na estratégia dividir e
conquistar para encontrar os dois pontos mais próximos dois [1,75]
c) Quantas medidas de distância são necessárias fazer para encontrar os dois
pontos mais próximos utilizando o algoritmo força-bruta proposto em a)? [0,5]
Eixo Y
a) Proponha um algoritmo não recursivo baseado na estratégia força-bruta
para encontrar os dois pontos mais próximos. Descreva os passos de seu
algoritmo. [1,25]
7
6
5
4
3
2
1
0
d) Quantas medidas de distância são necessárias fazer para encontrar os dois
pontos mais próximos utilizando o algoritmo dividir e conquistar proposto em
b)? [0,5]
0
1
2
3
4
5
6
7
8
9 10
Eixo X
QUESTÃO 3 [2,5 pontos] Dado o grafo não direcionado da figura abaixo:
a) Represente o grafo através de uma lista de adjacências ou matriz
de adjacências [0,5].
b) Escolha um algoritmo de busca que empregue a estratégia
decrementar e conquistar e explique como ele funciona [0,75].
a
c
e
g
b
d
f
h
c) Qual a estrutura de dados utilizada para implementar o algoritmo
escolhido no item b? [0,25].
d) Percorra este grafo (visitando todos os vértices) começando pelo
vértice “a” usando o algoritmo escolhido no item b e forneça a ordem
em que os vértices do grafo são visitados pelo algoritmo [1,0].
i
Download

S e g u n d a A v a l i a ç ã o