A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Experimentação Algorítmica

Apresentações semelhantes


Apresentação em tema: "Experimentação Algorítmica"— Transcrição da apresentação:

1 Experimentação Algorítmica
Aula 2 Baseada em B. M. E. Moret, Towards a Discipline of Experimental Algorithms

2 Introdução (1) Implementação era característica dos primeiros trabalhos em algoritmos e estruturas de dados. Knuth e Floyd pioneiros em “dicas” práticas. Bentley demonstrou o valor da implementação e teste de algoritmos.

3 Introdução (2) Somente nos últimos anos voltou-se a ter a implementação e teste como parte do desenvolvimento de algoritmos. Experimentação como parte de uma ciência exata. Empirismo Aceitável em ciências naturais, na qual as “leis da natureza” podem ser modeladas.

4 Introdução (3) Os algoritmos em si é que são medidos e não um modelo.
Não há como compará-los com um resultado padrão, somente comparar com outros experimentos do mesmo tipo.

5 Análise Teórica (1) Análise teórica baseada no comporta-mento assintótico de pior caso. Comportamento assintótico elimina confusões potenciais no comportamento em instâncias pequenas devido ao tempo de inicialização e mostra a taxa de crescimento no tempo de execução.

6 Análise Teórica (2) O pior caso fornece limites claros e simplifica a análise pois elimina suposições sobre os dados. Este tipo de análise: Fácil de comunicar e entender. Independente de máquina.

7 Problemas com a Análise Teórica (1)
A faixa de valores na qual o comportamento assintótico aparece pode incluir valores que estão bem além de qualquer aplicação. A constante oculta pode ser proibitiva a qualquer implementação, mesmo que a taxa de crescimento seja baixa.

8 Problemas com a Análise Teórica (2)
O comportamento de pior caso pode ser restrito a um pequeno subconjunto de instâncias encontradas na prática. A obtenção de bons limites assintóticos pode ser muito difícil. A análise assintótica de pior caso tende a favorecer o desenvolvimento de algoritmos de “lápis e papel”.

9 Algoritmos em “lápis e papel”
Muitos algoritmos foram desenvolvidos baseados em outros algoritmos e estruturas de dados teóricos, o que dificulta suas implementações, uma vez que seria necessário implementar os algoritmos e estruturas de dados intermediários.

10 Engenharia de Algoritmos (1)
Transformação de algoritmos “lápis e papel” em implementações úteis e eficientes. Pode melhorar sensivelmente o tempo de execução do código. Levar a bibliotecas robustas de estruturas de dados com overhead mínimo.

11 Engenharia de Algoritmos (2)
Muitos algoritmos devem ser implementados e não só projetados. Uma implementação força os teóricos a visualizar detalhes escondidos na fase de projeto de alto nível. Aprofunda o conhecimento do algoritmo e pode resultar em uma simplificação ou levar a novas conjecturas.

12 Modelos de Avaliação Empírica
Checagem de exatidão e corretude em casos extremos. Séries de testes padronizados para computação numérica. Avaliação da qualidade das heurísticas para a solução aproximada de problemas NP-difíceis. Em computação numérica isto já é feito com certo grau de maturidade.

13 Modelos de Avaliação Empírica
Medidas de tempo de execução de algoritmos exatos em instâncias reais de problemas NP-difíceis. Comparação de desempenho real de algoritmos “rivais” para problemas tratáveis e caracterização dos efeitos da Engenharia de Algoritmos.

14 Modelos de Avaliação Empírica
Esforço particularmente especializado. Ausência de um bom modelo. Determinação de ganho obtido por algoritmos paralelos em máquinas reais. Investigação e refinamento de modelos e critérios de otimização. O que poderia ser otimizado? Que parâmetros importam? Teste da qualidade e robustez de simulações, de estratégias de otimização, etc. É de grande interesse atualmente, prin-cipalmente em Biologia Computacional e Química Computacional

15 Avaliação de Algoritmo “Rivais” e Estruturas de Dados para Problemas Tratáveis
Objetivo é medir o desempenho real de algoritmos “rivais” para problemas bem solucionados. Construção de algoritmos e implementações nos quais são explorados detalhes de cache e arquitetura, que melhoram o desempenho dos algoritmos.

16 Avaliação de Heurísticas (1)
O objetivo é medir o desemplenho de heurísticas em instâncias reais e artificiais e melhorar o entendimento teórico do problema, de forma a obter heurísticas melhores ainda ou mostrar que já se tem a melhor. No desempenho, mede-se o tempo de execução e a qualidade da solução.

17 Avaliação de Heurísticas (2)
Geração de instâncias de testes significativos. Derivação de limites inferiores fortes. Permitem a avaliação da qualidade das heurísticas.

18 O que está sendo feito Teste e melhora de algoritmos para problemas difíceis. Comparação de algoritmos existentes e estruturas de dados para problemas tratáveis. Engenharia de Algoritmos. Conjecturas de suporte e refinamento. Ferramentas de Desenvolvimento. Condução de experimentos para avaliar a relevância de critérios de otimização.

19 Teste e melhora de algoritmos para problemas difíceis (1)
Avaliação mais simples através da caracterização do tempo de execução de pior caso do que o desenvolvimento de uma classificação de dados de entrada em termos de alguns parâmetros suficientes para prever o desempenho dos algoritmos para a maioria dos casos.

20 Teste e melhora de algoritmos para problemas difíceis (2)
Experimentação auxilia a avaliação de desempenho de um algoritmo em instâncias reais e desenvolver limites nas quais a execução é rápida e instâncias em que comportamento exponencial ocorre.

21 Comparação de algoritmos e estruturas de dados existentes para problemas tratáveis
Diferencia boas e más implementações. Evidencia se boas vantagens teóricas também o são na prática. Leva a refinamentos e simplificações. Permite a determinação das constantes do tempo de execução. Experimentação inclui os efeitos do cache.

22 Engenharia de Algoritmos
Procura produzir a mais eficiente e útil implementação possível. Teste e refinamento são usados para melhorar o desempenho. Podemos destacar: Redução do uso da memória. Alteração dos padrões de endereçamento. Desenrolando laços de forma a manter as variáveis em registradores. Verificar quais informações são realmente úteis e como são usadas em cada etapa do algoritmo. Obteve-se um ganho de 3 ordens de magnitude.

23 Apoiando e Refinando Conjecturas
Teste de conjecturas para um intervalo de instâncias. Experimentos são fontes de novas conjecturas e teoremas.

24 Ferramentas de Desenvolvimento

25 Configurando Experimentos

26 O que medir?

27 Como apresentar e analisar os dados?


Carregar ppt "Experimentação Algorítmica"

Apresentações semelhantes


Anúncios Google