CAL ( ) - MIEIC/FEUP Programação Dinâmica ( )
|
|
- Augusto Leão Balsemão
- 6 Há anos
- Visualizações:
Transcrição
1 AL (-) - MIEI/FEUP Programação Dinâmica (--4) Técnicas de oncepção de Algoritmos (ª parte): programação dinâmica R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes AL, MIEI, FEUP Fevereiro de Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Programação dinâmica (dynamic programming) Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Técnicas de oncepção de Algoritmos./rr()
2 AL (-) - MIEI/FEUP Programação Dinâmica (--4) Aplicabilidade e abordagem Problemas resolúveis recursivamente (solução é uma combinação de soluções de subproblemas similares) Mas em que a resolução recursiva directa duplicaria trabalho (resolução repetida do mesmo subproblema) Abordagem: º) Economizar tempo (evitar repetir trabalho), memorizando as soluções parciais dos sub-problemas (gastando memória!) º) Economizar memória, resolvendo sub-problemas por ordem que minimiza nº de soluções parciais a memorizar (bottom-up, começando pelos casos base) Termo Programação vem da Investigação Operacional, no sentido de formular restrições ao problema que tornam um método aplicável Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Exemplo: n k, versão recursiva 4 int comb(int n, int k) { if (k == k == n) return ; else return comb(n-, k) + comb(n-, k-); } Executa n k - vezes (nº de somas a efectuar é nº de parcelas -) Executa n k vezes (nº de s / parcelas que é preciso somar ) Executa n k - vezes para calcular n k!! Pode-se melhorar muito, evitando repetição de trabalho (cálculos intermédios i j ) Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Técnicas de oncepção de Algoritmos./rr()
3 AL (-) - MIEI/FEUP Programação Dinâmica (--4) n k repetição de trabalho 5 5 = nós/chamadas! 8 chamadas duplicadas! Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de n k - Programação dinâmica 6 Memorização de soluções parciais: n k k= k= K= K= K=4 k=5 n= n= n= i n= j n= n=5 5 5 Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Técnicas de oncepção de Algoritmos./rr()
4 AL (-) - MIEI/FEUP Programação Dinâmica (--4) Implementação Guardar apenas uma coluna, e calcular da esq. para dir. (também se podia guardar linha e calc. cima p/ baixo): static final int MAXN = 5; static int c[] = new int[maxn+]; T(n,k) = O(k(n-k)) int comb(int n, int k) { S(n,k) = O(n-k) int maxj = n - k; for (int j = ; j <= maxj; j++) c[j] = ; n-k+ vezes for (int i = ; i <= k; i++) for (int j = ; j <= maxj; j++) k(n-k) vezes c[j] += c[j-]; return c[maxj]; } Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de 7 Problema da mochila 8 Um ladrão encontra o cofre cheio de itens de vários tamanhos e valores, mas tem apenas uma mochila de capacidade limitada; qual a combinação de itens que deve levar para maximizar o valor do roubo? Tamanhos e capacidades inteiros Vamos assumir nº ilimitado de itens de cada tipo Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Técnicas de oncepção de Algoritmos./rr(4)
5 AL (-) - MIEI/FEUP Programação Dinâmica (--4) Exemplo 9 Itens Tamanho apacidade da mochila: 7 Valor 4 Nome A 5 B D E Uma solução óptima: 7 7 Outra solução óptima: A D E Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Estratégia de prog. dinâmica alcular a melhor combinação para todas as mochilas de capacidade até M (capacidade pretendida) omeçar por considerar que só se pode usar o item, depois os itens e, etc., e finalmente todos os itens de a N (N = nº de itens) álculo é eficiente em tempo e espaço se efectuado pela ordem apropriada Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Técnicas de oncepção de Algoritmos./rr(5)
6 AL (-) - MIEI/FEUP Programação Dinâmica (--4) Dados Entradas: N nº de itens (com nº de cópias ilimitado de cada item) size[i] ( i N) tamanho (inteiro) do item i val[i] ( i N) valor do item i M capacidade da mochila (inteiro) Dados de trabalho, no final de cada iteração i (de a N) cost[k] ( k M) melhor valor que se consegue com mochila de capacidade k, usando apenas itens de a i best[k] ( k M) último item seleccionado p/ obter melhor valor com mochila de capac. k, usando apenas itens de a i Dados de saída: cost[m] melhor valor que se consegue c/ mochila de cap. M best[m], best[m-size[best[m]], size[best[m]], etc. itens seleccionados Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Formulação recursiva aso base (i = ; k =,, M): cost[ k] best[ k] () () = = aso recursivo (i =,, N; k =,, M) : ( cost[ k] ( best[ k] i) i) size[ i] k ( i) val[ i] + cost[ k -size[ i]], se = ( i) ( val[ i] + cost[ k -size[ i]] > cost[ k] ( i ) cost[ k], no caso contrário i, no primeiro caso acima (usa o item i) = ( i ) best[ k], no segundo caso acima (não usa o item i) Encher o resto i ) Permite usar repetidamente o item i (senão, escrevíamos i-) Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Técnicas de oncepção de Algoritmos./rr(6)
7 AL (-) - MIEI/FEUP Programação Dinâmica (--4) odificação Tempo: T(N,M) = O(NM) Espaço: S(N,M) = O(M) int[] cost = new int[m+]; // iniciado c/ s int[] best = new int[m+]; // iniciado c/ s for (int i = ; i <= N; i++ ) for (int k = size[i]; k <= M; k++) if (val[i] + cost[k-size[i]] > cost[k]) { cost[k] = val[i] + cost[k-size[i]]; best[k] = i; omo k é percorrido por ordem crescente } cost[k-size[i]] já tem o valor da iteração i // impressão de resultados (valor e itens) print(cost[m]); for (int k = M; k > ; k -= size[best[k]]) print(best[k]); Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de *Evolução dos dados de trabalho 4 i size val k cost[k] best[k] 4 cost[k] best[k] 4 5 cost[k] best[k] 7 cost[k] best[k] 4 8 cost[k] best[k] cost[k] best[k] Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Técnicas de oncepção de Algoritmos./rr(7)
8 AL (-) - MIEI/FEUP Programação Dinâmica (--4) * Subsequência crescente mais comprida 5 Exemplo: Sequência S = (9, 5,, 8, 7,,, 6, 4) Subsequência crescente mais comprida (elem s não necessariamente contíguos): (,, 4) ou (,, 6) Formulação: s,, s n - sequência l i compr. da maior subseq. crescente de (s,, s i ) p i predecessor de s i nessa subsequência crescente l i = + max { l k < k < i s k < s i } (max{ } = ) p i = valor de k escolhido para o máx. na expr. de l i omprimento final: max(l i ) Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de * álculo para o exemplo dado 6 i Sequência si Tamanho li Predecessor pi Resposta: (,, 6) Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Técnicas de oncepção de Algoritmos./rr(8)
9 AL (-) - MIEI/FEUP Programação Dinâmica (--4) * Números de Fibonacci 7 Formulação recursiva: F() = F() = F(n) = F(n-) + F(n-), n > Para calcular F(n), basta memorizar os dois últimos elementos da sequência para calcular o seguinte: int Fib(int n) { int a =, b = ; // F(-), F() for (int i=; i <= n; i++) {int t = a; a = b; b += t; } return b; } Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Referências 8 Mark Allen Weiss. Data Structures & Algorithm Analysis in Java. Addison-Wesley, 999 Steven S. Skiena. The Algorithm Design Manual. Springer 998 Robert Sedgewick. Algorithms in ++. Addison-Wesley, 99 Slides de Maria ristina Ribeiro Técnicas de oncepção de Algoritmos, AL MIEI/FEUP, Fev. de Técnicas de oncepção de Algoritmos./rr(9)
Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos
1 Técnicas de Concepção de Algoritmos (1ª parte): divisão e conquista R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes CAL, MIEIC, FEUP Fevereiro de 2011 2 Divisão e Conquista (divide and
Leia maisCAL ( ) MIEIC/FEUP Técnicas de Concepção de Algoritmos, CAL MIEIC/FEUP, Fev. de Técnicas de Concepção de Algoritmos. .
1 Técnicas de Concepção de Algoritmos (1ª parte): algoritmos gananciosos R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes CAL, MIEIC, FEUP Fevereiro de 2011 2 Algoritmos gananciosos (greedy
Leia maisDesafios de Programação
Desafios de Programação 2018.1 Programação Dinâmica É um método de projeto de algoritmos que utiliza a memorização para melhorar a eficiência de um algoritmo. Método parecido com o de divisão e conquista
Leia maisProgramação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante
Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante Introdução Soma máxima de uma subsequência contígua Problema do troco Quantidade de formas de dar troco Problema da
Leia maisTécnicas de Desenho de Algoritmos
Técnicas de Desenho de Algoritmos Mudança de ênfase: da implementação de algoritmos para o desenho de algoritmos A ver: 5 tipos de algoritmos abordagem ao problema exemplos complexidade em tempo e espaço
Leia maisTécnicas de Desenho de Algoritmos
Técnicas de Desenho de Algoritmos Mudança de ênfase: da implementação de algoritmos para o desenho de algoritmos A ver: 5 tipos de algoritmos abordagem ao problema exemplos complexidade em tempo e espaço
Leia maisTécnicas de Desenho de Algoritmos
Técnicas de Desenho de Algoritmos Mudança de ênfase: da implementação de algoritmos para o desenho de algoritmos A ver: 5 tipos de algoritmos abordagem ao problema exemplos complexidade em tempo e espaço
Leia maisAnálise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15
Análise e Síntese de Algoritmos Programação Dinâmica CLRS, Cap. 15 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap. 22-26] Algoritmos elementares Árvores abrangentes Caminhos mais curtos
Leia maisFernando Lobo. Algoritmos e Estrutura de Dados. Outra técnica de concepção de algoritmos, tal como Divisão e Conquista.
Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados 1 / 56 Programação Dinâmica Outra técnica de concepção de algoritmos, tal como Divisão e Conquista. O termo Programação Dinâmica é um
Leia maisComparação com Divisão e Conquista
Programação Dinâmica Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados II Outra técnica de concepção de algoritmos, tal como Divisão e Conquista ou Estratégias Greedy. O termo Programação
Leia maisO termo Programação Dinâmica é um bocado infeliz.
Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 18 Programação Dinâmica Outra técnica de concepção de algoritmos, tal como Divisão e Conquista ou Estratégias Greedy. O termo Programação
Leia maisProgramação Dinâmica. Prof. Anderson Almeida Ferreira
Programação Dinâmica Prof. Anderson Almeida Ferreira 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
Leia maisProgramação Dinâmica. Prof. Anderson Almeida Ferreira. Adaptado do material elaborado por Andrea Iabrudi Tavares
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
Leia maisAlgoritmos em Strings
Algoritmos em Strings R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CAL, 2010/2011 1 Índice Pesquisa exacta (string matching) Pesquisa aproximada (approximate string matching)
Leia maisBacktracking( ) CAL ( ) MIEIC/FEUP. ./rr(1) Técnicas de Concepção de Algoritmos
CAL (1-11) MIEIC/FEUP Backtracking(11--) 1 Técnicas de Concepção de Algoritmos (1ª parte): algoritmos de retrocesso R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes CAL, MIEIC, FEUP Fevereiro
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 05 Técnicas de Projeto de Algoritmos (Programação Dinâmica) Edirlei Soares de Lima Estratégias de Projeto de Algoritmos Força Bruta (Brute Force)
Leia mais5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)
5. Análise de Complexidade de Algoritmos João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog 2-2006/2007 Introdução Algoritmo: conjunto
Leia maisRecursividade. Prof. Jesus José de Oliveira Neto
Recursividade Prof. Jesus José de Oliveira Neto Algoritmos podem ser definidos de duas formas: Forma iterativa ou não recursiva: utiliza laços de repetição (while, for, do/while) Forma recursiva: métodos
Leia maisAnálise de Complexidade de Algoritmos
Análise de Complexidade de Algoritmos Algoritmos e Estruturas de Dados 2009/2010 Introdução Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema Análise de algoritmos:
Leia maisDivisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder
Divisão e Conquista Norton T. Roman Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Construção incremental Ex: Consiste em, inicialmente, resolver
Leia maisTécnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 08/2008
Leia maisAlgoritmos e Estruturas de Dados I Linguagem C
Algoritmos e Estruturas de Dados I (DCC/003) Algoritmos e Estruturas de Dados I Linguagem C Aula Tópico 11 Recursividade 1 Recursão Na linguagem C, uma função pode chamar outra função. A função main()
Leia maisEstruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma
Leia maisProgramação Dinâmica. Aplicação directa - Fibonacci
Programação Dinâmica Divisão e conquista: problema é partido em subproblemas que se resolvem separadamente; solução obtida por combinação das soluções Programação dinâmica: resolvem-se os problemas de
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br
Leia mais3. Vectores: Algoritmos de Pesquisa. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006)
3. Vectores: Algoritmos de Pesquisa João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog2-2006/2007 Introdução Algoritmo: conjunto
Leia maisComplexidade de Algoritmos
Complexidade de Algoritmos Prof. Diego Buchinger diego.buchinger@outlook.com diego.buchinger@udesc.br Prof. Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br Abordagens para Resolução de Problemas
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 02 Técnicas de Projeto de Algoritmos (Força Bruta) Edirlei Soares de Lima Tipos Importantes de Problemas Problemas de Ordenação: Reorganizar
Leia maisa) Defina uma função para obter o máximo entre dois números
IP, Resoluções comentadas, Semana 2 jrg, vs 002, Out-2012 a) Defina uma função para obter o máximo entre dois números A versão mais imediata talvez seja esta: public static int maior ( int a, int b ) {
Leia maisCAL ( ) MIEIC/FEUP Grafos: Introdução (Março, 2011)
1 Algoritmos em Grafos: Introdução R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes CAL, MIEIC, FEUP Março de 2011 Índice 2 Revisão de conceitos e definições Exemplificar aplicações Representação
Leia maisProgramação I Aula 16 Mais exemplos de recursão
Programação I Aula 16 Mais exemplos de recursão Pedro Vasconcelos DCC/FCUP 2018 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 16 Mais exemplos de recursão 2018 1 / 27 Nesta aula 1 Desenhar árvores 2
Leia maisFundamentos de programação
Fundamentos de programação Recursividade Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno O que é recursividade? Técnica baseada em divisão e conquista Buscar solucionar o problema dividindo
Leia maisSCC-601 Introdução à Ciência da Computação II. Ordenação e Complexidade Parte 3. Lucas Antiqueira
SCC-60 Introdução à Ciência da Computação II Ordenação e Complexidade Parte 3 Lucas Antiqueira Ordenação: Utiliza uma estrutura de dados chamada heap para ordenar. Um heap é um vetor (array) que representa
Leia maisProgramação Estruturada
Programação Estruturada Recursão Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Recursão Recursão 1 Recursão 2
Leia maisIntrodução à Programação / Programação I
Introdução à Programação / Programação I Aula 18: Definições recursivas Rita P. Ribeiro 2017/2018 Departamento de Ciência de Computadores Nesta aula 1. Definições recursivas 2. Exemplos INTRODUÇÃO À PROGRAMAÇÃO
Leia maisRecursividade. Objetivos do módulo. O que é recursividade
Recursividade Objetivos do módulo Discutir o conceito de recursividade Mostrar exemplos de situações onde recursividade é importante Discutir a diferença entre recursividade e iteração O que é recursividade
Leia maisAULA 15. Algoritmos p.600/637
AULA 15 Algoritmos p.600/637 Programação dinâmica CLRS 15.1 15.3 = recursão com tabela = transformação inteligente de recursão em iteração Algoritmos p.601/637 Programação dinâmica "Dynamic programming
Leia maisProblema de seleção de atividades. Aula 14. Exemplo. Algoritmos Gulosos. Algoritmos Gulosos. Intervalo: par ordenado de números
Problema de seleção de atividades Aula 14 Algoritmos Gulosos Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Intervalo: par ordenado de números [s[i],f[i]): início e fim do intervalo
Leia maisAnálise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (
Análise de Problemas Recursivos Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Lembrando de Recursividade Procedimento que chama a si mesmo Recursividade permite
Leia maisRecursão David Déharbe
Recursão David Déharbe 1 1 Objetivos da aula O conceito de recursão. Exemplos. Programação em C. 2 2 Roteiro da aula Revisão de funções; Motivação; Definição; Dois exemplos básicos; Recursão mútua; Dois
Leia maisFontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:
Fontes Bibliográficas Estruturas de Dados Aula 15: Árvores Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo 5; Estruturas
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Principais paradigmas do projeto de algoritmos - Recursividade - Tentativa e erro - Divisão e Conquista - Programação dinâmica - Algoritmos Gulosos e de Aproximação
Leia maisIntrodução à Programação
Introdução à Programação 1.Ano LCC-MIERSI DCC - FCUP Nelma Moreira Aula 12 Recursividade Recursão versus Iteração FACTORIAL outra vez! Muitas versões. n! = n (n - 1)... 1 int facti(int n){ int fac=n; while(--n>0){
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: funções Prof. Renato Pimentel 1 Subprogramas Subprograma: programa que auxilia o programa principal na realização de uma determinada
Leia maisAlgoritmos e Estruturas de Dados II LEIC
Algoritmos e Estruturas de Dados II Licenciatura em Engenharia Informática e Computação www.fe.up.pt/ rcamacho/cadeiras/aed2 LIACC/FEUP Universidade do Porto rcamacho@fe.up.pt Fevereiro 2005 Conteúdo da
Leia maisAULA TEÓRICA 10. Tema 9. Interface. Tema 10. Recursividade
AULA TEÓRICA 10 Tema 9. Interface Tema 10. Recursividade 1 Interface Uma interface é como uma classe que não pode ser instanciada. Seu objectivo é espicificar um conjunto de métodos que uma classe deverá
Leia maisEstrututas de Dados e Algoritmos. Estrutura de Dados e Algoritmos
Estruturas de Dados e Algoritmos Algoritmos conceitos básicos Algoritmo: Sequência de passos simples, claramente especificada, para resolver um determinado problema. Uma receita. Problemas e Algoritmos
Leia maisProgramação dinâmica. CLRS cap 15. = recursão com tabela = transformação inteligente de recursão em iteração
Programação dinâmica CLRS cap 15 = recursão com tabela = transformação inteligente de recursão em iteração Números de Fibonacci F 0 = 0 F 1 = 1 F n = F n 1 +F n 2 n 0 1 2 3 4 5 6 7 8 9 F n 0 1 1 2 3 5
Leia maisListas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de
Leia maisTécnicas de análise de algoritmos
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br
Leia maisTécnicas de Concepção de Algoritmos: Branch and Bound
Técnicas de Concepção de Algoritmos: R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CAL, 2010/2011 1 O que é? BB ou B&B é uma técnica de concepção de algoritmos genérica para
Leia maisCAL ( ) MIEIC/FEUP Estruturas de Dados ( )
Conjuntos Disjuntos R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CPAL, 2010/2011 1 Conjuntos Disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura
Leia maisALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS. Armanda Rodrigues 3 de Outubro 2011
ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS Armanda Rodrigues 3 de Outubro 2011 2 Análise de Algoritmos Temos até agora analisado soluções de problemas de forma intuitiva A análise
Leia maisFilas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014
Filas de prioridade Marcelo K. Albertini de Novembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover
Leia maisConceitos Básicos de C
Conceitos Básicos de C Bibliografia Problem Solving & Program design in C, Jeri R. Hanly e Elliot B. Kpffman, 3 a edição Data Structures and Algorithm Analysis in C, Mark Allen Weiss, 2 a edição, Addison-Wesley,
Leia maisÁrvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação
1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual
Leia maisProf. A. G. Silva. 25 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de / 35
INE5603 Introdução à POO Prof. A. G. Silva 25 de setembro de 2017 Prof. A. G. Silva INE5603 Introdução à POO 25 de setembro de 2017 1 / 35 Baseado em materiais da Recursividade Unisinos, Cesar Tacla (UTFPR),
Leia maisEstruturas de Dados Aula 14: Recursão
Estruturas de Dados Aula 14: Recursão Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 2; Estruturas de Dados e seus Algoritmos (Szwarefiter, et. al): Capítulo 1; Algorithms
Leia maisAlgoritmos e Estruturas de Dados I 01/2013. Vetores e Recursividade. Pedro O.S. Vaz de Melo
Algoritmos e Estruturas de Dados I 01/2013 Vetores e Recursividade Pedro O.S. Vaz de Melo Problema 1 Implemente uma função que classifique os elementos de um vetor em ordem crescente usando o algoritmo
Leia maisAlgoritmos e Estruturas de Dados II
Algoritmos e Estruturas de Dados II Grafos VI: Grafos Ponderados & Caminhos Mínimos (Bellman-Ford) Ricardo J. G. B. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis
Leia maisEstruturas de Dados Aula 14: Recursão 19/05/2011
Estruturas de Dados Aula 14: Recursão 19/05/2011 Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 2; Estruturas de Dados e seus Algoritmos (Szwarefiter, et. al): Capítulo 1;
Leia maisProva 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins
Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Indique na linha seguinte quatro das cinco questões abaixo que devem
Leia maisAlgoritmos e Estruturas de Dados
Algoritmos e Estruturas de Dados Prof. Yandre Maldonado - 1 RECURSIVIDADE Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 2 Um objeto é dito recursivo se ele consistir parcialmente ou
Leia maisINF 1010 Estruturas de Dados Avançadas. Árvores binárias
INF 1010 Estruturas de Dados Avançadas Árvores binárias 1 Árvore estrutura hierárquica: A B E F C D G A B C E F D G A B C D E F G (A (B (E, F)), C, (D (G))) 05/09/16 2 Árvore - definições árvore: nó raiz
Leia maisINF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 6 Ordenação de Vetores 01/10/2015 (c) Dept. Informática - PUC-Rio 1 Tópicos Introdução Ordenação bolha (bubble sort) Ordenação por seleção (selection sort) 01/10/2015 (c) Dept. Informática
Leia maisAnálise da Complexidade de Algoritmos
Análise da Complexidade de Algoritmos (revisões) Algoritmos e Estruturas de Dados II Licenciatura em Engenharia Informática e Computação www.fe.up.pt/ rcamacho/cadeiras/aed2 LIACC/FEUP Universidade do
Leia maisOrdenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I
Ordenação: QuickSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 15 Algoritmos e Estruturas de Dados I QuickSort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal
Leia maisUNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INTRODUÇÃO AOS ALGORITMOS E ESTRUTURAS DE DADOS Ano Lectivo 2016/2017
Programa da Unidade Curricular INTRODUÇÃO AOS ALGORITMOS E ESTRUTURAS DE DADOS Ano Lectivo 2016/2017 1. Unidade Orgânica Ciências da Economia e da Empresa (1º Ciclo) 2. Curso Engenharia Informática 3.
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 04 Técnicas de Projeto de Algoritmos (Método Guloso) Edirlei Soares de Lima Estratégias de Projeto de Algoritmos Força Bruta (Brute Force) Dividir
Leia maisINSTRUÇÕES DE REPETIÇÃO
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 6 INSTRUÇÕES DE REPETIÇÃO As instruções de repetição permitem fazer com que a execução de uma
Leia maisSCC0601 Projeto de Algoritmos. Recursão
SCC0601 Projeto de Algoritmos Recursão Definição Uma função é dita recursiva quando é definida em seus próprios termos, direta ou indiretamente Dicionário Michaelis: ato ou efeito de recorrer Recorrer:
Leia maisUNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular INTRODUÇÃO AOS ALGORITMOS E ESTRUTURAS DE DADOS Ano Lectivo 2014/2015
Programa da Unidade Curricular INTRODUÇÃO AOS ALGORITMOS E ESTRUTURAS DE DADOS Ano Lectivo 2014/2015 1. Unidade Orgânica Ciências da Economia e da Empresa (1º Ciclo) 2. Curso Engenharia Informática 3.
Leia maisAlgoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira Ementa e Objetivos Ementa: Análise de Algoritmos: Notação O e Análise Assintótica.
Leia maisProva de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins
Prova de Recuperação PMR21/PMR2 1o. semestre 2 Prof. Thiago Martins Instruções: screva o nome e o número USP na folha de papel almaço. 1. (2 pontos) Uma pilha é uma estrutura de dados na qual o elemento
Leia maisListas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de
Leia maisPROGRAMAÇÃO DINÂMICA
PROGRAMAÇÃO DINÂMICA Programação dinâmica é tipicamente aplicada para problemas de otimização. O desenvolvimento de um algoritmo de programação dinâmica pode ser divido em 4 etapas. Caracterizar uma solução
Leia maisOrdenação: MergeSort. Prof. Túlio Toffolo BCC202 Aula 14 Algoritmos e Estruturas de Dados I
Ordenação: MergeSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 14 Algoritmos e Estruturas de Dados I DIVISÃO E CONQUISTA Motivação É preciso revolver um problema com uma entrada grande
Leia maisRecursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição
Recursividade Prof. Cesar Augusto Tacla Métodos iterativos Métodos iterativos utilizam estruturas de repetição For While Do while Normalmente, um método invoca outros métodos, não a si mesmo. 2 1 Recursividade
Leia maisIntrodução à Programação em C
Introdução à Programação em C Funções Resumo Aula Anterior Tabelas Strings (Tabelas de Caracteres) 2 1 Resumo Funções Definição Protótipo e implementação return e void Passagem por valor Exemplos 3 Funções
Leia maisEstruturas de Repetição
Estruturas de Repetição Disciplina: Algoritmos e Programação Luciano Moraes Da Luz Brum Universidade Federal do Pampa Unipampa Campus Bagé Email: lucianobrum18@gmail.com Horários de atendimento: (outros
Leia maisRecursão. Aula 1. Liana Duenha. Faculdade de Computação Universidade Federal de Mato Grosso do Sul
Recursão Aula 1 Liana Duenha Faculdade de Computação Universidade Federal de Mato Grosso do Sul Algoritmos e Programação II, Análise de Sistemas, 2010 Martinez & Rubert (FACOM) Recursão APIIAS 1 / 25 Conteúdo
Leia maisAlgoritmos de Ordenação
Algoritmos de Ordenação Introdução à Ciência da Computação Prof. Edison Ishikawa Objetivo Apresentar diferentes algoritmos de ordenação de dados Mostrar como analisar os algoritmos em termos de tempo de
Leia maisProgramação dinâmica
Programação dinâmica CLRS 15.2 15.3 = recursão com tabela = transformação inteligente de recursão em iteração Algoritmos p. 1 Multiplicação iterada de matrizes Se A é p q e B é q r então AB é p r. (AB)[i,j]
Leia maisÁrvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich
Árvores Binárias SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista. Figuras editadas por Isadora Maria Mendes http://www.icmc.usp.br/~paulovic
Leia mais04 Recursão SCC201/501 - Introdução à Ciência de Computação II
04 Recursão SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir Ponti Jr. (ICMCUSP) 04Recursão
Leia maiscontrole de fluxo repetições iterativas
Controle de Fluxo Repetições iterativas INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 controle de fluxo repetições iterativas tópicos while for do while break continue referência
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos
Leia mais6. Pesquisa e Ordenação
6. Pesquisa e Ordenação Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 1 / 30 Pesquisa de Informação A pesquisa eficiente de informação
Leia maisAula 10 Comandos de Repetição
Aula 10 Comandos de Repetição Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira ronaldo.co@ufu.br Anilton Joaquim da Silva anilton@ufu.br 1 Introdução Em certas situações é necessária
Leia maisProblema da Mochila Booleana: Uma Solução Usando Programação Dinâmica. Gabriel Rosa Guilherme Alves
Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica Gabriel Rosa Guilherme Alves Agenda O problema, definição e exemplo Construindo uma solução... Expressão recursiva Algoritmo recursivo
Leia mais5COP088. Aula 2 Linguagem Estruturada Prof. Dr. Sylvio Barbon Junior. Laboratório de Programação. Aula 2 Linguagem Estruturada
5COP088 Laboratório de Programação Aula 2 Linguagem Estruturada Prof. Dr. Sylvio Barbon Junior 1 Sumário 1) Exercícios - Laços 2) Ponteiros 3) Funções 4) Procedimentos 5) Recursividade 2 Exercícios sobre
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Condicionais e Laços
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Condicionais e Laços 1 RELEMBRANDO - AULA PASSADA Definindo Funções tipo de retorno (saída) tipo nomefuncao(tipo par1, tipo par2)
Leia maisProgramação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 8 Matrizes como argumento de funções O nome de uma matriz (sem os colchetes) representa o endereço onde a matriz está armazenada. Ao passar o
Leia maisALGORITMOS I. Procedimentos e Funções
Procedimentos e Funções Jaime Evaristo (http://professor.ic.ufal.br/jaime/) Slide 1 MÓDULOS São blocos de instruções que realizam tarefas específicas. Carregado uma vez e pode ser executado quantas vezes
Leia mais