ANÁLISE DE COMPLEXIDADE DE ALGORITMOS

Documentos relacionados
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)

Estudando complexidade de algoritmos

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 1-3

Análise de Complexidade de Algoritmos

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2007.

Análise de Algoritmos. Análise de Algoritmos. Análise de Algoritmos. Análise de Algoritmos. Análise de Algoritmos. Análise de Algoritmos

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

Quicksort. Algoritmos e Estruturas de Dados II

ORDENAÇÃO 1. ORDENAÇÃO POR TROCA

Análise de complexidade

Ordenação por Partição (Quick Sort)

Ordenação. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Ordenação e Busca em Arquivos

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

Introdução. Objetivo da Ciência da Computação. Regra Geral. Nenhuma implementação excelente salva um Algoritmo inadequado.

Complexidade de Algoritmos Aula 5

Introdução a Complexidade de Algoritmos

Ordenação (Parte 1) Prof. Túlio Toffolo BCC202 Aula 13 Algoritmos e Estruturas de Dados I

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

1. ORDENAÇÃO POR TROCA ORDENAÇÃO. 1.1 Ordenação por Bolha. Exemplo, 25, 57, 48, 37, 12, 92, 86, 33. Algoritmo. Complexidade de Tempo

Busca binária. Busca em arquivos. Busca binária. Busca binária. Ordenação e busca em arquivos

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

Ordenação por Troca. Bubblesort Quicksort

Introdução à Computação

Introdução. Objetivo da Ciência da Computação. Regra Geral. Problema Algoritmo Implementação. Projeto e Análise de. Algoritmo 3

Análise Infinitesimal II LIMITES DE SUCESSÕES

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

PROGRAMAÇÃO E ALGORITMOS (LEII) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2016/2017

Análise de Algoritmos

Sucessão de números reais. Representação gráfica. Sucessões definidas por recorrência. Introdução 8. Avaliação 18 Atividades de síntese 20

Fontes Bibliográficas. Estruturas de Dados Aula 14: Recursão. Introdução. Introdução (cont.)

Recorrências. Universidade Federal do Amazonas Departamento de Eletrônica e Computação

1 Amintas engenharia

Critérios de correção e orientações de resposta p-fólio

Séquências e Séries Infinitas de Termos Constantes

Complexidade de Algoritmos

5. O algoritmo dos mínimos quadrados

Algoritmos de Iluminação Global

INF 1010 Estruturas de Dados Avançadas

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

REVISÃO DE PROBABILIDADE E ESTATÍSTICA. Parte 2

Problemas de Afectação

Métodos Quantitativos para Ciência da Computação Experimental Aula #4

DISTRIBUIÇÃO AMOSTRAL E ESTIMAÇÃO PONTUAL INTRODUÇÃO ROTEIRO POPULAÇÃO E AMOSTRA. Estatística Aplicada à Engenharia

Prova Escrita de MATEMÁTICA A - 12o Ano a Fase

Distribuições Amostrais

1.1. Ordem e Precedência dos Cálculos 1) = Capítulo 1

ESCUTANDO O COEFICIENTE DE RESTITUIÇÃO E A ACELERAÇÃO

étodos uméricos MÉTODO DOS MOMENTOS - MOM Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

) E X. ) = 0 2 ( 1 p ) p = p. ) E 2 ( X ) = p p 2 = p ( 1 p ) ( ) = i 1 n. ( ) 2 n E( X) = ( ) = 1 p ( ) = p V ( X ) = E ( X 2 E X

Uma recorrência é uma equação que descreve uma função em termos do seu valor em entradas menores

Provas de Matemática Elementar - EAD. Período

Distribuições Amostrais

Virgílio A. F. Almeida DCC-UFMG 1/2005

Aula 5 Teorema central do limite & Aplicações

Mas o que deixou de ser abordado na grande generalidade desses cursos foi o estudo dos produtos infinitos, mesmo que só no caso numérico real.

1. Definição e conceitos básicos de equações diferenciais

Revisando... Distribuição Amostral da Média

Exercício de Revisao 1

Capítulo VII: Soluções Numéricas de Equações Diferenciais Ordinárias

Representação de Números em Ponto Flutuante

Projeto e Análise de Algoritmos Aula 2: Função de Complexidade Notação Assintótica (GPV 0.3)

3ª Lista de Exercícios de Programação I

IV - Fractais. Referência Principal: Chaos K. Alligood, T. D. Sauer, J. A. Yorke Springer (1997)

DESIGUALDADES, LEIS LIMITE E TEOREMA DO LIMITE CENTRAL. todas as repetições). Então, para todo o número positivo ξ, teremos:

2.2. Séries de potências

MAE Introdução à Probabilidade e Estatística II Resolução Lista 1

AULA 1. Administração. Página da disciplina:

) E 2 ( X) = p p 2 = p( 1 p) ) = 0 2 ( 1 p) p = p ( ) = ( ) = ( ) = p. F - cara (sucesso) C - coroa (insucesso)

Fundamentos de Análise Matemática Profª Ana Paula. Sequência Infinitas

F- MÉTODO DE NEWTON-RAPHSON

10 - Medidas de Variabilidade ou de Dispersão

3. Seja C o conjunto dos números complexos. Defina a soma em C por

Lista de Exercícios #6 Assunto: Propriedade dos Estimadores e Métodos de Estimação

Cap. 4 - Estimação por Intervalo

Sumário. 2 Índice Remissivo 17

Como se decidir entre modelos

Sistemas Operacionais. Gerência de Memória. Edeyson Andrade Gomes.

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2008/2009

Programação de Computadores II. Recursividade

. Dessa forma, quanto menor o MSE, mais a imagem

Capítulo 12 - Análise da eficiência de algoritmos

Amostras Aleatórias e Distribuições Amostrais. Probabilidade e Estatística: afinal, qual é a diferença?

Projeto e Análise de Algoritmos

Economia Florestal. A floresta como um capital

Um estudo das permutações caóticas

PROF. DR. JACQUES FACON

PROJETO E ANÁLISES DE EXPERIMENTOS (PAE) PROJETO FATORIAL 2 k COMPLETO E REPLICADO. Dr. Sivaldo Leite Correia

6.1 Estimativa de uma média populacional: grandes amostras. Definição: Um estimador é uma característica amostral (como a média amostral

Teoria dos Grafos Aula 7

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

MATEMÁTICA II. Profa. Dra. Amanda Liz Pacífico Manfrim Perticarrari

Stela Adami Vayego Estatística II CE003/DEST/UFPR

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

Caderno de Exercício 2

Introdução. Exemplos. Comparar três lojas quanto ao volume médio de vendas. ...

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

MATEMÁTICA CADERNO 1 CURSO E FRENTE 1 ÁLGEBRA. Módulo 1 Equações do 1 ọ Grau e

Bombas industriais. 1 Torr = 1 mmhg. Bombas industriais

Transcrição:

1 FEUP/LEEC Algoritmos e Estruturas de Dados 2001/2002 ANÁLISE DE COMPLEXIDADE DE ALGORITMOS João Pascoal Faria http://www.fe.up.pt/~jpf 2 Itrodução Algoritmo: cojuto claramete especificado de istruções a seguir para resolver um problema Aálise de algoritmos: provar que um algoritmo está correcto determiar recursos exigidos por um algoritmo (tempo, espaço, etc.) comparar os recursos exigidos por diferetes algoritmos que resolvem o mesmo problema (um algoritmo mais eficiete exige meos recursos para resolver o mesmo problema) prever o crescimeto dos recursos exigidos por um algoritmo à medida que o tamaho dos dados de etrada cresce 1

3 Complexidade espacial e temporal Complexidade espacial de um programa ou algoritmo: espaço de memória que ecessita para executar até ao fim S() - espaço de memória exigido em fução do tamaho () da etrada Complexidade temporal de um programa ou algoritmo: tempo que demora a executar (tempo de execução) T() - tempo de execução em fução do tamaho () da etrada Complexidade versus Eficiêcia Por vezes estima-se a complexidade para o "melhor caso" (pouco útil), o "pior caso" (mais útil) e o "caso médio" (igualmete útil) 4 Notação de O grade Na prática, é difícil (seão impossível) prever com rigor o tempo de execução de um algoritmo ou programa Para obter o tempo a meos de: costates multiplicativas (ormalmete estas costates são tempos de execução de operações atómicas) parcelas meos sigificativas para valores grades de Idetificam-se as operações domiates (mais frequetes ou muito mais demoradas) e determia-se o úmero de vezes que são executadas (e ão o tempo de cada execução, que seria uma costate multiplicativa) Exprime-se o resultado com a otação de O grade 2

5 Notação de O grade Defiição: T() = O(f()) (ler: T() é de ordem f()) se e só se existem costates positivas c e 0 tal que T() cf() para todo o > 0 Exemplos: c k k +c k-1 k-1 +...+c 0 = O( k ) (c i - costates) log 2 = O(log ) (ão se idica a base porque mudar de base é multiplicar por costate) 4 = O(1) (usa-se 1 para ordem costate) 6 f Ordes mais comus (expoecial) 2 2 (quadrática) log (liear) log (logarítmica) 1 (costate) Fote: Sahi, "Data Structures, Algorithms ad Applicatios i C++" 3

7 Eficiêcia da Pesquisa Sequecial Eficiêcia temporal de SequetialSearch A operação realizada mais vezes é o teste da codição de cotiuação do ciclo for, o máximo +1 vezes (o caso de ão ecotrar x). Se x existir o array, o teste é realizado aproximadamete /2 vezes em média (1 vez o melhor caso) T() = O() (liear) o pior caso e o caso médio Eficiêcia espacial de SequetialSearch Gasta o espaço das variáveis locais (icluido argumetos) Como os arrays são passados "por referêcia" (de facto o que é passado é o edereço do array), o espaço gasto pelas variáveis locais é costate e idepedete do tamaho do array S() = O(1) (costate) em qualquer caso 8 Eficiêcia Temporal da Pesquisa Biária Em cada iteração, o tamaho do sub-array a aalisar é dividido por um factor de aproximadamete 2 Ao fim de k iterações, o tamaho do sub-array a aalisar é aproximadamete / 2 k Se ão existir o array o valor procurado, o ciclo só termia quado / 2 k 1 log 2 - k 0 k log 2 Assim, o pior caso, o º de iterações é aproximadamete log 2 T() = O(log ) (logarítmico) É muito mais eficiete que a pesquisa sequecial, mas só é aplicável a arrays ordeados! 4

9 Eficiêcia da Ordeação por Iserção IsertSorted(v,,x): o º de iterações do ciclo for é: 1, o melhor caso, o pior caso /2, em média IsertioSort(v,): faz IsertSorted(,1,), IsertSorted(,2,),..., IsertSorted(,-1,) o º total de iterações do ciclo for de IsertSorted é: o melhor caso, 1 + 1 +... + 1 (-1 vezes) = -1 o pior caso, 1 + 2 +... + -1 = (-1)(1 + -1)/2 = (-1)/2 2 /2 em média, metade do aterior, isto é, aproximadamete 2 /4 T() = O( 2 ) (quadrático) (pior caso e média) 10 Eficiêcia da Ordeação por Partição As operações realizadas mais vezes o passo de partição são as comparações efectuadas os passos 2.3.1 e 2.3.2. No cojuto dos dois passos, o úmero de comparações efectuadas é: o míimo (porque todas as posições do array são aalisadas) o máximo +2 (correspodete à situação em que i=j+1 o fim do passo 2.3.2) Por coseguite, o tempo de execução do passo de partição é O() Para obter o tempo de execução do algoritmo completo, é ecessário somar os tempos de execução do passo de partição, para o array iicial e para todos os sub-arrays aos quais o algoritmo é aplicado recursivamete 5

11 Eficiêcia da Ordeação por Partição (cot.) Pior caso: cada rectâgulo refere-se a uma chamada recursiva Melhor caso: -1 1 /2 /2-2 -3 1... 1 1+log 2 /4 /4 /4 /4... 1 1 1 1 1 1 1 1 1 1 profudidade de recursão: tempo de execução total (somado totais de lihas): T() = O[++(-1) +... +2] = O[+(-1)( + 2)/2] = O( 2 ) profudidade de recursão: 1+log 2 (sem cotar com a possibilidade de um elemeto ser excluído dos sub-arrays esquerdo e direito) tempo de execução total (uma vez que a soma de cada liha é ): T() = O[(1+log 2 ) ] = O( log ) 12 Eficiêcia da Ordeação por Partição (cot.) Prova-se que o caso médio (a hipótese de os valores estarem aleatoriamete distribuídos pelo array), o tempo de execução é da mesma ordem que o melhor caso, isto é, T() = O( log ) O critério seguido para a escolha do pivot destia-se a tratar eficietemete os casos em que o array está iicialmete ordeado 6

13 Comparação de tempos médios de execução (observados) de diversos algoritmos de ordeação Isertio sort Heap sort Merge sort Quick sort Cada poto correspode à ordeação de 100 arrays de iteiros gerados aleatoriamete Fote: Sahi, "Data Structures, Algorithms ad Applicatios i C++" Método de ordeação por partição (quick sort) é a prática o mais eficiete, excepto para arrays pequeos (até cerca 20 elemetos), em que o método de ordeação por iserção (isertio sort) é melhor! 14 Complexidade Espacial de QuickSort O espaço de memória exigido por cada chamada de QuickSort, sem cotar com chamadas recursivas, é idepedete do tamaho () do array O espaço de memória total exigido pela chamada de QuickSort, icluido as chamadas recursivas, é pois proporcioal à profudidade de recursão Assim, a complexidade espacial de QuickSort é: O(log ) o melhor caso (e o caso médio) O() o pior caso Em cotrapartida, a complexidade espacial de IsertioSort é O(1) 7