Você está na página 1de 1

IC-UNICAMP

MO417- Complexidade de Algoritmos, Lista 4, 5/11/20, entrega em 10/11/20

Questão 1 [10]
Suponha que existe um algoritmo Q que computa a “qualidade” de qualquer cadeia de caracteres A[1..k]
in tempo O(k).
Dada uma cadeia arbitrária T [1..n] o problema é quebrá-la em subcadeias tais que a qualidade total
das subcadeias seja a maior possı́vel.
Por exemplo, se Q é tal que cadeias que começam com Z têm qualidade 1 e qualquer outra tem
qualidade 0, AZEBRAZURETAESTAZURRANDO pode ser quebrada de forma a obter o maior valor de qualidade
possı́vel em
A·ZEBRA·ZURETAESTA·ZURRANDO.

a. Descreva uma solução recursiva para o problema.

b. Descreva um algoritmo por programação dinâmica para o problema, a partir da sua solução
recursiva.

Questão 2 [10]
Uma caixa d-dimensional com lados (x1 , . . . , xd ) cabe numa caixa (y1 , . . . , yd ) se existe uma permutação
π de 1, . . . , d tal que

xπ1 < y1 , · · · , xπd < yd .

Projete um algoritmo eficiente para determinar se (x1 , . . . , xd ) cabe em (y1 , . . . , yd ). Prove que este
algoritmo está correto.
Questão 3 [10]
Uma empresa precisa minimizar o custo para cortar uma barra de aço de tamanho ` nas posições
x1 , x2 , . . . , xn medidas a partir do inı́cio da barra. O custo de cada corte é proporcional ao tamanho da
barra que entra na serra. Por exemplo, para uma barra de tamanho 10 a ser cortada nas posições 2, 4 e
7, há várias seqüências possı́veis de corte. Uma delas é cortar nas posições 2, depois 4 e depois 7, com
custo pelo corte em barras de tamanhos 10, 8 e 6 (e total 24). Outra é cortar nas posições 4, depois 2
e depois 7, com custo pelo corte em barras de tamanhos 10, 4 e 6 (e total 20).

a. Descreva uma solução recursiva para o problema.

b. Descreva um algoritmo por programação dinâmica para o problema, a partir da sua solução
recursiva.

Você também pode gostar