BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 Avisos 2 Avisos Prova no dia 07 de Junho (em 11 dias). 3 Na aula anterior • Backtracking. 4 Na aula de hoje • Programação Dinâmica. 5 Programação Dinâmica • A Programação Dinâmica é uma ferramenta geral muito poderosa para resolver problemas combinatórios que possuem elementos com uma certa ordenação esquerda-para-direita – Como strings. • Uma vez compreendida, torna-se relativamente fácil de ser aplicada. • Programação Dinâmica parece mágica até que você tenha visto exemplos o suficiente – Vamos ver um exemplo clássico de programação dinâmica então! 6 Coeficientes Binomiais • A mais importante classe de contagem são os coeficientes binomiais (ou binômios de Newton) n ( ) – Em que conta o número de formas em que k podemos escolher k itens entre n possibilidades; • O que pode ser contado? – Comitês; – Caminhos em uma grade; – Coeficientes de (a-b)n; – O triângulo de Pascal; – Etc. 7 Coeficientes Binomiais • Quantas formas existem para formarmos um comitê com k membros, se temos n pessoas? n ( ) – A resposta é . k 8 Coeficientes Binomiais • Quantas formas existem para nos deslocarmos do canto superior esquerdo de uma grade n×m até o canto inferior direito, andando apenas para baixo e para a direita? – Cada caminho deve consistir de n+m passos, n para baixo e m para a direita; – Cada caminho com um conjunto diferente de passos para baixo é diferente; – Então a quantidade de tais conjuntos ou n+m ( ) caminhos é . n 9 Coeficientes Binomiais • Considere (a+b)n; • Observe que (a+b)3=1a3+3a2b+3ab2+1b3 • Qual é o coeficiente do termo akbn-k? n ( ) – ; k – Porque esta é a contagem da quantidade de formas que podemos escolher os k termos a dentre as n possibilidades; – Ou ainda, podemos interpretar este número como sendo a quantidade de vezes em que cada multiplicação ocorre na expansão da expressão algébrica. 10
Description: