Introdução Paradigmas

Documentos relacionados
Paradigmas de Projetos de Algoritmos

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

Projeto e Análise de Algoritmos

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

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão

Estruturas de Dados 2

Revisão: Tipo Abstrato de Dados Recursividade

BCC202 - Estrutura de Dados I

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

Algoritimos e Estruturas de Dados III CIC210

Técnicas de Projeto de Algoritmos

Análise de Algoritmos Parte 4

ANÁLISE DE ALGORITMOS

Recursividade. Objetivos do módulo. O que é recursividade

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

Backtracking. Túlio Toffolo Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada

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

TEORIA: 60 LABORATÓRIO: 0

Paradigmas de Projeto de Algoritmos

Teoria da Computação. Aula 4 Técnicas de Análise 5COP096. Aula 4 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

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

Quantidade de memória necessária

3 Aprendizado por reforço

Medida do Tempo de Execução de um Programa

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

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016

Aula 10: Tratabilidade

Recursividade, Tentativa e Erro

Tentativa e Erro (Backtracking)

Algoritmos de Ordenação

Aula prática 5. Funções Recursivas

Algoritmos Tentativa e Erro (Backtracking) Prof.: Jonas Potros

Algoritmos Genéticos. Princípio de Seleção Natural. Sub-áreas da Computação Evolutiva. Idéias básicas da CE. Computação Evolutiva

Paradigmas de Projeto de Algoritmos

Complexidade de Algoritmos. Edson Prestes

Teoria dos Grafos Aula 24

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Técnicas de projeto de algoritmos: Indução

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Estruturas de Dados 2

QuickSort. Estrutura de Dados II Jairo Francisco de Souza

Complexidade de Algoritmos. Edson Prestes

Algoritmos e Estruturas de Dados I. Recursividade. Pedro O.S. Vaz de Melo

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

Paradigmas de Projeto de Algoritmos

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

Métodos para resolver problemas de otimização restrita

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

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

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

Recursividade Exaustiva e Backtracking

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

Projeto de Algoritmos e Indução Matemática

Complexidade de Algoritmos

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

Paradigmas de Projeto de Algoritmos

Projeto e Análise de Algoritmos

Algoritmo Genético. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto

Buscas Informadas ou Heurísticas - Parte II

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição

6. Pesquisa e Ordenação

Análise de complexidade

Árvore Binária de Busca Ótima

Projeto e Análise de Algoritmos

3. Resolução de problemas por meio de busca

Algoritmos Avançados Análise de Complexidade

ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão

Técnicas de Desenho de Algoritmos

Utilização do Conjunto de Cantor para a resolução da Torre de Hanoi

Algoritmos Genéticos. Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008

AVALIAÇÃO DE CONHECIMENTO ESPECÍFICO

4 Métodos Existentes. 4.1 Algoritmo Genético

Projeto e Análise de Algoritmos

Teoria dos Grafos Aula 23

Algoritmos 3/17/ Algoritmos como área de estudo e investigação

Aprendizado, minimização do arrependimento e equilíbrio (Learning, Regret Minimization, and Equilibria)

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

Análise de algoritmos

Busca com informação e exploração. Capítulo 4 Russell & Norvig Seção 4.2 e 4.3

Roteiro Prático Nº 13 Recursividade

Inteligência Artificial

Fabio G. Cozman, Thiago Martins 2017

Transcrição:

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 adequadas A forma como um algoritmo aborda o problema pode levar a um desempenho ineficiente Em certo casos, o algoritmo pode não conseguir resolver o problema em tempo viável 2 1

Introdução Infelizmente, não existe um paradigma que seja o melhor dentre todos! Um problema pode ser resolvido de maneira mais eficiente adotando-se um paradigma do que outro Um paradigma pode levar a um algoritmo O(2 n ) e outro paradigma a um algoritmo O(n 3 ), para a resolução de um mesmo problema 3 Introdução Por exemplo Como ordenar um vetor de inteiros? Como realizar o produto entre n matrizes de modo que o número de operações seja o menor possível? Problema da mochila Considere n itens a serem levados para uma viagem, dentro de uma mochila de capacidade L que não pode comportar todos os itens. Cada item tem um peso w i e uma utilidade c i. Quais itens escolher, de modo que a utilidade total dos itens levados seja a maior possível? 4 2

Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 5 Recursividade Paradigma ou técnica de programação? Alguns critérios devem ser observados Definição recursiva do problema Condição de parada Garantia de terminar Soluções mais elegantes e claras 6 3

Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 7 Algoritmos tentativa e erro Um algoritmo tentativa e erro é aquele que testa exaustivamente todas as soluções possíveis de um problema, de modo a obter a desejada As soluções são testadas indiscriminadamente Não utiliza critérios para eliminar outras soluções que não poderão ser melhores que a obtida no estágio considerado 8 4

Algoritmos tentativa e erro As soluções são enumeradas de modo semelhante ao percurso em uma árvore que possua todas as soluções Muitas vezes a árvore de soluções cresce exponencialmente! 9 Algoritmos tentativa e erro Exercício: Qual o menor caminho da cidade a até a c? 10 5

Algoritmos tentativa e erro Exercício: TODOS os caminhos são enumerados: a b c : 21 a b d c : 32 a b f d c : 51... 11 Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 12 6

Divisão e conquista Passos básicos 1. Dividir o problema a ser resolvido em subproblemas menores e independentes 2. Encontrar soluções para as partes 3. Combinar as soluções obtidas em uma solução global Os algoritmos podem utilizar recursão para dividir e combinar 13 Divisão e conquista Processo (geralmente recursivo) dada uma entrada, se ela é suficientemente simples, obtemos diretamente uma saída correspondente caso contrário, ela é decomposta em entradas mais simples, para as quais aplicamos o mesmo processo, obtendo saídas correspondentes que são então combinadas em uma saída para a entrada original 14 7

Divisão e conquista Exemplos de algoritmos? 15 Divisão e conquista Exemplos de algoritmos Busca binária Mergesort, Quicksort Maior elemento de uma seqüência Fibonacci recursivo 16 8

Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados Lucía 17 Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 18 9

Algoritmos gulosos São tipicamente usados para resolver problemas de otimização Por exemplo, o algoritmo para encontrar o caminho mais curto entre duas cidades Um algoritmo guloso escolhe a estrada que parece mais promissora no instante atual e nunca muda essa decisão, independentemente do que possa acontecer depois 19 Algoritmos gulosos A cada iteração seleciona um elemento conforme uma função gulosa marca-o para não considerá-lo novamente nos próximos estágios atualiza a entrada examina o elemento selecionado quanto a sua viabilidade decide a sua participação ou não na solução 20 10

Algoritmos gulosos Exercício: Calcule o menor caminho da cidade a até a c, utilizando um algoritmo guloso. 21 Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 22 11

Algoritmos aproximados Gera soluções aproximadas, que podem não ser ótimas, mas são próximas delas Faz-se necessária uma medida de qualidade Exemplos? 23 Algoritmos aproximados Gera soluções aproximadas, que podem não ser ótimas, mas são próximas delas Faz-se necessária uma medida de qualidade Exemplos? Caixeiro viajante (menor caminho entre cidades) Tradução automática 24 12

Considerações finais Outros paradigmas? 25 Considerações finais Outros paradigmas? Indução matemática Balanceamento (ou técnica?) Algoritmos paralelos 26 13