Escolar Documentos
Profissional Documentos
Cultura Documentos
Exericicio DivisaoConquista PDF
Exericicio DivisaoConquista PDF
Exericicio DivisaoConquista PDF
1. Finding the Peak. Let A= a1,…,an be a sequence of n numbers with the following
property: there is p in {1,…,n} for which
(i) the subsequence a1,..,ap is increasing and
(ii) the subsequence ap,…,an is decreasing.
Exemplo
A=13568 6432
p=5
Solved Exercises
Smax 0
Para i:=1 até n faça
Para j:=i ate n faça
SA[i]
Para k:=i+1 até j faça
S S+A[k]
if S > Smax then
Smax S
Preprocessamento ...
S[ i , j ]= s[ 1, j ] –s[ 1 , i-1 ]
Smax 0
Para i:=1 até n faça
Para j:=i ate n faça
if Prefix[j] – Prefix[i-1] > Smax then
Smax Prefix[j] – Prefix[i-1]
...“dividir-e-conquistar”
a1 a2
a1 a2
...“dividir-e-conquistar”
resposta
no centro
a1 a2
T(esq): subsequencia de soma máxima que começa em algum i*
menor ou igual a n/2 e termina em n/2
T(dir): subsequencia de soma máxima que começa em n/2 e termina
em algum j* maior ou igual a n/2
Melhor resposta no centro igual a s[ i*, j* ]
…“dividir-e-conquistar”
SubseqMaxima (i,j)
Se i=j and A[i]>0 then return A[i]
Se i=j and A[i]<0 then return 0
Senão
Sleft SubseqMaxima (i,(i+j) div 2 )
Sright SubseqMaxima ((i+j) div 2 + 1, j )
Lmax 0; aux 0
Para k:= (i+j) div 2 downto i
aux aux + A[k]
Se aux > Lmax then Lmax aux
Rmax 0; aux 0
Para k:= (i+j) div 2 +1 to j
aux < - aux + A[k]
Se aux > Rmax then Rmax aux
Scenter Lmax+ Rmax
Return max(Sleft , Scenter , Sright )
…“dividir-e-conquistar”
Programação Dinâmica
Tempo Linear
Exercício 1
Complexidade de Tempo
T(2n) = 1 + T(n)
T(1) =1
Faça o merge com as listas originais (sem multiplicar por 2) para obter
uma lista ordenada
Exercício 3
Indução em |S|
Base |S|=1. Ok!
Hipótese. Propriedade vale quando |S| < = k.
Passo |S|=k+1.
Reciocínio.
Caso 1.) Existe um cartão em S, digamos c, que aparece mais do que (k+1)/2
vezes. Logo, este cartão aparecerá mais do que |S1|/2 vezes em S1 ou
mais de |S2|/2 vezes em S2. Como Cartão(S1) e Cartão(S2) estão
corretos então um destes retornará c. Logo, Cartão(S) retornará c.
Caso 2) Não existe cartão em S que aparece mais do que (k+1)/2 vezes. O
procedimento retorna Null.
Exercício 3
Complexidade de Tempo
T(1)=1
Escreva um Rotina HSR que recebe como entrada n retas e retorna uma
partição do intervalo (-\infty,+\infty) aonde a cada intervalo é associado
a reta visível naquele intervalo. Note que cada reta esta associada a no
máximo um intervalo
Complexidade de Tempo
LocalMinimo existe ?
LocalMinimo(r)
Se r é um folha (i)
Return r
Se r< r.esq e r<r.dir (ii)
Return r
Se r.esq<r
Return LocalMinimo(r.esq) (iii)
Se r.dir<r
Return LocalMinimo(r.dir) (iv)
Complexidade de Tempo
Prova
Indução no tamanho da árvore.
Base. r é uma folha (i). Ok.
Hipótese. Vale para árvores com 2d -1 nós
Passo. Provar para árvore T com 2d+1 -1 nós
Subcaso 2.1) r.esq < r. Então um mínimo local da árvore enraízada em r.esq
é um mínimo local de T. Como neste caso LocalMinimo(r.esq) é chamado,
segue da hip de indução que o algoritmo devolve a resposta correta
Subcaso 2.2) r.esq > r. Então r.dir < r eum mínimo local da árvore enraízada
em r.dir é um mínimo local de T. Como neste caso LocalMinimo(r.dir) é
chamado, segue da hip de indução que o algoritmo devolve a resposta correta