Técnicas de Desenho de Algoritmos
|
|
|
- Edson Castelo Brunelli
- 8 Há anos
- Visualizações:
Transcrição
1 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 Referências: Mark Allen Weiss. Data Structures & Algorithm Analysis in Java. Addison- Wesley, Robert Sedgewick. Algorithms in C++. Addison-Wesley, Steven S. Skiena. The Algorithm Design Manual. Springer 1998.
2 Algoritmos Gananciosos Exemplos Anteriores: Dijkstra, Prim, Kruskal Cada fase do algoritmo: decisão baseada no ganho imediato consequências futuras não consideradas Algoritmo atinge óptimos locais se é óptimo global, é solução se não, pode servir para obter aproximação Exemplo de problema que resolve bem: fazer trocos, minimizando número de notas e moedas estratégia: dar repetidamente a maior unidade possível Exemplo de problema que não resolve bem: caminho mais rápido usando estratégia da melhor aresta adjacente
3 Problema de escalonamento Dados: tarefas e tempos Objectivo: minimizar tempo médio de terminação Tempo médio: 25 Tarefa Tempo j1 j2 j3 j4 j 1 15 j 2 8 j 3 3 Tempo médio: j 4 10 j3 j2 j4 j
4 2ª solução é óptima Escalonamento Porquê: tarefas mais curtas primeiro Tarefas: j i1, j i2,..., j in Terminações: ti1, ti1+ti2,... Custo total da solução: n n n (n k +1) t = ik (n+1) t ik k t ik k = 1 k =1 k = 1 Se existe x>y tal que t ix < t iy : troca de j ix e j iy diminui custo
5 Escalonamento multiprocessador Exemplo com 3 processadores Tarefa Tempo j1 j2 j3 j4 j5 j6 j7 j8 j Total de tempos: 165 Tempo médio: j1 j2 j3 j4 j5 j6 j j8 j9
6 Solução óptima não é única Para cada i, o i < n/p as tarefas j ip+1 a j (i+1)p são alocadas a processadores diferentes j1 j5 j9 j2 j4 j7 j3 j6 j
7 Minimizar tempo de completação Tempo a minimizar é o da última tarefa a terminar j2 j5 j8 j6 j9 j1 j3 j4 j Este problema é variante do empacotamento, logo NP-completo!
8 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 Há divisão quando o algoritmo tem pelo menos 2 chamadas recursivas no corpo Subproblemas devem ser disjuntos Algoritmos já vistos: Travessia de árvores em tempo linear: processar árvore esquerda, visitar nó, processar árvore direita Ordenações: mergesort: ordenar 2 subsequências e juntá-las quicksort: ordenar elementos menores e maiores que pivot, concatenar
9 Quicksort function quicksort(array) var list less, greater if length(array) 1 return array select and remove a pivot value pivot from array for each x in array if x pivot then append x to less else append x to greater return concatenate(quicksort(less), pivot, quicksort(greater))
10 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 pequena dimensão e guardam-se as soluções; solução de um problema é obtida combinando as de problemas de menor dimensão Divisão e conquista é top-down Programação dinâmica é bottom-up Abordagem é usual na Investigação Operacional Programação é aqui usada com o sentido de formular restrições ao problema que tornam um método aplicável Quando é aplicável a programação dinâmica: estratégia óptima para resolver um problema continua a ser óptima quando este é subproblema de um problema de maior dimensão
11 Aplicação directa - Fibonacci Problemas expressos recursivamente que podem ser reescritos em formulação iterativa Exemplo: números de Fibonacci /** Números de Fibonacci * versão recursiva */ n >= 0 int fib( const unsigned int n ) { if( n <= 1 ) return 1; else return fib( n-1 ) + fib( n-2 ); } /** Números de Fibonacci * versão iterativa */ int fibonacci(int n ) { int last=1, nexttolast=1, answer=1; if( n <= 1 ) return 1; for( int i = 2; i<=n; i++ ) { answer = last + nexttolast; nexttolast = last; last = answer; } return answer; }
12 Fibonacci Expressão recursiva: algoritmo exponencial Expressão iterativa: algoritmo linear Problema na formulação recursiva: repetição de chamadas iguais F6 F5 F4 F4 F3 F3 F2 F3 F2 F2 F1 F2 F1 F1 F0 F2 F1 F1 F0 F1 F0 F1 F0 F1 F0
13 Exemplo: Equação de recorrência C(n) = 2 n n 1 C(i) + n Para resolver numericamente, i =0 expressão recursiva é directa double eval( int n ) { double sum = 0.0; if( n == 0 ) return 1.0; for( int i = 0; i < n; i++ ) Sum += eval( i ); return 2.0 * sum / n + n; } Algoritmo recursivo é exponencial! Problema: repetição de chamadas
14 Chamadas Repetidas C5 C4 C3 C2 C1 C0 C3 C2 C1 C0 C2 C1 C0 C1 C0 C0 C2 C1 C0 C1 C0 C0 C1 C0 C0 C0 C1 C0 C0 C0 C0 C0
15 Solução iterativa 1 double eval(int n ) { double [ ] c = new double [n+1]; c[0] = 1.0; for( int i = 1; i <= n; i++ ) { double sum = 0.0; for( int j = 0; j < i; j++ ) sum += c[j]; Algoritmo iterativo O(n 2 ) } } c[i] = 2.0 * sum / i + i; return c[n]; Evita chamadas recursivas guardando tabela de C(n)
16 Solução iterativa 2 double eval(int n ) { double sum = 0.0; double [ ] a = new double [n+1]; a[0] = 1.0; for( int i = 1; i <= n; i++ ) a[i] = a[i-1] * a[i-1] / i + i; Algoritmo iterativo O(n) } double answer = 2.0 * a[n] / n + n; return answer; Tabela de A(n) guarda valor dos somatórios; para cada entrada basta acrescentar 1 termo
17 Algoritmos de retrocesso Algoritmos em que se geram escolhas que vão sendo testadas e eventualmente refeitas Problemas para os quais não existem algoritmos eficientes: retrocesso é melhor que pesquisa exaustiva solução é gerada e avaliada parcialmente quando uma solução parcial não satisfaz objectivos, retrocesso apenas desfaz última escolha evita-se a pesquisa em ramos que garantidamente não levam a solução - poda da árvore de pesquisa Exemplo: arranjo da mobília numa casa grande número de possibilidades cada peça de mobília é colocada, solução é arranjo satisfatório chegando a ponto onde qualquer arranjo é inconveniente, desfaz-se o último passo e tentase alternativa muitos arranjos nunca são testados
18 Problema da portagem Dados: n pontos p1, p2,..., pn situados no eixo dos xx xi é a coordenada x de pi x1= 0 determinam n (n-1)/2 distâncias d1, d2,..., dm da forma xi - xj Distâncias podem ser geradas em tempo O(n 2 ) Problema inverso: coordenadas dos pontos a partir das distâncias: mais difícil Não há algoritmo garantido como polinomial para o problema D - conjunto das distâncias D = m = n (n-1) / 2 Algoritmo que se segue: O(n 2 log n) - é conjectura
19 Exemplo D= {1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7, 8, 10} D = 15 -> n = 6 x1 = 0, x6 = 10 x1 = 0 x6 = 10 D= {1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7, 8} maior distância: 8 então x2 = 2 ou x5 = 8 (escolha é indiferente) x1 = 0 x5 = 8 x6 = 10 D= {1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7}
20 Exemplo 7 - maior valor em D -> x4 = 7 ou x2 = 3 x4 = 7 distâncias x6-7 = 3 e x5-7 = 1 estão em D x2 = 3 distâncias 3-x1 = 3 e x5-3 = 5 estão em D x1 = 0 x4 = 7 x5 = 8 x6 = 10 D= {2, 2, 3, 3, 4, 5, 5, 5, 6} 6 - maior valor em D -> x3 = 6 ou x2 = 4 x3 = 6 distância x4 - x3 = 1 impossível, já não existe 1 em D x2 = 4 distâncias x2-x1 = 4 e x5 - x2 = 4 impossível, só 1 vez 4 em D É preciso retroceder!
21 Exemplo x4 = 7 não conduziu a solução tenta-se agora x2 = 3 x1 = 0 x2 = 3 x5 = 8 x6 = 10 D= {1, 2, 2, 3, 3, 4, 5, 5, 6} 6 - maior valor em D -> x4 = 6 ou x3 = 4 x3 = 4 impossível, só 1 vez 4 em D x1 = 0 x2 = 3 x4 = 6 x5 = 8 x6 = 10 D= {1, 2, 3, 5, 5}
22 Exemplo x1 = 0 x2 = 3 x3 = 5 x4 = 6 x5 = 8 x6 = 10 D = { } x 1 =0, x 5 =10 x 5 =8 Árvore de decisão x ** 4 =7 x 2 =3 * * x 3 =6 x 2 =4 x 3 =4 x 4 =6 x 3 =5
23 Na ausência de retrocesso Anális e D pode ser mantido como árvore de pequisa equilibrada O(n 2 ) operações em D remoção: D tem O(n 2 ) elementos, não há reinserções, total é O(n 2 ) pesquisa: 1 tentativa de colocação faz no máximo 2n, total é O(n 2 ) Tempo total é O(n 2 log n) Com retrocesso: perde-se eficiência não existe limite polinomial para o retrocesso requerido não estão identificados exemplos patológicos com pontos de coordenadas inteiras e distribuídas uniformemente, conjectura é que retrocesso não ocorre mais que O(1)
24 Jogos Como jogar automaticamente um jogo estratégico? Exemplo: jogo do galo pode construir-se algoritmo que nunca perde e aproveita oportunidades para ganhar posições críticas armazenadas em tabela escolha de jogada baseada na posição corrente usando uma tabela... todo a análise do jogo feita pelo programador Em geral, em jogos não triviais não é possível dispor de decisões para todos os caminhos a partir de uma posição é preciso recomputar a cada jogada é impraticável explorar todas as hipóteses
25 Minimax Estratégia minimax função de avaliação da qualidade de uma posição 1 se posição de vitória 0 se é empate -1 se é para perder se se pode fazer avaliação por inspecção do tabuleiro: posição terminal posição não terminal: valor é determinado assumindo recursivamente jogadas óptimas de ambos os lados Um jogador tenta minimizar e o outro maximizar o valor da posição Para posição P: Se é a minha vez de jogar avalio recursivamente as posições sucessoras Ps, escolhendo o valor maior; ao avaliar Ps as suas sucessoras são avaliadas e o menor valor é escolhido (caso mais favorável para o oponente)
26 Pesquisa com limite de profundidade Em jogos complexos: inviável pesquisar todos os nós terminais para avaliar a posição parar a determinada profundidade nós onde pára a recursão tratados como nós terminais função de estimativa para avaliar nós terminais Ex: xadrez - avaliar peças e suas posições Para aumentar o factor de previsão - métodos que avaliam menos nós e não perdem informação sobre posições já avaliadas X O X X O X... X X O X O X... tabela de transposição
27 Árvore do jogo Estrutura da pesquisa de posições (nós) e valores das avaliações 44 Max 44 Min Max C Min Max A
28 44 Cortes α β Estrutura da pesquisa de posições (nós) e valores das avaliações Max 40 Min 40 D Max Min B Max
29 Corte α 44 Max Min 40 D? Valor em D não pode aumentar resultado na raiz: o seu nó pai é min e tem valor garantidamente inferior ao conseguido na raiz até ao momento
30 Corte β 44 Min Max 68 D? Valor em C não pode aumentar resultado na raiz: nó pai é max e tem valor garantidamente superior ao conseguido na raiz até ao momento
Algoritmos de retrocesso
Algoritmos de retrocesso Algoritmos em que se geram escolhas que vão sendo testadas e eventualmente refeitas Problemas para os quais não existem algoritmos eficientes: retrocesso é melhor que pesquisa
Té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
Aná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
CAL ( ) - MIEIC/FEUP Programação Dinâmica ( )
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
Divisã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
Análise de Complexidade para algoritmos iterativos e recursivos
Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa Análise de Complexidade para algoritmos iterativos e recursivos Algoritmos iterativos - complexidade expressa através de somatórios. Algoritmos
Programaçã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
INTELIGÊNCIA ARTIFICIAL 2008/09
INTELIGÊNCIA ARTIFICIAL 2008/09 JOGOS Ex. 1) ( Teste 2005/06) Considere a seguinte árvore de procura de dois agentes. Reordene as folhas de modo a maximizar o número de cortes com uma procura da esquerda
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista (2.1-2.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material desenvolvido por Andréa Iabrudi
Programaçã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
Ex. 1) Considere que a árvore seguinte corresponde a uma parte do espaço de estados de um jogo de dois agentes: f=7 f=7 f=1 f=2
LERCI/LEIC Tagus 2005/06 Inteligência Artificial Exercícios sobre Minimax: Ex. 1) Considere que a árvore seguinte corresponde a uma parte do espaço de estados de um jogo de dois agentes: Max Min f=4 f=7
Fernando 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
Busca Competitiva. Inteligência Artificial. Até aqui... Jogos vs. busca. Decisões ótimas em jogos 9/22/2010
Inteligência Artificial Busca Competitiva Aula 5 Profª Bianca Zadrozny http://www.ic.uff.br/~bianca/ia-pos Capítulo 6 Russell & Norvig Seção 6.1 a 6.5 2 Até aqui... Problemas sem interação com outro agente.
CEFET/RJ Disciplina: Inteligência Artificial Professor: Eduardo Bezerra Lista de exercícios 02
. CEFET/RJ Disciplina: Inteligência Artificial Professor: Eduardo Bezerra Lista de exercícios 02 Créditos: alguns itens desta lista são adaptados do material da disciplina CS188 - Artificial Intelligence
Algoritmos de Ordenação em LISP
Algoritmos de Ordenação em LISP Léo Willian Kölln 8 de Agosto de 2006 Curso de Ciências da Computação Programação Funcional - INE5363 INE - Departamento de Informática e Estatística CTC - Centro Tecnológico
Alternativamente pode ser pensado como uma forma de maximizar o minimo ganho possível.
Inteligência Artificial Algoritmo i com cortes Alfa-Beta Ana Saraiva 050509087 Ana Barbosa 050509089 Marco Cunha 050509048 Tiago Fernandes 050509081 FEUP - MIEIC 3ºAno/ºSemestre 1 Introdução O algoritmo
Sumário. Decisões óptimas em jogos (minimax) Cortes α-β Decisões imperfeitas em tempo real
Jogos Capítulo 6 Sumário Decisões óptimas em jogos (minimax) Cortes α-β Decisões imperfeitas em tempo real Jogos vs. Problemas de Procura Adversário imprevisível" necessidade de tomar em consideração todas
BCC202 - 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: [email protected]
Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente
istemas Inteligentes, 10-11 1 Jogos com ponentes Problemas de busca: não assumem a presença de um oponente Jogos: oponente INCERTEZA! Incerteza porque não se conhece as jogadas exatas do oponente e não
Programaçã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
Jogos com Oponentes. espaço de busca muito grande tempo para cada jogada
Jogos com Oponentes Jogos com Oponentes ˆ Problemas de busca: não assumem a presença de um oponente ˆ Jogos: oponente INCERTEZA! ˆ Incerteza porque não se conhece as jogadas exatas do oponente e não por
Té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/ [email protected]
Jogos com Oponentes. Problemas de busca: não assumem a presença de um oponente
Sistemas Inteligentes, 13-14 1 Jogos com ponentes Problemas de busca: não assumem a presença de um oponente Jogos: oponente INCERTEZA! Incerteza porque não se conhece as jogadas exatas do oponente e não
Comparaçã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
Recursividade. 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
É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser
É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número
Bubble Sort. Tempo total O(n 2 )
Bubble Sort Considere uma seqüência de n elementos que se deseja ordenar. O método da bolha resolve esse problema através de várias passagens sobre a seqüência Não é um algoritmo eficiente, é estudado
Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então
Aná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
Inteligência Artificial. Resolução de problemas por meio de algoritmos de busca. Aula VI Busca Competitiva
Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação http://www.inf.unioeste.br/~claudia/ia2017.html Inteligência Artificial Resolução de problemas por meio de algoritmos
Aná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
AED2 - 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
Busca competitiva. Inteligência Artificial. Profª. Solange O. Rezende
Profª. Solange O. Rezende 1 O que vimos até agora... Busca não informada Baseada somente na organização de estados e a sucessão entre eles Busca informada Utiliza, também, informações a respeito do domínio
Estruturas de Dados 2
Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Dividir e Conquistar IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/83 Projeto de Algoritmos por Divisão
Introdução à Inteligência Artificial. Procura em contextos competitivos jogos (cont.)
Introdução à Inteligência Artificial Procura em contextos competitivos jogos (cont.) Sumário n Vimos Jogos de 2 jogadores n Determinísticos, soma nula, informação perfeita Estratégia óptima minimax Algoritmos
PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos
UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE COMPUTAÇÃO BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos ( X ) SEMESTRAL - ( ) ANUAL CÓDIGO: GBC052 PERÍODO:
Tecnicas Essencias Greedy e Dynamic
Tecnicas Essencias Greedy e Dynamic Paul Crocker RELEASE - Reliable and Secure Computation Group Universidade da Beira Interior, Portugal October 2010 1 / 27 Outline 1 Introdução 2 Exemplo Greedy I : Interval
Algoritmos de Ordenação: MergeSort
Algoritmos de Ordenação: MergeSort 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 [email protected] 10/2008 Material
Estruturas 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
PROCURA E PLANEAMENTO
PROCURA E PLANEAMENTO Primeiro Exame 12 de Janeiro de 2006 17:00-19:00 Este exame é composto por 13 páginas contendo 6 grupos de perguntas. Identifique já todas as folhas do exame com o seu nome e número.
SCC-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
Paradigmas 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
Algoritmos e Estruturas de Dados
Algoritmos e Estruturas de Dados Ano Lectivo 2009/10 Margarida Mamede DI FCT/UNL Capítulo I Apresentação e Avaliação Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo I 1 Enquadramento na LEI IP Introdução
Solução de Recorrências
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Solução de Recorrências Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ [email protected]
Introdução Paradigmas
Introdução Paradigmas Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 1 Introdução O projeto de algoritmos requer abordagens
Aná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
SCC Capítulo 6 Paradigmas e Técnicas de Projetos de Algoritmos
SCC-501 - Capítulo 6 Paradigmas e Técnicas de Projetos de Algoritmos João Luís Garcia Rosa 1 1 Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis
Teoria da Computação. Aula 4 Técnicas de Análise 5COP096. Aula 4 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr
5COP096 Teoria da Computação Aula 4 Prof. Dr. Sylvio Barbon Junior 1 Sumário 1) Técnicas de Análise de Algoritmos 2) Paradigmas de Projeto de Algoritmos 1) Indução 2) Recursão 3) Algoritmos Tentativa e
BCC204 - Teoria dos Grafos
BCC204 - Teoria dos Grafos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Haroldo Gambini Santos) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal
Projeto 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
Backtracking. Backtracking
Notas de aula da disciplina IME 0-0 ALGORITMOS E ESTRUTURAS DE DADOS II Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) É uma técnica de solução de problemas (construção de algoritmos) que eamina
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)
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
Algoritmos de Ordenação
Algoritmos de Ordenação! Problema: encontrar um número de telefone em uma lista telefônica! simplificado pelo fato dos nomes estarem em ordem alfabética! e se estivesse sem uma ordem?! Problema: busca
Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência
Busca Binária Aula 05 Equações com Recorrência Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Idéia: Divisão e Conquista Busca_Binária(A[l...r],k) 1:if r < lthen 2: index = 1
04 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
EXPLORANDO GRAFOS 1. Grafos e Jogos uma introdução
1. Grafos e Jogos uma introdução Considere o seguinte jogo, o qual é uma das muitas variantes de Nim, também conhecido como jogo Marienbad. Inicialmente existe uma certa quantidade de fósforos na mesa
Projeto e Análise de Algoritmos
Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais [email protected] 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter
PROGRAMAÇÃ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
Problema 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
QUESTÕES DE PROVAS ANTIGAS
CT-24 QUESTÕES DE PROVAS ANTIGAS ) Preencha a tabela abaixo com Î ou Ï: ω(log n) Θ(n) O(n log n) Ω(n 2 ) o(n ) 6n + 2n 2 + 2.log n + 4n + n.log n + log n 2) Dada a árvore binária abaixo, escreva os seus
Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP
Aula 13: Ordenação - Heapsort Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Filas de Prioridades É uma estrutura de dados onde a chave de cada item reflete sua habilidade relativa de abandonar
Algoritmos e Estruturas de Dados LEE 2013/2014. popular devido à facilidade de implementação e eficiência
Algoritmos e Estruturas de Dados LEE 2013/2014 Algoritmos de Ordenação Parte II Quicksort [1] Provavelmente o algoritmo mais usado inventado nos anos 60 muito estudado e analisado desempenho bem conhecido
Árvore de Jogos Minimax e Poda Alfa-Beta
Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Árvore de Jogos Minimax e Poda Alfa-Beta Inteligência Artificial Site: http://jeiks.net E-mail: [email protected]
Algoritmos de Ordenação: QuickSort
Algoritmos de Ordenação: QuickSort 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 [email protected] 10/2008 Material
Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica. Prof. Humberto Brandão
Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica Prof. Humberto Brandão [email protected] Universidade Federal de Alfenas versão da aula: 0.3 Programação Dinâmica
Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo
Arquivos Sequenciais Estruturas de Dados II Vanessa Braganholo Arquivos Sequenciais } Pq arquivos sequenciais? Relembrando } Relembrando: uma tabela ou arquivo é um conjunto de registros que possuem a
PLANO ANALÍTICO DA DISCIPLINA DE ESTRUTURA DE DADOS E ALGORÍTMOS
O Regente PLANO ANALÍTICO DA DISCIPLINA DE ESTRUTURA DE DADOS E ALGORÍTMOS Curso: Licenciatura em Informtica Ano: 2º Semestre: 3º Docente: Arlete Ferrão/Calisto Comé Monitor: Edson Pessane Ano Lectivo:
Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia
Introdução à Análise de Algoritmos Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia Aula de hoje Nesta aula veremos: Sobre a disciplina Exemplo: ordenação Sobre a disciplina
Técnicas para Implementação de Jogos
Técnicas para Implementação de Jogos Solange O. Rezende Thiago A. S. Pardo Considerações gerais Aplicações atrativas para métodos de IA Formulação simples do problema (ações bem definidas) Ambiente acessível
Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10
Análise e Síntese de Algoritmos Revisão CLRS, Cap. 7-10 Contexto Revisão Algoritmos e complexidade Notação Fundamentos: somatórios, recorrências, etc. Exemplos de algoritmos Ordenação Procura Selecção
