python brasil 12 - overlapping subproblems

31
Dynamic Programming and Overlapping Subproblems Sérgio Oliveira Campos Python Brasil 12 15 de outubro de 2016

Upload: sergio-oliveira

Post on 19-Feb-2017

119 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Python Brasil 12 - Overlapping Subproblems

Dynamic Programming andOverlapping Subproblems

Sérgio Oliveira Campos

Python Brasil 1215 de outubro de 2016

Page 2: Python Brasil 12 - Overlapping Subproblems

Sobre o Sérgio (seocam)● Programador

● Pythonista

● Curte Open Source

● Algo mais que vale ser dito?

Page 3: Python Brasil 12 - Overlapping Subproblems
Page 4: Python Brasil 12 - Overlapping Subproblems

Crave Food Services

Page 5: Python Brasil 12 - Overlapping Subproblems
Page 6: Python Brasil 12 - Overlapping Subproblems
Page 7: Python Brasil 12 - Overlapping Subproblems

Estamos contratando!

http://crave.workable.com

Page 8: Python Brasil 12 - Overlapping Subproblems

Grupy-RP / Caipyra

https://www.youtube.com/watch?v=YOT9i_4lLHs

Page 9: Python Brasil 12 - Overlapping Subproblems

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çãodinâmica o primeiro passo é encontrar a sua relação de recorrência.

Page 10: Python Brasil 12 - Overlapping Subproblems

Fibonacci

1 1 2 3 5 8 13 21 34 55 89 144

Page 11: Python Brasil 12 - Overlapping Subproblems

Fibonacci

Page 12: Python Brasil 12 - Overlapping Subproblems

FibonacciImplementação Recursiva

fib1.py

Page 13: Python Brasil 12 - Overlapping Subproblems

FibonacciSobreposição de Subproblemas

Page 14: Python Brasil 12 - Overlapping Subproblems

FibonacciImplementação Iterativa

fib2.py

Page 15: Python Brasil 12 - Overlapping Subproblems

FibonacciImplementação Recursiva + Cache

fib3.py

Page 16: Python Brasil 12 - Overlapping Subproblems

FibonacciImplementação Recursiva + Cache + Decorator

fib4.py

Page 17: Python Brasil 12 - Overlapping Subproblems

FibonacciImplementação Recursiva + Functools

fib5.py

Page 18: Python Brasil 12 - Overlapping Subproblems

Distância de Edição

Page 19: Python Brasil 12 - Overlapping Subproblems

Distância de EdiçãoMatriz de Memoização

Page 20: Python Brasil 12 - Overlapping Subproblems

Distância de Edição

Page 21: Python Brasil 12 - Overlapping Subproblems

Distância de EdiçãoImplementação Recursiva

edit_distance.py

Page 22: Python Brasil 12 - Overlapping Subproblems

Distância de EdiçãoImplementação Recursiva + cache decorator

edit_distance2.py

Page 23: Python Brasil 12 - Overlapping Subproblems

Distância de EdiçãoImplementação Iterativa

edit_distance3.py

Page 24: Python Brasil 12 - Overlapping Subproblems

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

Page 25: Python Brasil 12 - Overlapping Subproblems

Bônus: Dynamic Time Warping (DTW)

Usado para alinhamento de séries temporais.

Ver: https://en.wikipedia.org/wiki/Dynamic_time_warping

Page 27: Python Brasil 12 - Overlapping Subproblems

Como eu chego lá? Preparação

"Se mantenha curioso" – Aron Swartz

Page 28: Python Brasil 12 - Overlapping Subproblems

Ajude a Treinar Jedis

Page 29: Python Brasil 12 - Overlapping Subproblems
Page 30: Python Brasil 12 - Overlapping Subproblems

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

Page 31: Python Brasil 12 - Overlapping Subproblems

Obrigado!

Email: [email protected]

Telegram/Twitter/Github: @seocam