Estruturas de Dados 2

Documentos relacionados
ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

Estruturas de Dados 2

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Estruturas de Dados 2

Projeto e Análise de Algoritmos. Introdução. Prof. Ademir Constantino Universidade Estadual de Maringá Departamento de Informática

Análise de Algoritmos Estrutura de Dados II

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho

Teoria da computabilidade Indecidíveis Decidíveis

Análise e Técnicas de Algoritmos

Construção de Algoritmos II Aula 06

Análise de complexidade

Introdução à Ciência da Computação II

Complexidade de algoritmos Notação Big-O

6.Elaboração de algoritmos...13

ção de Computadores II

Complexidade de Tempo e Espaço

Pra início de conversa... O que é um algoritmo? Exemplos de algoritmos. Como podemos descrever algoritmos? Como podemos descrever algoritmos?

Técnicas de Projeto de Algoritmos

4º 20/10/2003. ÍNDICE

Linguagens de Programação

Estruturas de Dados 2

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

2. Complexidade de Algoritmos

Aula 1. Teoria da Computação III

Análise e Projeto de Algoritmos

Introdução. à Ciência da. Representação de Números em Ponto Flutuante. Aula 21. Números Fracionários

Teoria da Computação Aula 9 Noções de Complexidade

ALGORITMOS AVANÇADOS Lista de Exercícios 01. Luiz Leão

Universidade Federal do Espírito Santo Departamento de Informática 1 o Trabalho de Algoritmos Numéricos I - 14/2 Sistemas Lineares

Complexidade de Algoritmos

Técnicas de análise de algoritmos

AULA: Introdução à Informática I

Análise de algoritmos. Parte I

BCC202 - Estrutura de Dados I

Desempenho. Na otimização do projeto, as métricas mais importantes são custo e desempenho. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 1

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

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

MEMÓRIA CACHE FELIPE G. TORRES

Introdução à Ciência da Computação II

Requisitos de Software

Análise empírica de algoritmos de ordenação

18/10/2010. Unidade de Controle Controle. UC Microprogramada

Introdução a Teste de Software

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.

01 Análise de Algoritmos (parte 1) SCC201/501 - Introdução à Ciência de Computação II

#Conceituação. Algoritmos. Eliezio Soares

01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II

Organização de Sistemas Computacionais Processadores: Organização da CPU

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)

Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)

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

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

Comportamento assintótico

Cálculo Numérico BCC760

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

CLP. Curso de Formação Profissional Técnico em Eletroeletrônica Módulo III Senai Arcos-MG

Gerenciamento da Integração de Projetos. Parte 03. Gerenciamento de Projetos Espaciais CSE-301. Docente: Petrônio Noronha de Souza

1.1 o que é um algoritmo... 6

Teoria da Computação. Computabilidade e complexidade computacional

Aula 3: Algoritmos: Formalização e Construção

COMPLEXIDADE DE ALGORITMOS

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

Teoria da Computação Aula 8 Noções de Complexidade

Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. RISC versus CISC

BCC202 - Estrutura de Dados I

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 12: MEMÓRIA CACHE: FUNÇÃO DE MAPEAMENTO (PARTE 1)

SSC643 -Avaliação de Desempenho de Sistemas Computacionais Sarita Mazzini Bruschi

Cérebro humano versus Computador digital

SSC0611 Arquitetura de Computadores

BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade

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

Análise de Complexidade de Algoritmos

4. Algoritmos de Busca em Vetores

Transcrição:

Estruturas de Dados 2 Análise Empírica de Algoritmos IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/13

Análise da Eficiência de Algoritmos: Velocidade de Execução; Quantidade de Memória utilizada; Análise Matemática: Algoritmos não-recursivo; Algoritmos recursivos(recorrências); Análise não-matemática ou Empírica : O que é? Para que serve? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 2/13

Análise da Eficiência de Algoritmos: Velocidade de Execução; Quantidade de Memória utilizada; Análise Matemática: Algoritmos não-recursivo; Algoritmos recursivos(recorrências); Análise não-matemática ou Empírica : O que é? Para que serve? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 3/13

Análise da Eficiência de Algoritmos: Velocidade de Execução; Quantidade de Memória utilizada; Análise Matemática: Algoritmos não-recursivo; Algoritmos recursivos(recorrências); Análise não-matemática ou Empírica : O que é? Para que serve? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 4/13

Análise Empírica(ou não-matemática) - O que é? Estudo do tempo de execução; Contagem do número de vezes em que cada instrução é executada; (ou) Temporização de cada segmento do código; Alternativa à técnicas matemáticas de análise; Capaz de avaliar o algoritmo no caso médio, ao invés de se ater ao pior caso ; Também conhecida como profiling, ou performance analisys ; IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 5/13

Para que serve? É uma forma dinâmica de avaliar o desempenho do algoritmo; Contar quantas vezes cada ação é executada, ou quanto tempo demora cada parte do algoritmo, visando otimização do mesmo. Localização de gargalos, onde são gastos a maior quantidade (percentual) do tempo na execução do programa; Otimização de Constantes de Tempo!!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 6/13

Análise Empírica Como fazer: 1) Selecionar o Algoritmo a ser analisado (módulo de um sistema, função, etc...) 2) Definir o critério a ser utilizado (tempo de execução ou quantidade de execução de quais operações) 3) Implementar o algoritmo de uma forma propícia para análise (isolar o algoritmo) 4) Gerar um conjunto de testes capaz de avaliar o desempenho do algoritmo (tamanhos variados 1n-2n-4n-8n-16n-32n-... ou 1n-10n-100n-1000n-...) 5) Executar o algoritmo 6) Analisar os resultados obtidos IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 7/13

Análise Empírica Objetivos: Avaliar corretude do algoritmo(achar erros) Comparar a eficiência de diferentes algoritmos Comparar implementações alternativas do mesmo algoritmo (otimização de constantes!) Identificar a complexidade do algoritmo (estimativa) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 8/13

Análise Empírica Uso comum: Utilizar o algoritmo/módulo/função no próprio sistema onde o mesmo está implementado; Incluir contador de execuções de linha de código / função, buscando identificar onde vale a pena aplicar esforços de otimização; Determinar tempo de execução de cada função/módulo através de temporizadores (t fim t início )...mas cuidado com arredondamentos (tempo=0), e tempo de execução versus tempo real (usertime) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 9/13

Análise Empírica Como avaliar os resultados: Tabular os dados para diversos tamanhos de entradas; Avaliar o gráfico de temporização, procurando identificar a classe de complexidade do algoritmo; Tempo Tempo Tamanho da Entrada Tamanho da Entrada IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 10/13

Análise Empírica Vantagens: Aplicável a qualquer algoritmo/função/módulo; Pode ser feita dentro do próprio sistema onde o algoritmo se encontra; Permite ter uma noção da ordem de complexidade (notação O); Permite otimização de constantes, ou seleção de um algoritmo mais adequado por meio de comparações(sem análise matemática); IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 11/13

Análise Empírica Desvantagem: Depende das características específicas do ambiente de teste (clock do computador, etc...) Não permite comparações genéricas com algoritmos cujos testes foram realizados em outro ambiente IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 12/13

Análise Empírica Resumo: Alternativa ao estudo matemático de algoritmos Utiliza dados e avaliações de tempo para calcular a complexidade aproximada de uma determinada implementação de um algoritmo Profiling ou Análise de Desempenho IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 13/13