Você está na página 1de 2

UNIVERSIDADE FEDERAL DE MINAS GERAIS

INSTITUTO DE CIÊNCIAS EXATAS


DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
PROJETO E ANÁLISE DE ALGORITMOS
Professores: Gisele Pappa, Luiz Chaimowicz, Jussara Almeida e Wagner Meira Jr
Terceira Prova: 100 pontos

Aluno:

• Duração do teste: 100 minutos.

• Prova individual e sem consulta.

• Faz parte da prova a interpretação das questões. Caso você ache que falta algum
detalhe nas explicações faça as suposições que achar necessárias e documente-as na
resolução das questões.

1a Questão ( 10 + 10 + 10 pontos)
Você trabalha num armazém que processa encomendas de um sı́tio de comércio
eletrônico. O armazém é organizado como uma grande linha de produção, con-
tendo várias esteiras onde as caixas a serem despachadas são colocadas na sequência
dos pedidos. Em um dado momento, uma das esteiras dessa linha de produção que-
bra e é necessário mover as caixas que passariam por essa esteira utilizando uma
empilhadeira. Para que as caixas sejam processadas corretamente, é necessário que
elas permaneçam na mesma ordem quando movidas e colocadas na esteira destino.
Mais ainda, considere que cada caixa tenha um peso pi , e a empilhadeira carregue
no máximo um peso P por viagem (considere que as caixas são densas o suficiente
de tal forma que as suas dimensões nunca sejam problema, mas sim o seu peso).
Pede-se:

1. Apresente um algoritmo guloso eficiente para escolher as caixas que serão colo-
cadas na empilhadeira para cada viagem.
2. Derive a sua ordem de complexidade
3. Prove que o algoritmo é ótimo.

2a Questão ( 10+10+10 pontos)


Considere um vetor A que contem n inteiros distintos. Definimos um mı́nimo local
de A para ser um elemento x tal que x = A[i], 0 ≤ i < n, com A[i − 1] > A[i] e
A[i] < A[i + 1]. Em outras palavras, o mı́nimo local x é menor que os seus vizinhos
(para elementos nas fronteiras há apenas um vizinho). Note que A pode ter vários
mı́nimos locais.
Por exemplo, dado A = [10, 6, 4, 3, 12, 19, 18], há dois mı́nimos locais: 3 e 18.
Obviamente, o menor valor de A é também um mı́nimo local.
Pede-se:

1. Apresente um algoritmo de divisão e conquista para encontrar um mı́nimo local


em um vetor A.
2. Prove a correção do seu algoritmo.
3. Apresente a equação de recorrência do seu algoritmo e derive a sua ordem de
complexidade.

3a Questão ( 10 + 10 + 10 + 5 + 5 pontos)
Considere o modelo eleitoral americano onde cada estado elege delegados, que por
sua vez elegem o presidente. Em termos de esforço de campanha, conseguir votos de
estados menos populosos pode ter menor custo e a mesma efetividade de conseguir
votos em estados mais populosos. Assim, o problema a ser resolvido é identificar
o conjunto de estados com a menor população total que votam no candidato que
se quer eleger. Formalmente, seja pi a população do estado i e vi o número de
votos associados ao estado i. Todos os votos de um estado vão para um mesmo
candidato, que é o candidato que obtiver as maioria dos votos do estado. O candidato
eleito nacionalmente é aquele que recebe pelo menos V votos de delegados, onde
P
V = ⌊( i vi )/2⌋ + 1.
Considerando que o custo de campanha é fixo por cidadão, nosso objetivo é encontrar
P P
os estados S que minimizam o valor de i∈S pi sujeito à restrição que i∈S vi ≥ V .
Devemos construir uma solução baseada em programação dinâmica.
Pede-se:

1. Defina o sub-problema para fins de programação dinâmica.


2. Apresente a equação de recorrência associada ao sub-problema.
3. Prove a correção da solução proposta.
4. Apresente a estratégia de memorização das soluções dos sub-problemas.
5. Discuta a implementação da solução proposta, em particular a ordem de ava-
liação e satisfação das dependências entre sub-problemas.

Você também pode gostar