Complexidade de Algoritmos

Slides:



Advertisements
Apresentações semelhantes
Complexidade de Algoritmos Recursivos
Advertisements

Análise de Complexidade
Engenharia de Computação.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Complexidade de Algoritmos
Linguagem C Funções.
Aula T04 – BCC202 Análise de Algoritmos (Parte 2) Túlio Toffolo www
IAED Tagus, 2009/2010 Introdução à Programação em C (I)
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Aula T05 – BCC202 Análise de Algoritmos (Parte 3) Túlio Toffolo www
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algoritmos Crescimento de Funções
Campus de Caraguatatuba Licenciatura em Matemática Semestre de 2013
QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de A[p…q] é menor ou igual.
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Aula prática 3 Aprofundando em Funções Parâmetros de uma função Uso do return Execução Variáveis Global, local e estática Monitoria de Introdução à.
Complexidade em Tempo de um Algoritmo
Como analisar um algoritmo
Crescimento de Funções
INE Fundamentos de Matemática Discreta para a Computação
Disciplina Informática Teórica Análise de Algoritmos Disciplina: Informática Teórica Prof. Kátia Guimarães e Prof. Ruy Guerra Hugo Santana –
Alinhamento de Cadeias de DNA COMPARAÇÃO DE SEQÜÊNCIAS
Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Analise de Algoritmos e Notação Assintótica
Berilhes Borges Garcia Algoritmos Uma ferramenta para resolver um problema de computação bem- especificado (O espírito da computação) Exemplo: ordenação.
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Técnicas de Análise de Algoritmos Cristiano Arbex Valle Vinicius Fernandes dos Santos
Comportamento Assintótico
Função de 1º grau Fundamentos de Matemática Curso de Ciências Biológicas Prof. Marco Marins.
Universidade Federal de Campina Grande – UFCG Centro de Ciências e Tecnologias – CCT Unidade Acadêmica de Engenharia Química - UAEQ Universidade Federal.
Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro
NOME:Brunon 4 NOME:Fernando n14 NOME:Gustavon 19 Trabalho de Matemática.
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Funções Recursivas – parte B.
ARQUITETURA AULA 3 Prof. Luiz Ricardo Lima 2º sem de 2016.
Aula 3 - Estruturas de Repetição
INTRODUÇÃO A ALGORITMOS NUMÉRICOS
Grupos de Slides No 7. Prof. SIMÃO
Capítulo I - Introdução
3.3 Exemplos de aplicação Algoritmo 3.3.1: Máximo e mínimo de tabela.
Função afim ou polinomial do primeiro grau
Regressão Linear com Várias variáveis
Cálculo Diferencial e Integral III
Modelagem para Otimização:Aula 2
Ordenação: Terminologia
Análise de Algoritmo Profº Me. Jeferson Bussula Pinheiro
Prof. Wellington Franco
INF1007: Programação 2 6 – Ordenação de Vetores
FUNDAMENTO DE PROGRAMAÇÃO
Circuitos Elétricos 2 Homepage:
INF1007: Programação Funções Recursivas
Adm.Industrial Cálculo II Aula 08 Derivadas Parciais Rafael Ferrara.
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO
FEUP/LEEC Algoritmos e Estruturas de Dados 2001/2002
Programação de Computadores I – Arquivos
Daniel Paulo SQL Server 2016 Módulo II Daniel Paulo
Introdução à Computação para Engenharia MAC2166
Medida do Tempo de Execução de um Programa
Aula 22 Modularização 22/10/08.
Linguagem de Programação
Complexidade de Algoritmos
Analise de Algoritmos e Notação Assintótica
Complexidade de Algoritmos
Curso de Introdução à Lógica Computacional
Transcrição da apresentação:

Complexidade de Algoritmos EDA 0001 Professor: Kariston Pereira Joás Garcia Michel Pabst Ricardo Sohn

Tempo de Execução (Michel) - Posteriori - Priori - Visão geral, tempo mínimos e médios.

Exemplo Um programa pode ter tempo de execução T(n) = n2+ n + 1. A unidade de T(n) é em principio instrução executada. Uma instrução é uma sequência de operações na qual o tempo de execução pode ser considerado constante. void somavet (int v[n], int *k){ int i; *k=0; for (i=0; i<n; i++) *k= (*k)+ v[i]; }

Exemplo - Tempo variável int localiza (int v[n], int x) { int i; for (i=0; i<n; i++) if (x==v[i]) return i; return -1; }

Complexidade - Esforço da máquina para execução do Algoritmo. - Ex: Pode se considerar o comportamento de dois algoritmos, A1 e A2, que realizam a mesma tarefa em tempos TA1 e TA2, para uma entrada de tamanho n. observemos os tempos de execução para diferentes tamanhos da entrada

Representação Complexidade Tamanho da Entrada Tempo Algoritmo A1 Tempo Algoritmo A2 n TA1 TA2 2n 2TA1 4TA2 3n 3TA1 9TA2 4n 4TA1 16TA2

Importante É de grande valia essa analise, devido a forma que a tecnologia tem expandido, computadores com grande poder de processamento tem surgido. Mas com eles piores problemas tem aparecido. Não adianta ter uma máquina forte e um algoritmo mal escrito.

Notação O 0 ≤ T(n) ≤ c · f(n) - Usada para análise do pior caso dos algoritmos. Também chamada de limite superior Diz-se que T(n) é O(f(n)) quando 0 ≤ T(n) ≤ c · f(n) sendo n > n0 T(n) não cresce mais rápido que f(n)

Notação O - A função f(x) = 10x + 11 é O(x). Como exemplo, basta utilizar c = 12 e n0 = 10. 10x + 11 ≤ c . O(x) 10.10 + 11 ≤ 12.10 111 ≤ 120

Notação O Velocidade de Crescimento Velocidade de Crescimento Notação Nome O(1) ordem constante O(log n) ordem logarítmica O([log n]c) ordem poli-logarítmica O(n) ordem linear O(n · log n) ordem linear-logarítmica Notação Nome O(n²) ordem quadrática O(n³) ordem cúbica O(nc) ordem polinomial O(cn) ordem exponencial O(n!) ordem fatorial O(nn) Velocidade de Crescimento Velocidade de Crescimento

Notação O Ordem Exponencial Ordem quadrática Ordem linear-logarítmica

Comparação Quantitativa - Taxa de crescimento dos algoritmos de ordem exponencial.

Comparação Quantitativa - Efeito do aumento da capacidade de processamento sobre o tamanho do maior problema solucionável em um certo tempo.

Comparação Quantitativa - Algoritmos de alta complexidade têm um ganho pouco significativo em função da capacidade da máquina. -Como exemplo, usaremos o algoritmo que calcula a sequência de Fibonacci.

Sequência de Fibonacci Function fibo1(n) if n = 0 then return 0 else if n = 1 then return 1 return fibo1(n - 1) + fibo1(n - 2) end

Sequência de Fibonacci - Experimente rodar este algoritmo para n = 100. - A complexidade é O(2^n). - Se uma operação levasse um picosegundo, 2100 operações levariam 3x10 ^13 anos = 30.000.000.000.000 anos. - Agora vejamos um outro algoritmo, de complexidade O(n), que faz a mesma coisa.

Sequência de Fibonacci Function fibo2(n) if n = 0 then return 0 else if n = 1 then return 1 penultimo <- 0 ultimo <- 1 for i <- 2 until n do atual <- penultimo + ultimo penultimo <- ultimo ultimo <- atual end for return atual end if