SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Programação Dinâmica
Segmento de Soma Máxima
Gabriel Ramalho
Túlio Lemes
Vinicius Rodrigues
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
Representar a soma dos elementos do segmento de soma
máxima, com base no conjunto numérico determinado.
1.2 Descrição Informal:
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:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
1.4 Exemplo:
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:
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
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.
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
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
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

Mais conteúdo relacionado

Mais procurados

Recursividade em C
Recursividade em CRecursividade em C
Recursividade em CCaique Silva
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosMauro Pereira
 
Mat utfrs 11. fracoes algebricas
Mat utfrs 11. fracoes algebricasMat utfrs 11. fracoes algebricas
Mat utfrs 11. fracoes algebricastrigono_metria
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Marcos Castro
 
MATERIAL DE Probabilidade
MATERIAL DE ProbabilidadeMATERIAL DE Probabilidade
MATERIAL DE Probabilidadefredasvarella
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasDelacyr Ferreira
 
Tabela derivadas integral
Tabela derivadas integralTabela derivadas integral
Tabela derivadas integralLidia Tiggemann
 
Microcontroladores PIC - Interface com displays de 7 segmentos
Microcontroladores PIC - Interface com displays de 7 segmentosMicrocontroladores PIC - Interface com displays de 7 segmentos
Microcontroladores PIC - Interface com displays de 7 segmentosFabio Souza
 
Tabela derivadas-e-integrais
Tabela derivadas-e-integraisTabela derivadas-e-integrais
Tabela derivadas-e-integraismariasousagomes
 
Transformada de Fourrier
Transformada de FourrierTransformada de Fourrier
Transformada de FourrierJoão Batista
 
Lógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalLógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalWesley R. Bezerra
 
Tabela completa de derivadas e integrais
Tabela completa de derivadas e integraisTabela completa de derivadas e integrais
Tabela completa de derivadas e integraisDiego Rodrigues Vaz
 
Programação Estruturada em Python - Introducao
Programação Estruturada em Python - IntroducaoProgramação Estruturada em Python - Introducao
Programação Estruturada em Python - IntroducaoEduardo S. Pereira
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2Rogerio Oliveira
 
Função de duas variáveis, domínios e imagem
Função de duas variáveis, domínios e imagemFunção de duas variáveis, domínios e imagem
Função de duas variáveis, domínios e imagemIsadora Toledo
 

Mais procurados (20)

Recursividade em C
Recursividade em CRecursividade em C
Recursividade em C
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
Mat utfrs 11. fracoes algebricas
Mat utfrs 11. fracoes algebricasMat utfrs 11. fracoes algebricas
Mat utfrs 11. fracoes algebricas
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)
 
MATERIAL DE Probabilidade
MATERIAL DE ProbabilidadeMATERIAL DE Probabilidade
MATERIAL DE Probabilidade
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de Recorrências
 
Tabela derivadas integral
Tabela derivadas integralTabela derivadas integral
Tabela derivadas integral
 
Algoritmos - Matrizes
Algoritmos - MatrizesAlgoritmos - Matrizes
Algoritmos - Matrizes
 
Microcontroladores PIC - Interface com displays de 7 segmentos
Microcontroladores PIC - Interface com displays de 7 segmentosMicrocontroladores PIC - Interface com displays de 7 segmentos
Microcontroladores PIC - Interface com displays de 7 segmentos
 
Tabela derivadas-e-integrais
Tabela derivadas-e-integraisTabela derivadas-e-integrais
Tabela derivadas-e-integrais
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Transformada de Fourrier
Transformada de FourrierTransformada de Fourrier
Transformada de Fourrier
 
Regressão Linear I
Regressão Linear IRegressão Linear I
Regressão Linear I
 
Poo
PooPoo
Poo
 
Lógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalLógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicional
 
Tabela completa de derivadas e integrais
Tabela completa de derivadas e integraisTabela completa de derivadas e integrais
Tabela completa de derivadas e integrais
 
Programação Estruturada em Python - Introducao
Programação Estruturada em Python - IntroducaoProgramação Estruturada em Python - Introducao
Programação Estruturada em Python - Introducao
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2
 
Função de duas variáveis, domínios e imagem
Função de duas variáveis, domínios e imagemFunção de duas variáveis, domínios e imagem
Função de duas variáveis, domínios e imagem
 

Destaque

Análise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaAnálise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaDelacyr Ferreira
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeDelacyr Ferreira
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação DinâmicaOrlando Junior
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem CLeonardo Lima
 
Algoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoAlgoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoGabriel Albuquerque
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Ben Lesh
 
Introdução à pesquisa operacional
Introdução à pesquisa operacionalIntrodução à pesquisa operacional
Introdução à pesquisa operacionalklivermoreira
 
Analise de Sensibilidade
Analise de SensibilidadeAnalise de Sensibilidade
Analise de SensibilidadeVivi Basilio
 
Pesquisa Operacional Aula 01 - Apresentação
Pesquisa Operacional Aula 01 - ApresentaçãoPesquisa Operacional Aula 01 - Apresentação
Pesquisa Operacional Aula 01 - ApresentaçãoLeinylson Fontinele
 

Destaque (11)

Análise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaAnálise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação Dinâmica
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação Dinâmica
 
Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem C
 
Algoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoAlgoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco Mínimo
 
Otimização
OtimizaçãoOtimização
Otimização
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016
 
Introdução à pesquisa operacional
Introdução à pesquisa operacionalIntrodução à pesquisa operacional
Introdução à pesquisa operacional
 
Analise de Sensibilidade
Analise de SensibilidadeAnalise de Sensibilidade
Analise de Sensibilidade
 
Teoria das Filas
Teoria das FilasTeoria das Filas
Teoria das Filas
 
Pesquisa Operacional Aula 01 - Apresentação
Pesquisa Operacional Aula 01 - ApresentaçãoPesquisa Operacional Aula 01 - Apresentação
Pesquisa Operacional Aula 01 - Apresentação
 

Semelhante a Segmento de Soma Máxima com Programação Dinâmica

Semelhante a Segmento de Soma Máxima com Programação Dinâmica (20)

Derivadas
DerivadasDerivadas
Derivadas
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Math
MathMath
Math
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdf
 
Trabalho equações
Trabalho equaçõesTrabalho equações
Trabalho equações
 
Ger numaleat(1)
Ger numaleat(1)Ger numaleat(1)
Ger numaleat(1)
 
Aula 1 a 15 vol1
Aula 1 a 15 vol1Aula 1 a 15 vol1
Aula 1 a 15 vol1
 
Cálculo usando MatLab
Cálculo usando MatLabCálculo usando MatLab
Cálculo usando MatLab
 
Artigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfArtigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdf
 
Algoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfAlgoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdf
 
Capítulo4 interpolação
Capítulo4 interpolaçãoCapítulo4 interpolação
Capítulo4 interpolação
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Cálculo Numérico: Integração Numérica com Bubble Sort
Cálculo Numérico: Integração Numérica com Bubble SortCálculo Numérico: Integração Numérica com Bubble Sort
Cálculo Numérico: Integração Numérica com Bubble Sort
 
06 complexidade de problemas
06   complexidade de problemas06   complexidade de problemas
06 complexidade de problemas
 
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
 
Metódos de Pesquisa em C
Metódos de Pesquisa em CMetódos de Pesquisa em C
Metódos de Pesquisa em C
 
Programando em python recursao
Programando em python   recursaoProgramando em python   recursao
Programando em python recursao
 
03 raizes
03 raizes03 raizes
03 raizes
 
Fisica unidade 4
Fisica unidade 4Fisica unidade 4
Fisica unidade 4
 
Fourier
FourierFourier
Fourier
 

Mais de Gabriel Albuquerque

Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem de Conceitos Nu...
Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem  de Conceitos Nu...Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem  de Conceitos Nu...
Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem de Conceitos Nu...Gabriel Albuquerque
 
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"Gabriel Albuquerque
 
Star Wars e a Cultura da Convergência
Star Wars e a Cultura da ConvergênciaStar Wars e a Cultura da Convergência
Star Wars e a Cultura da ConvergênciaGabriel Albuquerque
 
Cultura Empresarial: Definição e Cases
Cultura Empresarial: Definição e CasesCultura Empresarial: Definição e Cases
Cultura Empresarial: Definição e CasesGabriel Albuquerque
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordGabriel Albuquerque
 

Mais de Gabriel Albuquerque (10)

Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem de Conceitos Nu...
Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem  de Conceitos Nu...Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem  de Conceitos Nu...
Eati 2014 - Jogos Cognitivos Eletrônicos para a Aprendizagem de Conceitos Nu...
 
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
Planejamento Estratégico: Livraria Fictícia "Papiros Virtuais"
 
Teoria dos Grafos
Teoria dos GrafosTeoria dos Grafos
Teoria dos Grafos
 
Star Wars e a Cultura da Convergência
Star Wars e a Cultura da ConvergênciaStar Wars e a Cultura da Convergência
Star Wars e a Cultura da Convergência
 
Cultura Empresarial: Definição e Cases
Cultura Empresarial: Definição e CasesCultura Empresarial: Definição e Cases
Cultura Empresarial: Definição e Cases
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
 
Tecnologia Bluetooth
Tecnologia BluetoothTecnologia Bluetooth
Tecnologia Bluetooth
 
Algoritmo Shell Sort
Algoritmo Shell SortAlgoritmo Shell Sort
Algoritmo Shell Sort
 
WordPress
WordPressWordPress
WordPress
 
OOCSS - Object Oriented CSS
OOCSS - Object Oriented CSSOOCSS - Object Oriented CSS
OOCSS - Object Oriented CSS
 

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

  • 1. Programação Dinâmica Segmento de Soma Máxima Gabriel Ramalho Túlio Lemes Vinicius Rodrigues
  • 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. Representar a soma dos elementos do segmento de soma máxima, com base no conjunto numérico determinado. 1.2 Descrição Informal:
  • 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:
  • 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. 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. 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. 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. 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