Programação Dinâmica - Segmento de Soma Máxima

1.221 visualizações

Publicada em

Análise de Algoritmos - Programação Dinâmica - Segmento de Soma Máxima

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.221
No SlideShare
0
A partir de incorporações
0
Número de incorporações
31
Ações
Compartilhamentos
0
Downloads
23
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programação Dinâmica - Segmento de Soma Máxima

  1. 1. Programação Dinâmica Segmento de Soma Máxima Gabriel Ramalho Túlio Lemes Vinicius Rodrigues
  2. 2. 1.1 Definição do Problema: Dado a necessidade de obtermos o segmento de um vetor com a maior soma possível, se faz necessária a utilização de algoritmos. Podemos tomar como exemplo eventos da vida real: ● Bioinformática (produzir melhor alinhamento entre sequências de DNA, RNA ou proteínas, e determinar sua similaridade através de somas) ● Monitoramento de Áreas (calcular se é preciso mais sensores de monitoramento) 1. Motivação
  3. 3. Representar a soma dos elementos do segmento de soma máxima, com base no conjunto numérico determinado. 1.2 Descrição Informal:
  4. 4. Questão: Dado uma sequência de n números inteiros, encontre a maior soma de uma subsequência presente no conjunto. Entrada: Um conjunto numérico. Saída: Soma dos elementos do segmento de soma máxima encontrado. 1.3 Descrição Formal:
  5. 5. 1.4 Exemplo:
  6. 6. 1.4 Exemplo:
  7. 7. 1.4 Exemplo:
  8. 8. 1.4 Exemplo:
  9. 9. 1.4 Exemplo:
  10. 10. 1.4 Exemplo:
  11. 11. 1.4 Exemplo:
  12. 12. 1.4 Exemplo:
  13. 13. 1.4 Exemplo:
  14. 14. 1.4 Exemplo:
  15. 15. 1.4 Exemplo:
  16. 16. 1.4 Exemplo:
  17. 17. 1.4 Exemplo:
  18. 18. Obs: Se a sequência de número não possuir números negativos, o segmento de soma máxima abrangerá todos elementos. = 175 (segmento 0 até 7) Obs2 : Caso todos elementos da sequência sejam negativos, a soma será o valor de seu elemento menos negativo. = -5 (segmento 1) 1.4 Exemplo:
  19. 19. 2. Algoritmo SOLIDEZ (A, p, r) F[p] ← A[p] para q ← p + 1 até r faça se F[q − 1] > 0 então F[q] ← F[q−1] + A[q] senão F[q] ← A[q] x ← F[p] para q ← p + 1 até r faça se F[q] > x então x ← F[q] devolva x
  20. 20. 3.1 Prova de Corretude: SOLIDEZ (A, p, r) F[p] ← A[p] para q ← p + 1 até r faça se F[q − 1] > 0 então F[q] ← F[q−1] + A[q] senão F[q] ← A[q] x ← F[p] para q ← p + 1 até r faça se F[q] > x então x ← F[q] devolva x 3. Análise do Algoritmo A cada iteração do loop, F[q − 1] é a firmeza de A[p...q−1]. Logo, pode-se afirmar que F[j] é a firmeza de A[p..j]. Sendo j = p, p+1,...,q−2, q−1 pode-se afirmar que o fato de F[j] ser firmeza de A[p..j] vale para j = p, p+1,..., r. Em seu bloco final, o algoritmo percorre todo o vetor com as firmezas das subsequências registradas até então e retorna o maior valor entre elas.
  21. 21. 3.2 Complexidade: ● A partir do loop do algoritmo podemos perceber que o tempo consumido é proporcional ao número de elementos n := r − p + 1 do vetor. Logo, o consumo de tempo do algoritmo está em: Θ(n) 3. Análise do Algoritmo
  22. 22. 4. Conclusão ● Melhor técnica para resolver o problema. ● Não é possível obter um algoritmo melhor. Vantagens: ● Algoritmo mais eficiente para a solução do problema ● Menor gasto de processamento Desvantagens: ● Mais difícil de implementar ● Maior gasto com memória
  23. 23. Bibliografia: ● http://prezi.com/i1eoqtqpjgpk/problema-do-segmento-de-soma-maxima/ ● http://www.ime.usp.br/~cris/aulas/11_1_338/slides/aula5.pdf ● http://www.ime.usp.br/~pf/livrinho-AA/AA-BOOKLET.pdf

×