Programação Dinâmica. Prof. Anderson Almeida Ferreira. Adaptado do material elaborado por Andrea Iabrudi Tavares

Documentos relacionados
Teoria dos Grafos Aula 24

Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica. Gabriel Rosa Guilherme Alves

Teoria dos Grafos Aula 23

Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

4 Casamento de Padrões

Árvore Binária de Busca Ótima

AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO

Teoria dos Grafos Aula 8

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Subsequência comum mais longa Em inglês, Longest Common Subsequence (LCS)

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica. Prof. Humberto Brandão

Programação Dinâmica: Modelos Determinísticos

DAINF - Departamento de Informática

Programação Dinâmica. Programa do PA. Técnicas Avançadas de Projeto. Aulas Anteriores. Introdução. Plano de Aula. Técnicas de Projeto de Algoritmos

Análise de Algoritmos

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

5COP096 TeoriadaComputação

Paradigmas de Projeto de Algoritmos

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas

Árvores: Conceitos Básicos e Árvore Geradora

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

Análise de Algoritmos Parte 4

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Recursão. Prof. Cristiano André da Costa. [Versão de Março de 2000] Definição

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

Correção Ortográfica. Processamento Estatístico da Linguagem Natural. Correção de Erros. Distância Mínima de Edição. Distância Mínima de Edição

Exemplo: Maximização de lucros em uma chocolateria que produz os seguintes produtos: (1) Chocolate Pyramide (2) Chocolate Pyramide Nuit

SCC Capítulo 6 Paradigmas e Técnicas de Projetos de Algoritmos

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Listas de Prioridade. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC.

Pesquisa Operacional

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

Teoria dos Grafos. Aula 5 - Estruturas de Dados para Grafos. Profª. Alessandra Martins Coelho. março/2013

Tecnicas Essencias Greedy e Dynamic

Teoria dos Grafos Aula 6

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Teoria dos Grafos Aula 5

Paradigmas de Projeto de Algoritmos

Projeto de Algoritmos e Indução Matemática

Algoritmos Greedy. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/ / 40

INF1010 Lista de Exercícios 2

Recursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul

Recursividade. Recursividade

ESTRUTURA DE DADOS (TCC )

O Problema do Fluxo de Custos Mínimos Terça-feira 2 de abril. O Problema do Caminho mais Curto. Fórmula. Outra Fórmula

04 Recursão SCC201/501 - Introdução à Ciência de Computação II

Estrutura de Dados. ! Listas lineares. ! Como manipulá-las: ! estática. ! dinâmicas. ! pilhas. ! filas

AULA 24. Algoritmos p.856/905

BC1424 Algoritmos e Estruturas de Dados I Aula 03: Recursão / Recursividade

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

CONCEITO DE ÁRVORE CES-11. A raiz é o único nó que não possui ancestrais. As folhas são os nós sem filhos. Exemplos:

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Paradigmas de Projeto de Algoritmos

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

Paradigmas de Projeto de Algoritmos

Python: Recursão. Claudio Esperança

Aprendizado de Máquina

Estratégias de Busca: Métodos Informados. March 9, 2015

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

Estruturas de Dados 2

Fundamentos de Programação

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Maratona de Programação da SBC 2016

Inteligência Artificial

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

Licenciatura em Informática Introdução a Ciência dos Computadores 1º Ano

Teoria dos Grafos Aula 18

Lista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 2 1: Figura 2 2: Figura 2 3: Figura 2 4:

INF111 Programação II Aulas 11, 12, 13 Ordenação

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Introdução à Programação Aula 16 Mais exemplos de recursão

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Quantidade de memória necessária

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

5 Análise de Sensibilidade

Algoritmos e Programação. AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO

Busca em Profundidade e em Largura

2 Casamento Inexato, Alinhamento de Sequências e Programação DRAFT

Recursividade UFOP 1/48

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá

Árvores Binárias de Busca

Árvores B (Parte III)

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II

Programação Funcional Aulas 5 & 6

Algoritmos de ordenação Heapsort

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

Aula 10: Tratabilidade

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder

Estruturas de Dados Pilhas, Filas, Listas

Distorções Dinâmicas no Tempo & Pesquisa. Distorção dinâmica no tempo Pesquisa Algoritmos gráficos de pesquisa Algoritmos de programação dinâmica

Teoria dos Grafos. Caminho mínimo - Algoritmo de Dijskstra

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

Projeto e Análise de Algoritmos

Problema de Designação. Fernando Nogueira Problema de Designação 1

Transcrição:

Programação Dinâmica Prof. Anderson Almeida Ferreira Adaptado do material elaborado por Andrea Iabrudi Tavares

Programação Dinâmica 1950, Bellman Evitar recálculos dos subproblemas em comum Menor para maior (bottom-up) Tabelas ou memorização É uma técnica de programação Foi desenvolvida na época em que programação significava método tabular. Usada para problemas de otimização Encontre a solução a com o valor ótimo. Minimizar ou maximizar

Programação Dinâmica Quatro passos do método Caracterize a estrutura de uma solução ótima. Recursivamente defina o valor de uma solução ótima. Compute o valor de uma solução ótima de maneira bottom-up. Construa a solução ótima por meio da informação computada.

Fibonacci: definindo recorrência Grafo de recorrência Subproblemas nós Dependência arestas BCC241/2011-2 4

Fibonacci: definindo recursão Grafo de recorrência Subproblemas nós Dependência arestas Memorização BCC241/2011-2 5

Fibonacci: definindo recursão Grafo de recorrência Subproblemas nós Dependência arestas Memorização BCC241/2011-2 6

Fibonacci: usando tabela Grafo de recorrência Subproblemas nós Dependência arestas Memorização BCC241/2011-2 7

Fibonacci: usando tabela Grafo de recorrência Subproblemas nós Dependência arestas Memorização Tabela Ordenação parcial BCC241/2011-2 8

Fibonacci: economizando espaço Grafo de recorrência Subproblemas nós Dependência arestas Memorização Tabela Ordenação parcial Economizando memória BCC241/2011-2 9

Problemas alvo para Programação Dinâmica (PD) Problema pode ser dividido em subproblemas menores. Sub-estrutura ótima (princípio da otimalidade) Solução ótima do problema inclui soluções ótimas dos subproblemas. Subproblemas são sobrepostos. Número pequeno de subproblemas distintos.

Linearização de Grafos Direcionados Acíclicos (DAGs) Algoritmo de Linearização: Percorrer vértices na ordem de grau de entrada. Diminuir das arestas a cada passo.

Recorrência a partir de DAGs

Algoritmo de menor caminho em DAGs Subproblemas Menores Subestrutura Ótima

Subsequência Crescente Mais Longa Problema: Dada uma sequência de números naturais, definir qual a subsequência crescente com mais elementos.

MSC: Recorrência e DAG implícito

SCML: Recorrência Etapa1: Maior caminho em DAG SCML max{ L( 1 j n j)}

Etapa 2: Algoritmo Recursivo

Etapa 3: Algoritmo Iterativo (Tabela) Vetor L, preenchido da menor posição para maior.

Etapa 3: Complexidade

Etapa 4: Construindo solução

Distância de Edição Transformar uma sequência em outra ao menor custo. Casamento, substituição, inserção, remoção. SITUADO ESTUDO- -SITUADO ES-TU-DO

Edição: Subproblemas Problema: Alinhar duas sequências de caracteres

Etapa 1: Equação de Recorrência Problema: Alinhar duas sequências de caracteres Subproblema: alinhamento de prefixos Composição: inserir, remover, casar

Distância de Edição - DAG

Etapa 2: Algoritmo Recursivo

Etapa 3: Algoritmo Iterativo 27

Etapa 3: Complexidade Θ(mn) de tempo e espaço

Distância de Edição - Exemplo P O L I N O M I A L E X P O N E N C I A L

Etapa 4: Solução I armazenar

Etapa 4: Solução I calcular

Problema da mochila Ladrão está com uma mochila que suporta no máximo 10 quilos e quer o maior lucro possível

Problema da mochila Ladrão está com uma mochila que suporta no máximo 10 quilos e quer o maior lucro possível

Etapa 1: Equação de Recorrência K( w, j)

Etapa 1: Equação de Recorrência K( w, j)

w w j w j 1 j K w, j max K w, j 1, K w w, j 1 j v j

Etapa 2: Algoritmo Recursivo

Etapa 3: Algoritmo Iterativo

Etapa 3: Complexidade Somente para valores inteiros Θ(Wn) 40

Etapa 4: Solução

Exemplo Linha de montagem

Exemplo Montadora de veículos com duas linhas de montagem Cada linha tem n estações: S 1,1,..., S 1,n and S 2,1,..., S 2,n. Estações correspondentes S 1,j e S 2,j possuem a mesma função, mas podem ter tempo de execução diferentes, a 1,j e a 2,j. Tempos de entrada: e 1 e e 2. Tempos de saída: x 1 e x 2. Para chegar a uma estação: Ficando na mesma linha nenhum custo Transferido de outra linha depois da estação S i,j é t i,j.

Exemplo Problema Que estações das linhas 1 e 2 devem ser escolhidas para ter uma fabricação mais rápida? Tentar todas as possibilidades? Cada candidato pode ser completamente especificado por quais estações da linha 1 são incluídas. Linha 1 tem n estações 2 n subconjuntos

Exemplo Estrutura de uma solução ótima Pense em uma maneira rápida da entrada até a estação S 1,j. Se j=1, fácil Se j>= 2, há duas opções De S 1,j-1 De S 2,j-1

Exemplo Observação chave: Nós devemos ter um caminho rápido da entrada até S i,j-1 nesta solução. Se uma maneira rápida de chegar é por meio de S 1,j-1, nós podemos usá-la para chegar a S 1,j. Se uma maneira rápida de chegar é por meio de S 2,j-1, nós podemos usá-la para chegar a S 1,j.

Exemplo Geralmente: Uma solução ótima para um problema (maneira rápida de chegar a S 1,j ) contém com ele uma solução ótima para os subproblemas (maneiras rápidas de chegar a S 1,j-1 ou S 2,j-1 ). Isto é uma subestrutura ótima.

Subestrutura ótima Use subestruturas ótimas para construir soluções ótimas para problemas, por meio de soluções ótimas de subproblemas. Maneira rápida de chegar a S i,j : S 1,j-1, então vá diretamente para S 1,j, ou S 2,j-1, transfira da linha 2 para a 1 e então vá para S 1,j

Solução Recursiva Seja f i [ j ] = o tempo mais rápido até a estação S i, j, i = 1, 2 and j = 1,..., n. Meta: f = min( f 1 [n] + x 1, f 2 [n] + x 2 ) f 1 [1] = e 1 + a 1,1 f 2 [1] = e 2 + a 2,1 For j = 2,..., n: f 1 [ j ] = min( f 1 [ j 1] + a 1, j, f 2 [ j 1] + t 2, j 1 + a 1, j ) f 2 [ j ] = min( f 2 [ j 1] + a 2, j, f 1 [ j 1] + t 1, j 1 + a 2, j )

f * dá o valor da solução ótima. E se quisermos construir a solução ótima? l i [ j ] = número da linha (1 ou 2) cuja estação j 1 é usada para chegar a S i, j. S li [ j ], j 1 precede S i, j. l = número da linha da estação n usada.

FASTEST-WAY(a, t, e, x, n) f1[1] e1 + a1,1 f2[1] e2 + a2,1 for j 2 to n do if f 1 [ j 1] + a 1, j f 2 [ j 1] + t 2, j 1 + a 1, j then f 1 [ j ] f 1 [ j 1] + a 1, j l 1 [ j ] 1 else f 1 [ j ] f 2 [ j 1] + t 2, j 1 + a 1, j l 1 [ j ] 2 if f 2 [ j 1] + a 2, j f 1 [ j 1] + t 1, j 1 + a 2, j then f 2 [ j ] f 2 [ j 1] + a 2, j l 2 [ j ] 2 else f 2 [ j ] f 1 [ j 1] + t 1, j 1 + a 2, j l 2 [ j ] 1 if f 1 [n] + x 1 f 2 [n] + x 2 then f = f 1 [n] + x 1 l* = 1 else f = f 2 [n] + x 2 l = 2

Construindo a solução ótima PRINT-STATIONS(l, n) i l print linha i, estação n for j n downto 2 do i l i [ j ] print linha i, estação j 1

Considerações Finais Diferença entre PD e D&C Sobreposição de problemas Definição da Equação de Recorrência Grafo induzido Automatização dos passos Memorização