Sunteți pe pagina 1din 2
Aluno: UNIVERSIDADE DO ESTADO DO RIO GRANDE DO NORTE FACULDADE DE CIÊNCIAS EXATAS E NATURAIS

Aluno:

UNIVERSIDADE DO ESTADO DO RIO GRANDE DO NORTE FACULDADE DE CIÊNCIAS EXATAS E NATURAIS - FANAT DEPARTAMENTO DE INFORMÁTICA – DI MESTRADO EM CIÊNCIA DA COMPUTAÇÃO

DISCIPLINA: PROJETO E ANÁLISE DE ALGORITMOS

Data

DISCIPLINA: PROJETO E ANÁLISE DE ALGORITMOS Data / / LISTA DE EXERCÍCIOS I Data de entrega:

/

/

LISTA DE EXERCÍCIOS I Data de entrega: 18/04/12 - Peso: 25% no total das listas.

1. Proponha exemplos de problemas práticos que posam ser modelados como casos

particulares de:

a. Problema do Caixeiro Viajante

b. Problema de Alocação de Tarefas

c. Problema de Satisfabilidade

(1,0)

OBS.: Sugira para casa um dos casos uma estratégia para construção de algoritmo, bem como a estrutura de dados que você utilizaria.

2. O Sudoku 1 existe desde a década de 1970, mas começou a ganhar popularidade no

final de 2004 quando começou a ser publicado diariamente na sessão de puzzles do jornal The Times. Entre abril e maio de 2005 o puzzle começou a ganhar um espaço na publicação de outros jornais britânicos e, poucos meses depois, ganhou popularidade mundial. O objetivo do Sudoku é preencher todos os espaços em branco do quadrado maior, que está dividido em nove grids, com os números de 1 a 9. Os algarismos não podem se repetir na mesma coluna, linha ou grid. (2,0)

podem se repetir na mesma coluna, linha ou grid . (2,0) Dadas as informações anteriores, proponha

Dadas as informações anteriores, proponha uma estratégia (base para um algoritmo) para

resolver o problema atingindo o objetivo do jogo.

(1,0)

3. Qual é o menor valor de n tal que um algoritmo cujo tempo de execução é 100n 2

funciona mais rápido que um algoritmo cujo tempo de execução e 2 n na mesma máquina?

(1,0)

1 A palavra Sudoku significa “número sozinho” em japonês, o que mostra exatamente o objetivo do jogo

4. Suponha a comparação das implementações de ordenação por inserção d ordenação

por intercalação na mesma máquina. Para entradas de tamanho n, a ordenação por inserção

é executada em 8n 2 passos, enquanto a ordenação por intercalação é executada em 64lg n passos. Para que valores de n a ordenação por inserção supera a ordenação por

intercalação?

(1,0)

5. Considere o problema da busca:

Entrada: um vetor A[1

Saída: Um Índice i tal que A[i] = x ou −1 se x não aparece no vetor.

Escreva um pseudo-código para o algoritmo BUSCA LINEAR que varre o vetor da

esquerda para a direita procurando pelo valor x. garante que o algoritmo está correto.

Escreva um invariante de laço que

n] e um valor x.

(1,0)

6. Considere o seguinte método para ordenar um vetor A[1

elemento em A e troque-o de posição com A[1]. Então procure o segundo menor

elemento de A e troque-o de posição com A[2] (note que para isto basta procurar o ???

n]). Repita este processo para os primeiros n − 1 elementos de A.

Escreva um pseudo-código para este algoritmo que é conhecido como algoritmo de seleção (selection sort). Escreva um invariante de laço que garante que o algoritmo está correto. Por que é suficiente considerar apenas os n − 1 primeiros elementos? Faça uma análise de complexidade detalhada. Qual é o melhor e o pior caso? (1,0)

n]. Encontre o menor

elemento em A[2

7. Considere novamente o problema da busca supondo agora que o vetor A[1

ordenado em ordem crescente. A idéia consiste em tomar o elemento do “meio” A[[n/2]],

n]. O

método de busca binária consiste em repetir este processo eliminando metade do vetor a cada vez. Escreva um algoritmo recursivo que implemente esta idéia. Escreva uma recorrência que descreve a complexidade de tempo (no pior caso) e mostre que a solução é

comparar com x e eliminar uma das “metades” A[1

n] está

[n/2]−1] e A[[n/2]+1

Θ(lg n).

(1,0)

8. Para cada função e cada tempo t na tabela a seguir, determine o maior tamanho de n de

um problema que pode ser resolvido no tempo t, supondo-se que o algoritmo para resolver

o problema demore ƒ(n) microssegundos.

(2,0)

ƒ(n) t
ƒ(n)
t

1 segundo

1 minuto

1 hora

1 dia

1 mês

1 ano

1 século

lg n

n
n

N

n lg n

n

2

n

3

2

n

n!