Tópicos em Algoritmos. André Guedes
|
|
- João Gabriel Leão
- 5 Há anos
- Visualizações:
Transcrição
1 Tópicos em Algoritmos André Guedes 31 de agosto de 2017
2 Sumário 1 Aulas 1 2 Introdução 2 3 Problemas Computacionais e Algoritmos Definições Correção e eficiência Classes de problemas Classes de algoritmos Espaço de Busca e Enumeração 7 5 Backtracking 8 6 Algoritmos gulosos 9 7 Programação dinâmica Problemas Links Branch-and-bound 11 9 Processamento de textos Trabalhos 13 A Problemas 14 A.1 Introdução i
3 A.2 Espaço de Busca e Enumeração A.3 Backtracking A.4 Algoritmos Gulosos A.5 Programação Dinâmica A.5.1 Outros problemas ii
4 Capítulo 1 Aulas 1. 03/08/ introdução (problemas, algoritmos etc) e subsequência máxima (e variações) 1
5 Capítulo 2 Introdução Objetivo: Tratar de assuntos referentes a algoritmos avançados com análises, implementações e testes para que os alunos tenham mais prática no desenvolviento e análise de algoritmos. Avaliação: Trabalhos práticos de análise e implementação. Serão 5 ou 6 trabalhos. Programa: Problemas Computacionais e Algoritmos Definições, Complexidade Computacional Classes de Problemas, Classes de Algoritmos; Correção e Eficiência, Espaço de Busca e Enumeração Técnicas de Algoritmos Backtracking; Algoritmos gulosos; Programação dinâmica; Branch-and-bound; 2
6 Metodologia: Dividir e Conquistar; Exemplos de problemas e soluções. Aulas teóricas sobre algoritmos e análise. Leitura de trechos de livros e artigos. Trabalhos práticos. Ver problemas 1, 2 e 3. 3
7 Capítulo 3 Problemas Computacionais e Algoritmos 3.1 Definições Um problema computacional é um problema que pode ser formulado como uma relação entre um conjunto de entradas e um conjunto de saídas. Nesta relação cada entrada (instância) do problema tem um conjunto de possíveis saídas (respostas) associadas. Por exemplo, o problema de encontrar o mínimo elemento de um vetor. Para cada vetor dado como entrada, as saídas válidas são os elementos que são mínimos. Um problema computacional, portanto, é um problema estabelecido por uma descrição de suas possíveis entradas e suas respectivas saídas. Cada possível entrada de um problema computacional é chamada de uma instância do problema. Uma saída correspondente a uma instância do problema é chamada de resposta daquela instância. Para ajudar, considere a seguinte definição. Definição 1. Dados a, b Z, o intervalo inteiro de a a b é o conjunto [a..b] dos inteiros entre a e b, isto é, Exemplo 1. [a..b] = {z Z a z b}. Mínimo de Vetor (minv) Instância: (v, a, b), onde v é um vetor indexado por [a..b], com a b. um índice m [a..b] tal que v[m] v[i] para todo i [a..b]. 4
8 Se v é dado por i v[i] , então (v, 1, 7) é uma instância do problema Mínimo de Vetor. 3 e 7 são respostas para a instância (v, 1, 7) do problema Mínimo de Vetor. (v, 4, 6) é uma instância do problema Mínimo de Vetor e 6 é uma resposta para a instância (v, 4, 6) do problema Mínimo de Vetor. Uma solução de um problema computacional é um algoritmo que recebe uma instância em devolve uma resposta válida. Cada problema computacional pode ter diversas soluções. Os problemas computacionais modelam problemas reais e as implementações dos algoritmos, que são soluções destes problemas, são as aplicações computacionais dos problemas reais. Portanto, estudar os problemas computacionais e suas soluções é uma atividade importante para quem quer ajudar a resolver problemas reais com o auxílio de computadores. 3.2 Correção e eficiência Para que uma aplicação computacional tenha sucesso é preciso que o algoritmo que ela implementa seja de fato uma solução do problema em questão e que seja eficiente. Além disso é esperado que o algoritmo esteja corretamente implementado. Esta última questão não é assunto para este texto e está mais relacionada com outras áreas da computação. Entretanto não pode ser ignorada. As duas primeiras questões, que chamaremos simplesmente de corretude e eficiência, são parte do nosso estudo de problemas computacionais e algoritmos. 3.3 Classes de problemas Existem diversos tipos de problemas computacionais e eles são classificados por diversos critérios. Os critérios que nos interessam por ora são: tipo (e tamanho) do conjunto de soluções (contra-domínio da relação binária); 5
9 3.4 Classes de algoritmos 6
10 Capítulo 4 Espaço de Busca e Enumeração Ver problemas 4 e 5. intervalos próprios - pdf bipartite permutation graphs - pub/ isaac.pdf permutações - s_algorithm AlgorithmsForGeneratingPermutationsAndCombinations-Notes.pdf - permutations 7
11 Capítulo 5 Backtracking 8
12 Capítulo 6 Algoritmos gulosos escrever as descrições dos problemas. mochila (caso particular), moedas (caso particular), intervalos sem intersecção, ainda moedas (porque e quando funciona), bin packing, Código de Huffmann. 9
13 Capítulo 7 Programação dinâmica escrever as descrições dos problemas. (*) There is an ordering on the subproblems, and a relation that shows how to solve a subproblem given the answers to smaller subproblems, that is, subproblems that appear earlier in the ordering. ([p. 171] Dasgupta, Papadimitriou, and Vazirani Algorithms (1 ed.). McGraw-Hill, Inc., New York, NY, USA.) 7.1 Problemas Multiplicação de matrizes. Moedas com quaisquer valores. Distância de edição. Mochila - O(nW ) 7.2 Links 1. dynamic-programming-from-novice-to-advanced/ 2. Ver problemas 24 e 25 10
14 Capítulo 8 Branch-and-bound 11
15 Capítulo 9 Processamento de textos 12
16 Capítulo 10 Trabalhos 1. Submatriz máxima de zeros (Problema 3). 2. Backtracking: Set Cover (Problema 14). 3. Revisão bibliográfica: dar um problema e os alunos buscam soluções (de um determinado tipo) na rede. Problema ainda não definido. 4. Enumeração: permutações bipartidas conexas, subconjuntos de tamanho k de um conjunto X e arranjos de tamanho k de um conjunto X. 5. Apresentações sobre dois problemas: Sequenciamento de texto e Ordenação de conjuntos consecutivos (Problemas 31 e 30). 13
17 Apêndice A Problemas Aqui segue uma lista com alguns problemas computacionais para serem trabalhados pelos alunos da disciplina de Tópicos em Algoritmos (CI811) do Programa de Pós-Graduação em Informática da UFPR. Esta lista ainda não está completa e pode ser alterada. Alguns problemas são simples e tem o objetivo de apresentar diferentes técnicas, outros são mais difíceis. (...) A.1 Introdução 1. [default,pr:subseqmax0]subsequência Máxima de 0 s Dada uma sequência de n 0 s e 1 s, S n = (d 1, d 2,..., d n ), queremos encontrar uma subsequência (consecutiva) máxima composta somente de 0 s, ou seja, encontrar m e k tais que d i = 0, para m i m+k 1 e k seja máximo. Subsequência Máxima de 0 s (subseqmax) Instância: Sequência de 0 s e 1 s de tamanho n, S n = (d 1, d 2,..., d n ). m e k tais que d i = 0, para m i m + k 1 e k seja máximo. Um problema mais simples é o problema de, dados uma sequência e 14
18 um k, encontrar uma subsequência com exatos k 0 s consecutivos. Subsequência de tamanho k de 0 s (subseqk) Instância: Sequência de 0 s e 1 s de tamanho n, S n = (d 1, d 2,..., d n ) e inteiro k. m tal que d i = 0, para m i m + k 1 ou não, caso não exista tal m. Seja M : N N, representando o tamanho da maior subsequência de 0 s começando em d i, definida por: M(i) = { 0, se i [1..n] ou d i 0, M(i + 1) + 1, se i [1..n] e d i = 0. E seja R : N N, representando o tamanho da maior subsequência de 0 s da sequência que começa em d i, definida por: R(i) = { 0, se i [1..n], max{m(i), R(i + 1)}, se i [1..n]. 2. [default,pr:subsqmaxcrescente]subsequência Máxima Crescente Dada uma sequência de n números inteiros, S n = (d 1, d 2,..., d n ), queremos encontrar uma subsequência (consecutiva) máxima crescente, ou seja, encontrar m e k tais que d i < d i+1, para m i m + k 2 e k seja máximo. Subsequência Máxima Crescente (subseqmaxcresc) Instância: Sequência de 0 s e 1 s de tamanho n, S n = (d 1, d 2,..., d n ). m e k tais que d i < d i+1, para m i m + k 2 e k seja máximo. 3. [default,pr:submatmax0]submatriz Máxima de 0 s Dada uma matriz n m de 0 s e 1 s, A = a 1,1 a 1,2 a 1,m a 2,1 a 2,2 a 2,m a n,1 a n,2 a n,m 15
19 queremos encontrar uma submatriz (consecutiva) máxima composta somente de 0 s, ou seja, encontrar p, q, r e s tais que a i,j = 0, para p i p + r 1, q j q + s 1 e r s seja máximo. Submatriz Máxima de 0 s (submatmax) Instância: Matriz n m de 0 s e 1 s, [a i,j ]. p, q, r e s tais que a i,j = 0, para p i p + r 1, q j q + s 1 e k l seja máximo. 16
20 A.2 Espaço de Busca e Enumeração 4. [default,pr:passeiocavalo]passeio do cavalo Dado um tabuleiro n n, será possível que um cavalo de xadrez (usando seus movimentos válidos) poderia sair da casa na linha 1, coluna 1 passar por todas as outras casas, sem repetir nenhuma e voltar ao início? Passeio do cavalo de xadrez (cavalo) Instância: Um inteiro n. Se é possível um passeio do cavalo, usando apenas seus movimentos de xadrez, em um tabuleiro n n, que passe por todas as casas sem repetir e volte para a primeira. 5. [default,pr:mochila]problema da Mochila Problema da Mochila (knapsack) Instância: Um número natural n, um número real D e duas funções, w : {1, 2,..., n} R e v : {1, 2,..., n} R. Um conjunto X {1, 2,..., n} tal que i X w(i) D e i X v(i) seja máximo. 6. [default,pr:enum-subconj]enumeração de subconjuntos Dado um conjunto X, como enumerar todos os seus subconjuntos? opção 1: Cada nó representa um subconjunto de X. Comece com o conjunto vazio ( ) como nó raiz. Gere cada filho de um nó incluindo um único elemento. Se os elementos são ordenados e só são incluídos elementos que estão a direita do último incluído, então não acontecem repetições e temos uma árvore. Cada nível tem conjuntos de um tamanho. opção 2: Cada nó representa um conjunto de subconjuntos de X. 17
21 Cada nó i tem dois conjuntos P i e Q i, ambos subconjuntos de X. Os subconjuntos de X representados pelo no i são dados pelo conjunto abaixo {R = S Q i S P i }. Cada nó tem no máximo dois filhos (e i e d i ). Um elemento de P i é escolhido como pivô, x i. Os filhos são gerados como se segue: P ei = P di = P i {x i }, Q ei = Q i, Q di = Q i {x i }. 7. [default,pr:enum-perm]enumeração de permutações Enumere todas as permutações de (1, 2, 3,..., n). 8. [default,pr:enum-interv]enumeração de intervalos próprios Enumere todas as permutações de (( () )) - n abre parênteses e n fecha parênteses - de tal forma que em qualquer prefixo tenha um número de abre parênteses maior ou igual que o número de fecha parênteses. 9. [default,pr:enum-perm-bip-conexo]enumeração de permutações bipartidas conexas Uma permutação π de um conjunto X é uma sequência (π(1),..., π( X )). Dizemos que uma permutação π de {1,..., n} é conexa se a sequência (π(1), π(2),..., π(n)) não pode ser descrita como uma concatenação de uma permutação de {1,..., k} com uma permutação de {(k+1),..., n}, para algun 1 k < n. A permutação (3, 2, 4, 1, 6, 5) é desconexa, pois é uma concatenação de (3, 2, 4, 1) e (6, 5) que são, respectivamente, permutações de {1, 2, 3, 4} e {5, 6} (portanto k = 4). Já a permutação (3, 1, 5, 2, 6, 4) é conexa. Perceba que nenhum prefixo de tamanho k < 6 contém todos os números de 1 a k. 18
22 Dizemos que uma permutação π de {1,..., n} é bipartida se existe uma bipartição (X, Y ) de {1,..., n} de forma que os elementos de cada parte (X e Y ) aparecem na ordem natural, ou seja, se (i, j X ou i, j Y ) e i < j então π 1 (i) < π 1 (j). A permutação (2, 4, 1, 3, 5, 6) é bipartida, pois X = {1, 3, 6} e Y = {2, 4, 5} formam uma bipartição de {1,..., 6} como descrito acima. Enumere todas as permutações de (1, 2, 3,..., n) que são bipartidas conexas. 10. [default,pr:enum-subconj-tam-k]enumeração de subconjuntos de tamanho fixo Dado um conjunto X e um inteiro k, enumere todos os subconjuntos de X de tamanho k. Ou seja, ( ) X = {S X S = k}. k 11. [default,pr:arranjos-x-k]enumeração de arranjos Dado um conjunto X e um inteiro k, um arranjo de tamanho k de X é uma sequência de tamanho k com elementos de X sem repetição. Dado um conjunto X e um inteiro k, enumere todos os arranjos de tamanho k de X. 19
23 A.3 Backtracking 12. Clique; 13. Coloração; 14. [default,pr:setcover]cobertura por conjuntos Cobertura por conjuntos (setcover) Instância: Um conjunto de n subconjuntos do conjunto U = {1, 2,..., m}, A 1, A 2,..., A n. Um conjunto X {1, 2,..., n} tal que i X A(i) = U e X seja mínimo. 20
24 A.4 Algoritmos Gulosos 15. mochila (caso particular); 16. moedas (caso particular) - ainda moedas: porque e quando funciona; 17. intervalos sem intersecção; 18. bin packing; 19. Código de Huffmann; 21
25 A.5 Programação Dinâmica 20. Multiplicação de matrizes; 21. Moedas com quaisquer valores; 22. Distância de edição; 23. Mochila - O(nW ); 24. [default,pr:linearpartition]linear Partition Problem (Skiena - pp ) Integer Partition without Rearrangement (partition) Instância: An arrangement S of nonnegative numbers {s 1,..., s n } and an integer k. Partition S into k or fewer ranges, to minimize the maximum sum over all the ranges, without reordering any of the numbers. 25. [default,pr:somadiscreta]melhor sequência de decisões d 1, d 2,..., d n são decisões, ou seja, d i {p 1, p 2,..., p k }, para todo i {1, 2,..., n}. O objetivo final é M. Queremos que n i=1 d i seja o mais próximo de M possível, ou seja, que M n i=1 d i seja mínimo. A.5.1 Outros problemas 26. Rolos de papel (bin packing unidiensional); 22
26 27. 8 Rainhas (e variações); 28. [default,pr:emparelhamento-minmax]emparelhamento de mínimo maior peso Emparelhamento de mínimo maior peso (emp-minmax) Instância: Dois conjuntos A e B, um conjunto de pares com um elemento de cada conjunto, R, e uma função w : R N. Subconjunto M R tal que max{w(e) e M} seja mínimo. 29. [default,pr:casamento-estavel]casamento Estável Casamento Estável (casamento) Instância: Dois conjuntos, A e B, tal que A = B = n, para cada elemento a A, uma função p a : {1,..., n} B e, para cada elemento b B, uma função p b : {1,..., n} A. Conjunto M A B tal que não [default,pr:conjuntos-consecutivos]ordenação de conjuntos consecutivos Dados n subconjuntos de um conjunto U, N 1, N 2,..., N n, encontre uma ordem (u 1, u 2,..., u m ) para os elementos de U de forma que, para 1 i n, os elementos de N i sejam consecutivos, caso seja possível. 31. [default,pr:sequenciamento]sequenciamento de texto Seja T uma sequência de dígitos decimais desconhecida. E sejam n subsequências de T, P 1, P 2,..., P n. Assumindo que as subsequências cobrem toda a sequência T e que existem intersecções entre subsequências consecutivas, reconstrua T, caso seja possível. Exemplo: P 1 =
27 P 2 = P 3 = Como P 1 4 P 3 (o final de P 1 e o início de P 3 coincidem em 4 dígitos), P 2 5 P 1 e P 3 1 P 1, temos T = pela concatenação P 2 P 1 P 3, já que a relação P 3 1 P 1 é fraca e pode ser descartada. 32. [default,pr:reducaotransitiva]redução Transitiva Redução transitiva (redtran) Instância: Uma ordem parcial (X, ). Uma relação binária (X, ) tal que o seu fecho transitivo seja igual a (X, ) e não exista outra relação binária menor com a mesma propriedade. 33. [default,pr:poset-to-sets]modelo de conjuntos para ordem parcial Modelo de conjuntos (modelconj) Instância: Uma ordem parcial (X, ). Um conjunto C de conjuntos tal que a ordem parcial (C, ) (ordem de inclusão de subconjuntos) seja isomorfa a ordem (X, ). 24
CI811 Tópicos em Algoritmos
CI811 Tópicos em Algoritmos Problemas 15 de junho de 2016 Aqui segue uma lista com alguns problemas computacionais para serem trabalhados pelos alunos da disciplina de Tópicos em Algoritmos (CI811) do
Leia maisRascunho. CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR. 7 de dezembro de 2016
CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR 7 de dezembro de 016 Sumário 1 Apresentação do Curso Problemas computacionais e algoritmos
Leia maisRascunho. CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR. 11 de junho de 2017
CI165 - Análise de algoritmos (rascunho alterado constantemente) André Guedes Departamento de Informática UFPR 11 de junho de 017 Sumário 1 Apresentação do Curso Problemas computacionais e algoritmos 4
Leia maisProblemas de Busca (a.k.a NP) - parte 2
Problemas de Busca (a.k.a NP) - parte 2 André Vignatti DINF- UFPR Euler e Rudrata No verão de 1735 Leonhard Euler, o famoso matemático suíço, estava andando nas pontes da cidade de Königsberg, na Prússia
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 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 maisPrincípio da Multiplicação. > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 0/18
Conteúdo 1 Corretude de Algoritmos 2 Princípios de Contagem e Enumeração Computacional Princípio da Multiplicação > Corretude de Algoritmos Princípios de Contagem e Enumeração Computacional 0/18 Corretude
Leia maisProjeto e Análise de Algoritmos. Prof. Ruy Luiz Milidiú
Projeto e Análise de Algoritmos Prof. Introdução 2 www.inf.puc-rio.br/~milidiu/inf2926 3 Resumo Objetivo Apresentar o enfoque adotado no curso para capacitação em Projeto e Análise de Algoritmos Sumário
Leia maisAbordagens para Resolução de Problemas
Abordagens para Resolução de Problemas UDESC - Universidade do Estado de Santa Catarina Departamento de Ciência da Computação CAL - Complexidade de Algoritmos Teodoro Alberto Borges Junior Abordagens para
Leia maisBCC Projeto e Análise de Algoritmos Aula 0: Apresentação
1 BCC 241 - Projeto e Análise de Algoritmos Aula 0: Apresentação DECOM/UFOP 5º. Período - 2012/02 Anderson Almeida Ferreira BCC 241/2012-2 2 Objetivos do curso Dados dois algoritmos, compará-los quanto
Leia maisOtimização Combinatória - Parte 4
Graduação em Matemática Industrial Otimização Combinatória - Parte 4 Prof. Thiago Alves de Queiroz Departamento de Matemática - CAC/UFG 2/2014 Thiago Queiroz (DM) Parte 4 2/2014 1 / 33 Complexidade Computacional
Leia maisBCC Projeto e Análise de Algoritmos Aula 0: Apresentação
1 BCC 241 - Projeto e Análise de Algoritmos Aula 0: Apresentação DECOM/UFOP 5º. Período - 2013/01 Anderson Almeida Ferreira BCC 241/2012-2 2 Objetivos do curso Dados dois algoritmos, compará-los quanto
Leia maisTEORIA: 60 LABORATÓRIO: 0
Universidade Federal do ABC Rua Santa Adélia, 166 - Bairro Bangu - Santo André - SP - Brasil CEP 09.210-170 - Telefone/Fax: +55 11 4996-3166 1. CÓDIGO E NOME DA DISCIPLINA: BC1435 - Análise de Algoritmos
Leia maisParadigmas de Projetos de Algoritmos
Paradigmas de Projetos de Algoritmos Luciana Assis 9 de junho de 2016 Luciana Assis (UFVJM) 9 de junho de 2016 1 / 36 1 Introdução 2 Força Bruta 3 Abordagem Incremental ou Construtiva 4 Recursão 5 Divisão
Leia maisMelhores momentos AULA 24. Algoritmos p.906/953
Melhores momentos AULA 24 Algoritmos p.906/953 Problemas polinomiais Analise de um algoritmo em um determinado modelo de computação estima o seu consumo de tempo e quantidade de espaço como uma função
Leia maisAlgoritmos Combinatórios: Introdução
lucia@site.uottawa.ca UFSC, Fevereiro, 2010 Estruturas e Problemas Combinatórios Introdução a Algoritmos Combinatórios O que são: Estruturas Combinatórias? Algoritmos Combinatórios? Problemas Combinatórios?
Leia maisProgramação de Computadores II TCC
Programação de Computadores II TCC-00.174 Profs.: Leandro A. F. Fernandes (Turma A1) & Marcos Lage (Turma B1) (Turma A1) www.ic.uff.br/~laffernandes (Turma B1) www.ic.uff.br/~mlage Conteúdo: Material elaborado
Leia maisTópico 5 Algoritmos de Ordenação. Parte II - métodos de ordenação: counting sort, radix sort e bucket sort.
Tópico 5 Algoritmos de Ordenação Parte II - métodos de ordenação: counting sort, radix sort e bucket sort. 1 Árvore de Decisão Todos os algoritmos descritos anteriormente utilizam comparações para determinar
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 maisCIC 111 Análise e Projeto de Algoritmos II
CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 27 Square root algorithms Combining algorithms Integer partitions Mo s algorithm Square
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 maisAula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo
Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br BCC464 / PCC174 Departamento de Computação - UFOP Breve Revisão Programação Linear vs Programação Inteira Modelagem
Leia mais3. Resolução de problemas por meio de busca
Inteligência Artificial - IBM1024 3. Resolução de problemas por meio de busca Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Resolução de problemas por
Leia maisRedução de Cook-Levin e Considerações Finais
Redução de Cook-Levin e Considerações Finais André Vignatti DINF- UFPR Fechando o Ciclo de Reduções Nós reduzimos o SAT para diversos problemas de busca, como mostra a figura: Todos problemas NP CIRCUIT
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 maisProjeto e Análise de Algoritmos
Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais harison@pucpcaldas.br 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter
Leia maisMATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47
1 / 47 MATEMÁTICA DISCRETA Patrícia Ribeiro Departamento de Matemática, ESTSetúbal 2018/2019 2 / 47 1 Combinatória 2 Aritmética Racional 3 3 / 47 Capítulo 3 4 / 47 não orientados Um grafo não orientado
Leia maisClasses, Herança e Interfaces
Escola de Artes, Ciências e Humanidades EACH-USP ACH2002 Introdução à Ciência da Computação II Professor: Delano Medeiros Beder revisada pelo professor: Luciano Digiampietri EACH Segundo Semestre de 2011
Leia maisAula 13: Branch-and-bound
Aula 13: Branch-and-bound Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br BCC464/PCC174 2018/2 Departamento de Computação UFOP Previously... Modelagem em PI / Problemas Combinatórios
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 mais> Princípios de Contagem e Enumeração Computacional 1/13
Princípios de Contagem e Enumeração Computacional > Princípios de Contagem e Enumeração Computacional 1/13 Objetivos Contar/listar o número de elementos de conjuntos finitos Aplicações > Princípios de
Leia maisBCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1
BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 Na aula anterior Prova 2 Na aula de hoje Técnicas básicas de contagem; Tentativa e Erro; Recursividade.
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 03 Técnicas de Projeto de Algoritmos (Divisão e Conquista) Edirlei Soares de Lima Estratégias de Projeto de Algoritmos Força Bruta (Brute Force)
Leia maisLimite assintótico para a ordenação, Ordenação em tempo linear
Algoritmos e Estruturas de Dados I Limite assintótico para a ordenação, Ordenação em tempo linear Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2017 1 Ordenação Ordenar corresponde ao processo
Leia maisRecursividade, Tentativa e Erro
Recursividade, Tentativa e Erro Túlio Toffolo www.toffolo.com.br Marco Antônio Carvalho marco.opt@gmail.com BCC402 Aula 07 Algoritmos e Programação Avançada Na aula anterior Prova 2 Na aula de hoje Técnicas
Leia maisAlgoritmos de Enumeração
Em muitos casos para fazer a simulação de um algoritmo é necessário testar-se com um conjunto exaustivo de dados, ou seja, gerar várias ou todas as sequências possíveis de dados e verificar o comportamento
Leia maisAnálise Combinatória
Introdução Análise combinatória PROBLEMAS DE CONTAGEM Princípio Fundamental da Contagem Exemplo: Um número de telefone é uma seqüência de 8 dígitos, mas o primeiro dígito deve ser diferente de 0 ou 1.
Leia maisTeoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada
Teoria dos Grafos Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo Departamento de Matemática Aplicada Capítulo 09: Representação de Grafos Preparado a partir do texto: Rangel, Socorro. Teoria
Leia maisBacktracking. Túlio Toffolo Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada
Backtracking Túlio Toffolo www.toffolo.com.br Marco Antônio Carvalho marco.opt@gmail.com BCC402 Aula 10 Algoritmos e Programação Avançada Backtracking Backtracking é um refinamento do algoritmo de busca
Leia maisInstituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios
Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios 1 Conceitos 1. Prove o Teorema da Amizade: em qualquer festa com pelo menos seis pessoas, ou três se conhecem
Leia maisAlgoritmos Combinatórios: Sudoku via Backtracking e o Problema da Cobertura Exata
Algoritmos Combinatórios: Sudoku via Backtracking e o Problema da lucia@site.uottawa.ca UFSC, Fevereiro, 2010 Solução Sudoku O jogo/puzzle Sudoku consiste de uma matriz 9 9, dividida em 9 regiões, que
Leia mais5COP096 TeoriadaComputação
Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 13 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas NP-Completo Algoritmos Não-deterministas; Classes NP-Completo e NP-Dificil; Teorema
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Apresentação da Disciplina Edirlei Soares de Lima Por que Estudar Algoritmos? Razões Práticas e Teóricas: Devemos conhecer um conjunto de algoritmos
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar
Leia maisRaiz, filho, pai, irmão, ancestral, descendente, folha.
17.1 Aula 17: Conceitos de Árvores e Árvores Binárias Raiz, ilho, pai, irmão, ancestral, descendente, olha. Nível, altura, subárvore, subárvore parcial. Árvores binárias completas, binárias cheias, estritamente
Leia maisAnálise de Algoritmos
Análise de Algoritmos Parte destes slides são adaptações de slides do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 1/36 Complexidade computacional Classifica os problemas em relação
Leia maisTeoria da Computação. Complexidade computacional classes de problemas
Teoria da Computação Complexidade computacional classes de problemas 1 Universo de problemas Problemas indecidíveis ou não-computáveis Não admitem algoritmos Problemas intratáveis Não admitem algoritmos
Leia maisComplexidade computacional
Complexidade computacional Classifica os problemas em relação à dificuldade de resolvê-los algoritmicamente. CLR 36 ou CLRS 34 Algoritmos p. 1 Palavras Para resolver um problema usando um computador é
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 maisAnálise e Projeto de Algoritmos
Análise e Projeto de Algoritmos Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Análise e Projeto de Algoritmos junho - 2018 1 / 40 Este material é preparado
Leia maisAlguns comentários. Segunda prova. Programação dinâmica em grafos. Guloso em grafos. Algoritmos p. 1
Alguns comentários Segunda prova Programação dinâmica em grafos Guloso em grafos Algoritmos p. 1 Problema dos intervalos disjuntos Problema: Dados intervalos [s[1],f[1]),...,[s[n],f[n]), encontrar coleção
Leia maisANÁLISE DE ALGORITMOS
ANÁLISE DE ALGORITMOS Paulo Feofiloff Instituto de Matemática e Estatística Universidade de São Paulo agosto 2009 Introdução P. Feofiloff (IME-USP) Análise de Algoritmos agosto 2009 2 / 102 Introdução
Leia maisInstituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios
Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios 1 Conceitos 1. Prove o Teorema da Amizade: em qualquer festa com pelo menos seis pessoas, ou três se conhecem
Leia maisAlgoritmos e Programação de Computadores
Algoritmos e Programação de Computadores Instituto de Computação UNICAMP Primeiro Semestre de 2013 Roteiro 1 Força Bruta 2 Backtracking 3 Branch and Bound Instituto de Computação (UNICAMP) MC102 Primeiro
Leia maisAula 19: Lifting e matrizes ideais
Aula 19: Lifting e matrizes ideais Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br BCC464/PCC174 2018/2 Departamento de Computação UFOP Previously... Branch-and-bound Formulações
Leia maisAnálise de algoritmos
Análise de algoritmos Ordenação em tempo linear Prof. Flávio Rogério Uber (UEM/DIN) Autor: Prof. Marco Aurélio Lopes Barbosa (UEM/DIN) Conteúdo Limites inferiores para ordenação por comparações Ordenação
Leia maisCIC 110 Análise e Projeto de Algoritmos I
CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá Algoritmos Gulosos AULA 06 Algoritmos Gulosos Um algoritmo guloso constrói uma solução para
Leia maisAED2 - Aula 11 Problema da separação e quicksort
AED2 - Aula 11 Problema da separação e quicksort Projeto de algoritmos por divisão e conquista Dividir: o problema é dividido em subproblemas menores do mesmo tipo. Conquistar: os subproblemas são resolvidos
Leia maisEstrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 10: Introdução aos Grafos História O assunto que se constitui no marco inicial da teoria de grafos é na realidade um problema algorítmico.
Leia maisINF01056 Aula 07/08 Backtracking. Baseado no livro Programming Challenges
INF01056 Aula 07/08 Backtracking Baseado no livro Programming Challenges 1 Backtracking Busca sistemática de todas as possíveis soluções Garante que a solução será encontrada, ao enumerar todas as possibilidades
Leia maisDINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios
DINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios - 2013 1. Uma pessoa sobe uma escada composta de n degraus, com passos que podem alcançar entre 1 e k n degraus. Escrever equações
Leia maisCONCEITOS BÁSICOS EM GRAFOS
Um grafo (simples) G é formado por um conjunto de vértices, denotado por V(G), e um conjunto de arestas, denotado por E(G). Cada aresta é um par (não ordenado) de vértices distintos. Se xy é uma aresta,
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 maisAULA 24. Algoritmos p.856/905
AULA 24 Algoritmos p.856/905 Máximo divisor comum CLRS 31.1 e 31.2 Algoritmos p.857/905 Divisibilidade Suponha que a, b e d são números inteiros. Dizemos que d divide a se a = k d para algum número inteiro
Leia maisFormulação de Programação Linear Inteira para o Problema de Particionamento em Conjuntos Convexos
Formulação de Programação Linear Inteira para o Problema de Particionamento em Conjuntos Convexos Teobaldo L. Bulhões Júnior a a Instituto de Computação, Universidade Federal Fluminense, Niterói, RJ, Brazil
Leia maisAED2 - Aula 01 Apresentação, estruturas de dados, tabelas de símbolos e hash tables
AED2 - Aula 01 Apresentação, estruturas de dados, tabelas de símbolos e hash tables É esperado de um projetista de algoritmos que ele entenda o problema a resolver e compreenda as ferramentas a sua disposição,
Leia maisDivisã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 maisABORDAGENS PARA RESOLVER O PROBLEMA DA MOCHILA 0/1
ABORDAGENS PARA RESOLVER O PROBLEMA DA MOCHILA 0/1 Éfren Lopes de Souza 1 e Erik Alexander Landim Rafael 2 1 Universidade Federal do Amazonas (UFAM) (efren_lopes@hotmail.com) 2 Instituto Federal de Educação,
Leia maisColoração de intervalos
Coloração de intervalos Problema: Dados intervalos de tempo [s 1,f 1 ),...,[s n,f n ), encontrar uma coloração dos intervalos com o menor número possível de cores em que dois intervalos de mesma cor sempre
Leia maisÁrvore Binária de Busca Ótima
MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvore binária de busca ótima do capítulo 4 do livro N. Wirth. Algorithms
Leia mais(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA
Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM (P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS:
Leia maisMétodos de Ordenação Parte 4
Métodos de Ordenação Parte 4 Introdução à Ciência de Computação II Prof. Diego Raphael Amancio Baseado no material do Prof. Rudinei Goularte e Prof. Thiago A. S. Pardo 1 Ordenação por Intercalação Revisando...
Leia maisTeoria da Complexidade Computacional
Teoria da Complexidade Computacional Letícia Rodrigues Bueno UFABC Motivação Motivação I can t find an efficient algorithm, I guess I m just too dumb. Fonte: GAREY, M. R. e JOHNSON, D. S. Computers and
Leia maisTeoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.
Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br Grafos direcionados (Digrafos) Preparado a partir do texto:
Leia maisEstruturas de Dados 2
Estruturas de Dados 2 Algoritmos de Ordenação em Tempo Linear IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/38 Algoritmos de Ordenação em Tempo Linear Limite Assintótico
Leia maisProjeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão
Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns
Leia maisAlgoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido
Leia maisDepartamento de Engenharia de Produção UFPR 57
Departamento de Engenharia de Produção UFPR 57 Introdução a Grafos Muitos problemas de otimização podem ser analisados utilizando-se uma estrutura denominada grafo ou rede. Problemas em redes aparecem
Leia maisTópicos Avançados em Algoritmos
Tópicos Avançados em Algoritmos Armando Matos 2008 Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2 Tópicos Avançados de Algoritmos Armando B. Matos DCC-FC-UP 2009
Leia maisDoutorado em Ciência da Computação. Algoritmos e Grafos. Raimundo Macêdo LaSiD/DCC/UFBA
Doutorado em Ciência da Computação Algoritmos e Grafos Raimundo Macêdo LaSiD/DCC/UFBA Grafo Completo Grafo simples cujos vértices são dois a dois adjacentes. Usa-se a notação K n para um grafo completo
Leia maisUniversidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Combinatória
Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Combinatória Tópicos Especiais em Programação Site: http://jeiks.net E-mail: jacsonrcsilva@gmail.com
Leia maisUniversidade Federal de Mato Grosso do Sul. Lista de Exercícios 2
Universidade Federal de Mato Grosso do Sul Facom - Faculdade de Computação Programação de Computadores I - Engenharia Ambiental Lista de Exercícios 2 Exercícios usando if 1. Escreva um programa que leia
Leia maisLista de Exercícios Programação Inteira. x 2 0 e inteiros.
Lista de Exercícios Programação Inteira ) Resolva os problemas a seguir usando o método B&B a) Max z = 5 x + 2 y s.a x + y 2 x + y 5 x, y 0, x e y inteiros b) Max z = 2 x + y s.a x + 2y 0 x + y 25 x, y
Leia maisProjeto e Análise de Algoritmos Aula 1: Panorama (0.1,0.2)
1 Projeto e Análise de Algoritmos Aula 1: Panorama (0.1,0.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Baseado no material desenvolvido por Andréa Iabrudi Tavares BCC 241 2012/2 2 Algumas
Leia maisALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão
UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 3.1 - Definição 3.2 - Dividir para conquistar 3.3 - Problema da
Leia maisLista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013
Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void
Leia maisDoutorado em Ciência da Computação. Algoritmos e Grafos. Raimundo Macêdo LaSiD/DCC/UFBA
Doutorado em Ciência da Computação Algoritmos e Grafos Raimundo Macêdo LaSiD/DCC/UFBA Grafo Completo Grafo simples cujos vértices são dois a dois adjacentes. Usa-se a notação K n para um grafo completo
Leia mais2 Erro comum da indução. 3 Corretude de Algoritmos. > Indução Forte X Indução Fraca Erro comum da indução Corretude de Algoritmos 0/17
Conteúdo 1 Indução Forte X Indução Fraca 2 Erro comum da indução 3 Corretude de Algoritmos > Indução Forte X Indução Fraca Erro comum da indução Corretude de Algoritmos 0/17 Indução Forte X Indução Fraca
Leia maisOrdenação em Tempo Linear. Leitura: Cormen Capítulo 8
Ordenação em Tempo Linear Leitura: Cormen Capítulo 8 Revisão Insertion sort: Vantagens Fácil de implementar Rápido em entradas com menos de 50 elementos. Rápido em entradas aproximadamente ordenadas. Desvantagens
Leia maisUniversidade 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
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 Tópicos Introdução Ordenação por bolha (bubble sort)
Leia maisLista de Exercícios Programação Inteira. x 2 0 e inteiros.
Lista de Exercícios Programação Inteira ) Resolva os problemas a seguir usando o método B&B a) Max z = 5 x + y s.a x + y x + y 5 b) Max z = x + y s.a x + y 0 x + y 5 c) Max z = x + y s.a x + 9y 6 8 x +
Leia maisAula 08. Estruturas de dados Árvore e Grafo
Logo Aula 08 Estruturas de dados Árvore e Grafo 2 Árvore Estruturas estudadas até agora não são \ adequadas para representar dados que devem ser dispostos de maneira hierárquica Ex., hierarquia de pastas
Leia maisPrincípio da Multiplicação Gerando todas as palavras de um alfabeto. > Princípios de Contagem e Enumeração Computacional 0/18
Conteúdo 1 Princípios de Contagem e Enumeração Computacional Princípio da Multiplicação Gerando todas as palavras de um alfabeto Permutações > Princípios de Contagem e Enumeração Computacional 0/18 Objetivos
Leia maisAlgoritmos 3/17/ Algoritmos como área de estudo e investigação
Algoritmos e Complexidade Ana Teresa Freitas INESC-ID/IST ID/IST 3/17/2005 1 O que é um algoritmo? Algoritmos: Sequência de instruções necessárias para a resolução de um problema bem formulado [passíveis
Leia maisAnálise e Síntese de Algoritmos. Problemas NP-Completos CLRS, Cap. 34
Análise e Síntese de Algoritmos Problemas NP-Completos CLRS, Cap. 34 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap. 22-26] Algoritmos elementares Árvores abrangentes Caminhos mais
Leia maisDivisão e conquista. Eficiência de divisão e conquista
Divisão e conquista Divisão: resolver recursivamente problemas mais pequenos (até caso base) Conquista: solução do problema original é formada com as soluções dos subproblemas á divisão quando o algoritmo
Leia maisTeoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.
Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br Preparado a partir do texto: Rangel, Socorro. Teoria do Grafos,
Leia maisAlgoritmos de Ordenação. Profº Carlos Alberto T. Batista
Algoritmos de Ordenação Profº Carlos Alberto T. Batista E-mail: carlos.batista@facape.br carlos36_batista@yahoo.com.br Por que ordenar os dados? Encontrar elementos em uma lista torna-se algo simples e
Leia mais