SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Dynamic Programming and
Overlapping Subproblems
Sérgio Oliveira Campos
Python Brasil 12
15 de outubro de 2016
Sobre o Sérgio (seocam)
● Programador
● Pythonista
● Curte Open Source
● Algo mais que vale ser dito?
Crave Food Services
Estamos contratando!
http://crave.workable.com
Grupy-RP / Caipyra
https://www.youtube.com/watch?v=YOT9i_4lLHs
Overlapping Subproblems
Problemas que podem ser divididos em sub-problemas e reusados
consecutivamente até que a solução desejada seja obtida.
Para que um problema possa ser resolvido utilizando programação
dinâmica o primeiro passo é encontrar a sua relação de recorrência.
Fibonacci
1 1 2 3 5 8 13 21 34 55 89 144
Fibonacci
Fibonacci
Implementação Recursiva
fib1.py
Fibonacci
Sobreposição de Subproblemas
Fibonacci
Implementação Iterativa
fib2.py
Fibonacci
Implementação Recursiva + Cache
fib3.py
Fibonacci
Implementação Recursiva + Cache + Decorator
fib4.py
Fibonacci
Implementação Recursiva + Functools
fib5.py
Distância de Edição
Distância de Edição
Matriz de Memoização
Distância de Edição
Distância de Edição
Implementação Recursiva
edit_distance.py
Distância de Edição
Implementação Recursiva + cache decorator
edit_distance2.py
Distância de Edição
Implementação Iterativa
edit_distance3.py
Alinhamento de Sequências de DNA
Distâ palavras n e m geralmente são < 10
Sequências de DNA podem ter Gigabytes de
informação
Bônus: Dynamic Time Warping (DTW)
Usado para alinhamento de
séries temporais.
Ver: https://en.wikipedia.org/wiki/Dynamic_time_warping
Mais a respeito do tema
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-sc
ience-and-programming-fall-2008/video-lectures/lecture-13/
http://www.geeksforgeeks.org/dynamic-programming-set-5-edit-distance/
https://people.eecs.berkeley.edu/~vazirani/algorithms/chap6.pdf
Como eu chego lá? Preparação
"Se mantenha curioso" – Aron Swartz
Ajude a Treinar Jedis
Desafios
"The brick walls are not there to keep us out; the brick walls are there to give us a
chance to show how badly we want something." – Randy Pausch
Obrigado!
Email: seocam@seocam.com
Telegram/Twitter/Github: @seocam

Mais conteúdo relacionado

Destaque (12)

Ljubov på stationen
Ljubov på stationenLjubov på stationen
Ljubov på stationen
 
Interview shuffle reading
Interview shuffle readingInterview shuffle reading
Interview shuffle reading
 
Wb1-1
Wb1-1Wb1-1
Wb1-1
 
Presentation kharrat-esiam-original
Presentation   kharrat-esiam-originalPresentation   kharrat-esiam-original
Presentation kharrat-esiam-original
 
Training
TrainingTraining
Training
 
Diploma general studies
Diploma general studiesDiploma general studies
Diploma general studies
 
Sesión 2 taller de PDI zona Alhaurín
Sesión 2 taller de PDI zona AlhaurínSesión 2 taller de PDI zona Alhaurín
Sesión 2 taller de PDI zona Alhaurín
 
Google Plus For Business
Google Plus For BusinessGoogle Plus For Business
Google Plus For Business
 
Disseny, gestió i avaluació de projectes culturals per a biblioteques
Disseny, gestió i avaluació de projectes culturals per a bibliotequesDisseny, gestió i avaluació de projectes culturals per a biblioteques
Disseny, gestió i avaluació de projectes culturals per a biblioteques
 
Stratégie web ONLYLYON Tourisme
Stratégie web ONLYLYON TourismeStratégie web ONLYLYON Tourisme
Stratégie web ONLYLYON Tourisme
 
Apresentação de resultados 1 t10
Apresentação de resultados 1 t10Apresentação de resultados 1 t10
Apresentação de resultados 1 t10
 
Los usos pedagógicos y didácticos de los recursos y aplicaciones informáticas.
Los usos pedagógicos  y didácticos de los  recursos y aplicaciones informáticas.Los usos pedagógicos  y didácticos de los  recursos y aplicaciones informáticas.
Los usos pedagógicos y didácticos de los recursos y aplicaciones informáticas.
 

Semelhante a Python Brasil 12 - Overlapping Subproblems

TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?Diego Pacheco
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Jonathan Prates
 
apresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allapresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allRosibertoGonalves
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Flávio Ribeiro
 
Menos reunião e mais post-it: Kanban na prática
Menos reunião e mais post-it: Kanban na práticaMenos reunião e mais post-it: Kanban na prática
Menos reunião e mais post-it: Kanban na práticaRodrigo Vieira
 
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de SoftwareDextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de SoftwareDextra
 
Docker - Colocando aplicações em produção
Docker  - Colocando aplicações em produçãoDocker  - Colocando aplicações em produção
Docker - Colocando aplicações em produçãoRafael Chiavegatto
 
Lean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de TecnologiaLean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de TecnologiaRodrigo Yoshima
 
PHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerPHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerLeonardo Tumadjian
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaMarcelo Fleury
 
Senid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
Senid2016 - Oficina de LibreLogo - Prof. Gilvan VilarmSenid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
Senid2016 - Oficina de LibreLogo - Prof. Gilvan VilarmGilvan Vilarim
 

Semelhante a Python Brasil 12 - Overlapping Subproblems (20)

TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?
 
Webinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros ÁgeisWebinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros Ágeis
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
 
Curso de Python.ppt
Curso de Python.pptCurso de Python.ppt
Curso de Python.ppt
 
apresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allapresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for all
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
 
Menos reunião e mais post-it: Kanban na prática
Menos reunião e mais post-it: Kanban na práticaMenos reunião e mais post-it: Kanban na prática
Menos reunião e mais post-it: Kanban na prática
 
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de SoftwareDextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
Dextra Sistemas: A linguagem PHP no modelo de Fábrica de Software
 
Bdd e ci
Bdd e ciBdd e ci
Bdd e ci
 
E so mais um campinho na tela
E so mais um campinho na telaE so mais um campinho na tela
E so mais um campinho na tela
 
Testes automatizados - Agile Day
Testes automatizados -  Agile DayTestes automatizados -  Agile Day
Testes automatizados - Agile Day
 
Docker - Colocando aplicações em produção
Docker  - Colocando aplicações em produçãoDocker  - Colocando aplicações em produção
Docker - Colocando aplicações em produção
 
Lean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de TecnologiaLean, Kanban e Kaizen para sua área de Tecnologia
Lean, Kanban e Kaizen para sua área de Tecnologia
 
PHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerPHP de alta performance com RoadRunner
PHP de alta performance com RoadRunner
 
Metodos ageis thinkingdifferent
Metodos ageis thinkingdifferentMetodos ageis thinkingdifferent
Metodos ageis thinkingdifferent
 
EuRobo
EuRoboEuRobo
EuRobo
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A Pena
 
DevOps - Operação contínua
DevOps - Operação contínuaDevOps - Operação contínua
DevOps - Operação contínua
 
Senid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
Senid2016 - Oficina de LibreLogo - Prof. Gilvan VilarmSenid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
Senid2016 - Oficina de LibreLogo - Prof. Gilvan Vilarm
 
Devcamp 2015
Devcamp 2015Devcamp 2015
Devcamp 2015
 

Python Brasil 12 - Overlapping Subproblems