Você está na página 1de 1

Prova Sub – Análise de Algoritmos 2022.

2 – UFABC
Aritanan Gruber
aritanan.gruber@ufabc.edu.br
http://professor.ufabc.edu.br/∼aritanan.gruber

Entrega oficial via Moodle até 31/08/2022 às 23h59 (dá para fazê-la em 2 horas),
mas vou aceitar entregas via Moodle até 03/09/2022 às 23h59 sem penalizações.
(100 pontos)

A prova é individual, sem consulta a colegas, internet, e monitor. Você pode tirar dúvidas de enunciados com o professor.
Você pode ainda consultar suas anotações, a bibliografia indicada e os vídeos fornecidos. Caso o faça, indique clara e
sucintamente no início das questões o material consultado. Exemplos: seções X e Y de Cormen et al.; anotações/vídeo
sobre o tópico Z.

1. (10) Forneça uma função positiva f que não é Ω(n) nem O(n2 ). Prove seus argumentos!
Dica: Adapte uma função periódica, como sin x.
2. (10) Mostre como ordenar n números inteiros com valores em {1, 2, . . . , n3 − 1} em tempo O(n).
3. (10+10) Considere o problema de determinar um elemento mínimo x em um vetor A[1..n] de inteiros.

(a) Mostre que são necessárias n − 1 comparações (entre elementos de A) para determinar x.
(b) Mostre que um segundo menor elemento de A pode ser determinado com n + dlog ne − 2 comparações no pior
caso.
4. (10+10) Seja P [1..n] um vetor de parenteses, em que P [i] = ‘(’ ou P [i] = ‘)’ para cada i ∈ [n]. P é equilibrado se
satisfaz uma das condições:

• P é vazio (n = 0),
• P = (Q) para algum subvetor de parenteses Q equilibrado, [ ex: (()) ]
• P = QR para subvetores de parenteses Q e R equilibrados. [ ex: ()() ]
Descreva algoritmos com complexidade de tempo O(n) que recebem um vetor de parenteses P e determinam:

(a) se P é equilibrado.
(b) o comprimento de um subvetor de P equilibrado o mais longo possível; seu algoritmo aqui deve ser guloso e
você deve apresentar uma prova de sua correção.
5. (10) Dado um digrafo D = (V, A) e uma função c : A → R de custos conservativos nos arcos de D, forneça um
algoritmo baseado em programação dinâmica e com consumo de tempo polinomial em n := |V | e m := |A| que
determina um ciclo orientado de custo mínimo em D.
Nota: Se a função c não for conservativa, o problema é NP-difícil.
6. (10+10+10) O problema da soma de um subconjunto (S3 P = subset-sum problem) consiste P em: dados um
conjunto A com n inteiros e um inteiro b, determinar se existe um subconjunto S ⊆ A tal que a∈S a = b.

(a) Forneça um algoritmo que recebe uma instância de (S3 P) e encontra uma solução em tempo O(2n ).
(b) Mostre como resolver (S3 P) utilizando o problema da mochila binária (KP). Sua redução é polinomial? Qual
a consequência algorítmica (com relação a tempo) para (S3 P)? Seja preciso!
(c) Sabendo que (S3 P) é NP-completo, o que pode ser dito sobre as versões de otimização e de decisão de (KP)?
Justifique!

Você também pode gostar