Complexidade em Tempo de um Algoritmo

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Analise de Algoritmos e Notação Assintótica
Roberta Geneci Neves Weber Rafael Coninck Teigão
Linguagem de Programação IX Métodos de Ordenação
Exercício Exercício. Considere um algoritmo sequencial que busca um elemento em uma lista não ordenada a) Qual é a complexidade de tempo deste algoritmo.
Algoritmos de Ordenação
Algoritmos de Ordenação
Algoritmos de Ordenação
Algoritmos de Ordenação Aplicação a Listas de Registos
Análise de Algoritmos AULA 1 Profa. Sandra de Amo
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.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
HeapSort Filas de Prioridade – Heap
Medida do Tempo de Execução de um Programa
David Menotti Estruturas de Dados I DECOM – UFOP
Medida do Tempo de Execução de um Programa
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
David Menotti Estruturas de Dados I DECOM – UFOP
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Classificação e Pesquisa de Dados
Algoritmos Escher.
Método de Ordenação: InsertionSort
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Crescimento de Funções
Complexidade de Computação Para avaliar a qualidade de um algoritmo usamos como critério o espaço e o tempo de execução. Ao.
Complexidade de Algoritmos
Instrutor: Nilo Menezes
Aula T04 – BCC202 Análise de Algoritmos (Parte 2) Túlio Toffolo www
Algoritmos de Ordenação
Insertion Sort.
Complexidade de Algoritmos
ICC2 Aula 7 Fábio Nakano.
Ordenação em memória primária
Complexidade de algoritmos e Classificação (Ordenação) de dados
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Ordenação por inserção
ORDENAÇÃO POR CONTAGEM
Mergesort Katia Guimarães.
Algoritmos de Ordenação
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.
Módulo I Capítulo 5: Vetores
Análise de Complexidade do Algoritmo de Dijkstra
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
CAMINHOS MAIS CURTOS EM GRAFOS
Como analisar um algoritmo
Crescimento de Funções
DCC 001 Programação de Computadores 2º Semestre de 2011
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
1 TAD Fila com Prioridade -FCP ATAI. 2 TAD Fila com Prioridade (Priority Queue) TAD Fila com Prioridade armazena uma colecção de elementos com prioridade.
ATAL – Prof. Jorge Figueiredo Ordenação AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.
Gabriel C.S. EDA0001 – TADS – 2013 UDESC – Joinville
Berilhes Borges Garcia Algoritmos Uma ferramenta para resolver um problema de computação bem- especificado (O espírito da computação) Exemplo: ordenação.
Alinhamento Global de Seqüências Katia Guimarães.
ORDENAÇÃO EM TEMPO LINEAR
USP – ICMC – SSC SSC0300 2º Semestre 2015
Ordenação (Sorting) Ordenar é dispor os elementos de um conjunto numa ordem ascendente ou descendente. Problema: Dados n números, arranjá-los em ordem.
Análise e Complexidade de Algoritmos
Curso Programadores de Informática
Disciplina: Estrutura de dados e Algoritmos Docentes: MSc. Manuel Zunguze.
Algoritmos com matrizes e vetores
FEUP/LEEC Algoritmos e Estruturas de Dados 2001/2002
Transcrição da apresentação:

Complexidade em Tempo de um Algoritmo Como medir ?

Exemplo: Algoritmo Insert-Sort para o problema de ordenação de sequências Problema: (Ordenação de uma sequência) Input: sequência de n números A = <a1,...,an> Output: B = <b1,...,bn>, onde B é uma permutação de A e b1≤ b2 ≤ ... ≤ bn Projeto de um Algoritmo

Algoritmo Insertion-Sort Insertion-Sort (A) Entrada : A = array [a1,...,an] For j  2 to n do chave  A[j] i  j – 1 While i > 0 e A[i] > chave do A[i+1]  A[i] i  i - 1 A[i+1]  chave % Procura lugar na sequência ordenada A[1...j-1] onde inserir a chave Insere a carta-chave Na posição correta na sequência A[1...j-1] Algoritmo é executado in place : Espaço necessário = espaço da entrada + espaço das variáveis Chave, j, i Complexidade em Espaço = constante (=3) (não se conta o espaço ocupado pela entrada)

Algoritmo Insertion-Sort Insertion-Sort (A) Custo Vezes For j  2 to n c1 n do chave  A[j] c2 n-1 i  j – 1 c3 n-1 While i > 0 e A[i] > chave c4 Σnj=2 tj do A[i+1]  A[i] c5 Σnj=2 (tj-1) i  i - 1 c6 Σnj=2 (tj-1) A[i+1]  chave c7 n-1 tj = número de vezes que o teste do While em (4) é executado para cada valor j do loop for

Algoritmo Insertion-Sort T(n) = custo temporal do algoritmo em função do tamanho da entrada (=n) T(n) = c1.n + c2(n-1) + c3(n-1) + c4(Σnj=2 tj) + c5(Σnj=2 (tj-1)) + c6(Σnj=2 (tj-1)) + c7(n-1) T(n) depende de tj O valor de tj depende do “grau de desordenação” da entrada.

Algoritmo Insertion-Sort Melhor caso: a entrada está corretamente em ordem crescente. tj = 1, para j = 2,...,n T(n) = c1.n + c2(n-1) + c3(n-1) + c4(n-1) + c7(n-1) = (c1+c2+c3+c4+c7)n – (c2+c3+c4+c7) Pior caso : a entrada está ordenada de forma reversa (descrescente) tj = j, para j = 2,...,n Σnj=2 j = [n(n+1)/2] – 1 T(n) = c1.n + c2(n-1) + c3(n-1) + c4([n(n+1)/2] – 1) + c5([n(n-1)/2]) + + c6([n(n-1)/2]) + c7(n-1) = = (c4/2 + c5/2 + c6/2)n2 + (c1+c2+c3 - c4/2 - c5/2 - c6/2 + c7)n - (c2 + c3 + c4 + c7)

Algoritmo Insertion-Sort Caso médio: tj = j/2, para j = 2,...,n Exercício: Determinar o valor de T(n) para o caso médio.

Notação O Notação O é utilizada para ter uma estimativa superior do tempo T(n) de execução, em termos de funções do tipo nk, logn, 2n, cujas tendências de crescimento seguem padrões distintos. No melhor caso: T(n) = O(n) No pior caso: T(n) = O(n2)