BCC202 - Estrutura de Dados I



Documentos relacionados
Aula 03 Custos de um algoritmo e funções de complexidade

Análise de Algoritmos

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

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

Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II

Análise de complexidade

BCC202 - Estrutura de Dados I

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos

Pesquisa Sequencial e Binária. Introdução à Programação SI2

Algoritmos de Busca em Tabelas

Pesquisa Sequencial e Binária

Busca. Pesquisa sequencial

MC102 Algoritmos e Programação de Computadores

Pesquisa em Memória Primária. Prof. Jonas Potros

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Pesquisa Sequencial e Binária

Árvores Binárias de Busca

Exercícios Teóricos Resolvidos

Métodos de Pesquisa em Memória Primária

Recursividade. Túlio Toffolo BCC202 Aula 08 Algoritmos e Estruturas de Dados I

Processamento e Otimização de Consultas

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

BCC202 - Estrutura de Dados I

Estrutura de Dados Básica

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

CI165 Introdução. André Vignatti. 31 de julho de 2014

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v /15

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Métodos de Pesquisa 472

Figura 1 Busca Linear

Universidade Federal de Alfenas

Universidade Federal do Vale do São Francisco. Estruturas de Dados. Professor: Marcelo Santos Linder

BCC202 - Estrutura de Dados I

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...

Análise e Complexidade de Algoritmos

Pesquisa em Memória Primária. Prof. Jonas Potros

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015.

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

CONVENÇÃO DE CÓDIGO JAVA

BCC204 - Teoria dos Grafos

OTIMIZAÇÃO VETORIAL. Formulação do Problema

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

Árvores Binárias e Busca. Jeane Melo

Métodos Computacionais. Árvores

EFICIÊNCIA DE ALGORITMOS E

Sistemas Operacionais

Comandos Sequenciais if else, e Switch

Algoritmos e Programação Estruturada

Sumário. Volta às aulas. Vamos recordar? Grandezas e medidas: tempo e dinheiro Números Regiões planas e seus contornos...

Exercícios resolvidos sobre Definição de Probabilidade

Notas de aula número 1: Otimização *

BCC202 - Estrutura de Dados I

Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º

Complexidade de Algoritmos. Edson Prestes

Aula 03 Limite assintótico para a ordenação, Ordenação em tempo linear

Contagem. Prof. Dr. Leandro Balby Marinho. Matemática Discreta. Fundamentos Inclusão/Exclusão Princípio da Casa dos Pombos Permutações Combinações

Árvores Binárias de Busca

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Orientação a Objetos

Teoria dos Grafos. Edson Prestes

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Persistência de Dados

Estruturas de Dados Aula 15: Árvores 17/05/2011

1. Avaliação de impacto de programas sociais: por que, para que e quando fazer? (Cap. 1 do livro) 2. Estatística e Planilhas Eletrônicas 3.

Programação: Estruturas de seleção

Hashing Letícia Rodrigues Bueno

Computadores de Programação (MAB353)

ALGORITMOS DE ORDENAÇÃO. Algoritmos de comparação-e-troca. Bubble Sort Merge Sort Quick Sort

Divisão e Conquista. Túlio Toffolo Marco Antônio Carvalho marco.opt@gmail.com. BCC402 Aula 08 Algoritmos e Programação Avançada

OCOMON PRIMEIROS PASSOS

Construção de tabelas verdades

Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano. Prof. Angelo Papa Neto

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.

Inteligência Computacional: resolvendo problemas difíceis da vida real

Introdução à Probabilidade e Estatística

Este material traz a teoria necessária à resolução das questões propostas.

Resolução de problemas e desenvolvimento de algoritmos

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

Permissões de compartilhamento e NTFS - Parte 1

Análise de Algoritmos: Melhor caso, pior caso, caso médio

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Estruturas de Dados I

Decidir como medir cada característica. Definir as características de qualidade. Estabelecer padrões de qualidade

Variáveis e estruturas de controlo. Introdução à Programação André L. Santos

Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol

PROGRAMAÇÃO II 4. ÁRVORE

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Ciclo de Vida de um Projeto

Análise de Algoritmos

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Busca em Memória. Secundária

A ideia de coordenatização (2/2)

Risco e Retorno dos Investimentos. Paulo Pereira Ferreira Miba 507

Problemas insolúveis. Um exemplo simples e concreto

Todos os exercícios sugeridos nesta apostila se referem ao volume 1. MATEMÁTICA I 1 FUNÇÃO DO 1º GRAU

Deadlocks. Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Processamento da Informação Teoria. Algoritmos e Tipos de dados

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Transcrição:

BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br Material elaborado com base nos slides do Prof. Túlio Toffolo (curso de 2013/01). 2013/02

Conteúdo 1 Introdução 2 Análise de Algoritmos Análise de Algoritmos Custo de um algoritmo Função de complexidade Tamanho da entrada de dados 3 Conclusão 4 Exercícios BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (2)

Conteúdo 1 Introdução 2 Análise de Algoritmos Análise de Algoritmos Custo de um algoritmo Função de complexidade Tamanho da entrada de dados 3 Conclusão 4 Exercícios BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (3)

Introdução Análise de Algoritmos Analisar um algoritmo consiste em verificar o custo do algoritmo em relação ao: Tempo gasto para executá-lo. Espaço (memória) ocupado em sua execução. Esta análise é necessária para que se possa escolher o algoritmo mais adequado para resolver um dado problema. É essencialmente importante em áreas de pesquisa operacional, otimização, teoria dos grafos, estatística, probabilidades, entre outras. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (4)

Introdução Cálculo do custo real pela execução do algoritmo Medidas são inadequadas e o resultado não pode ser generalizado. Tais medidas são dependentes do compilador, que pode favorecer algumas construções em detrimento de outras. Resultados dependem do hardware. Quando grandes quantidades de memória são utilizadas, as medidas de tempo podem depender deste aspecto. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (5)

Introdução Cálculo do custo real pela execução do algoritmo Apesar disto, há argumentos a favor de se obter medidas reais da execução do algoritmo. Um exemplo: quando há vários algoritmos distintos para resolver um mesmo problema, todos possuindo um custo de execução dentro de uma mesma ordem de grandeza. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (6)

Conteúdo 1 Introdução 2 Análise de Algoritmos Análise de Algoritmos Custo de um algoritmo Função de complexidade Tamanho da entrada de dados 3 Conclusão 4 Exercícios BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (7)

Análise de Algoritmos Possibilidades de análise Um algoritmo em particular. Uma classe de algoritmos. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (8)

Análise de Algoritmos Análise de um algoritmo em particular Qual é o custo de usar um dado algoritmo para resolver um problema específico? Características que devem ser investigadas: Análise do número de vezes que cada parte do algoritmo deve ser executada (tempo). Estudo da quantidade de memória necessária (espaço). BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (9)

Análise de Algoritmos Análise de uma classe de algoritmos Qual é o algoritmo de menor custo possível para resolver um problema em particular? Toda uma família de algoritmos é investigada. Procura-se identificar um que seja o melhor possível. Coloca-se limites para a complexidade computacional dos algoritmos pertencentes à classe. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (10)

Custo de um algoritmo Custo de um algoritmo O menor custo possível para resolver problemas de uma classe nos dá a dificuldade inerente para resolver o problema. Quando o custo de um algoritmo é igual ao menor custo possível, o algoritmo é ótimo para a medida de custo considerada. Podem existir vários algoritmos ótimos para resolver o mesmo problema. Se a mesma medida de custo é aplicada a diferentes algoritmos, então é possível compará-los e escolher o mais adequado. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (11)

Custo de um algoritmo Custo de um algoritmo Utilizaremos um modelo matemático baseado em um computador idealizado. Deve ser especificado o conjunto de operações e seus custos de execuções. É mais usual ignorar o custo de algumas operações e considerar apenas as mais significativas. Ex.: Em algoritmos de ordenação consideramos o número de comparações entre os elementos do conjunto a ser ordenado e ignoramos as demais operações. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (12)

Função de complexidade Função de complexidade Para medir o custo de execução de um algoritmo definiremos uma função de complexidade ou função de custo f. Função de complexidade de tempo: f (n) mede o tempo necessário para executar um algoritmo em um problema de tamanho n. Função de complexidade de espaço: f (n) mede a memória necessária para executar um algoritmo em um problema de tamanho n. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (13)

Função de complexidade Função de complexidade Utilizaremos f para denotar uma função de complexidade de tempo daqui para frente. A complexidadede tempo na realidade não representa tempo diretamente: Representa o número de vezes que determinadas operações, ditas relevantes, são executadas. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (14)

Função de complexidade Exemplo: Maior elemento de um vetor Considere o algoritmo para encontrar o maior elemento de um vetor de inteiros A[n]; n >= 1. 1 int Max ( int * A, int n) { 2 int i, Temp ; 3 Temp = A [0]; 4 for ( i = 1; i < n; i ++) 5 if( Temp < A[ i]) // Comparação envolvendo os elementos 6 Temp = A[ i]; 7 return Temp ; 8 } Seja f uma função de complexidade tal que f (n) é o número de comparações envolvendo os elementos de A, se A contiver n elementos. Qual é a função f (n)? f (n) = n 1. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (15)

Função de complexidade Exemplo: Maior elemento de um vetor Teorema: Qualquer algoritmo para encontrar o maior elemento de um conjunto com n elementos, n >= 1, faz pelo menos n 1 comparações. Prova: Cada um dos n 1 elementos tem de ser investigado por meio de comparações, que é menor do que algum outro elemento. Logo, n 1 comparações são necessárias. O teorema acima nos diz que, se o número de comparações for utilizado como medida de custo, então a função Max do programa anterior é ótima. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (16)

Tamanho da entrada de dados Tamanho da entrada de dados A medida do custo de execução de um algoritmo depende principalmente do tamanho da entrada dos dados. É comum considerar o tempo de execução de um programa como uma função do tamanho da entrada. Para alguns algoritmos, o custo de execução é uma função da entrada particular dos dados, não apenas do tamanho da entrada. Ou seja, o custo pode ser diferente para entradas distintas, mas de mesmo tamanho. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (17)

Tamanho da entrada de dados Tamanho da entrada de dados No caso da função Max do programa do exemplo, o custo é uniforme sobre todos os problemas de tamanho n. Já para um algoritmo de ordenação isso não ocorre: se os dados de entrada já estiverem quase ordenados, então pode ser que o algoritmo trabalhe menos. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (18)

Definição Melhor caso: menor tempo de execução sobre todas as entradas de tamanho n. Pior caso: maior tempo de execução sobre todas as entradas de tamanho n. Caso médio (ou caso esperado): média dos tempos de execução de todas as entradas de tamanho n. Melhor caso <= Caso médio <= Pior caso BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (19)

Análise do caso médio A análise do caso médio é geralmente muito mais difícil de obter do que as análises do melhor e do pior casos. Supõe-se uma distribuição de probabilidades sobre o conjunto de entradas de tamanho n. É comum supor uma distribuição de probabilidades em que todas as entradas possíveis são igualmente prováveis. Na prática isso nem sempre é verdade. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (20)

Exemplo: Registros de um arquivo Considere o problema de acessar os registros de um arquivo. Cada registro contém uma chave única que é utilizada para recupera-lo. O problema: dada uma chave qualquer, localize o registro que contenha esta chave. O algoritmo de pesquisa mais simples é o que faz a pesquisa sequencial. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (21)

Exemplo: Registros de um arquivo (Análise) Seja f (n) uma função de complexidade, onde n corresponde ao número de registros. A complexidade será definida pelo número de registros consultados (número de comparações de chaves). Melhor caso: O registro procurado é o primeiro consultado!!! f (n) = 1. Pior caso: O registro procurado é o último consultado!!! f (n) = n. Caso médio: Nem sempre é tão simples de se calcular. Como fazer para este problema? BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (22)

Exemplo: Registros de um arquivo (Análise do Caso médio) No estudo do caso médio, vamos considerar que toda pesquisa recupera um registro. Se p i for a probabilidade de que o i-ésimo registro seja procurado, e considerando que para recupera-lo são necessárias i comparações, então: f (n) = 1 p 1 + 2 p 2 + 3 p 3 +... + n p n BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (23)

Exemplo: Registros de um arquivo (Análise do Caso médio) Para calcular f (n) basta conhecer a distribuição de probabilidades p i. Se cada registro tiver a mesma probabilidade de ser acessado que todos os outros, então: Logo: p i = 1 n, para 1 <= i <= n f (n) = 1 n (1 + 2 + 3 +... + n) = 1 n ( ) n(n+1) 2 = n+1 2 BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (24)

Exemplo: Registros de um arquivo (Análise) Melhor caso: O registro procurado é o primeiro consultado!!! f (n) = 1. Pior caso: O registro procurado é o último consultado!!! f (n) = n. Caso médio: f (n) = (n + 1)/2. Considerando a mesma probabilidade de acesso para todos os registros. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (25)

Exemplo: Maior e menor elementos de um vetor Considere o problema de encontrar o maior e o menor elementos de um vetor de inteiros A[n], onde n >= 1. Um algoritmo simples pode ser derivado do algoritmo apresentado no programa para achar o maior elemento: 1 int Max ( int * A, int n) { 2 int i, Temp ; 3 Temp = A [0]; 4 for ( i = 1; i < n; i ++) 5 if( Temp < A[ i]) // Comparação envolvendo os elem. 6 Temp = A[ i]; 7 return Temp ; 8 } Recordando que, para Max: f (n) = n 1. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (26)

Exemplo: Maior e menor elementos de um vetor (MaxMin1) 1 void MaxMin1 ( int * A, int n, int * pmax, int * pmin ) { 2 int i; 3 * pmax = A [0]; 4 * pmin = A [0]; 5 for ( i = 1; i < n; i ++) 6 if (* pmax < A[ i]) // Comparação envolvendo os elementos 7 * pmax = A[i]; 8 if (* pmin > A[ i]) // Comparação envolvendo os elementos 9 * pmin = A[i]; 10 } Seja f (n) o número de comparações entre os elementos de A, se A contiver n elementos. Então, f (n) = 2(n 1) para n > 0, para o melhor caso, pior caso e caso médio. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (27)

Exemplo: Maior e menor elementos de um vetor (MaxMin2) MaxMin1 pode ser facilmente melhorado: A comparação pmin > A[i] só é necessária quando a comparação pmax < A[i] é falsa. 1 void MaxMin2 ( int * A, int n, int * pmax, int * pmin ) { 2 int i; 3 * pmax = A [0]; 4 * pmin = A [0]; 5 for ( i = 1; i < n; i ++) 6 if (* pmax < A[i]) 7 * pmax = A[i]; 8 else if (* pmin > A[ i]) // A diferença está aqui! 9 * pmin = A[i]; 10 } E agora, qual é a função de complexidade? BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (28)

Exemplo: Maior e menor elementos de um vetor (MaxMin2) Melhor caso: Quando os elementos estão em ordem crescente. f (n) = n 1. Pior caso: Quando o maior elemento é o primeiro no vetor. f (n) = 2(n 1). Caso médio: Quando pmax < A[i] em metade das vezes. f (n) = 3n/2 3/2. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (29)

Exemplo: Maior e menor elementos de um vetor (MaxMin3) Considerando o número de comparações realizadas, existe a possibilidade de obter um algoritmo mais eficiente: 1 Compare os elementos de A aos pares, separando-os em dois subconjuntos (maiores em um e menores em outro), a um custo de n/2 comparações. 2 O máximo é obtido do subconjunto que contém os maiores elementos, a um custo de n/2 1 comparações. 3 O mínimo é obtido do subconjunto que contém os menores elementos, a um custo de n/2 1 comparações. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (30)

Exemplo: Maior e menor elementos de um vetor (MaxMin3) Os elementos de A são comparados dois a dois. Os elementos maiores são comparados com pmax. Os elementos menores são comparados com pmin. Quando n é ímpar, o elemento que está na posição A[n 1] é duplicado na posição A[n] para evitar um tratamento de exceção. Para esta implementação: Melhor caso = Pior caso = Caso médio: f (n) = n 2 + n 2 2 + n 2 2 = 3n 2 2 BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (31)

Exemplo: Maior e menor elementos de um vetor (MaxMin3) 1 void MaxMin3 ( int * A, int n, int * pmax, int * pmin ) { 2 int i, FimDoAnel ; 3 if (( n % 2) > 0) { A[ n] = A[n -1]; FimDoAnel = n; } 4 else { FimDoAnel = n -1; } 5 if(a [0] > A [1]) { * pmax = A [0]; * pmin = A [1]; } // Comp. 1 6 else { * pmax = A [1]; * pmin = A [0]; } 7 8 for (i =2; i< FimDoAnel ; i +=2) { 9 if(a[i] > A[i +1]) { // Comp. 2 10 if(a[i] > * pmax ) * pmax = A[i]; // Comp. 3 11 if(a[i +1] < * pmin ) * pmin = A[i +1]; // Comp. 4 12 } else { 13 if(a[i] < * pmin ) * pmin = A[i]; // Comp. 3 14 if(a[i +1] > * pmax ) * pmax = A[i +1]; // Comp. 4 15 } 16 } 17 } BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (32)

Exemplo: Maior e menor elementos de um vetor (MaxMin3) Qual a função de complexidade? Número de comparações: Comp.1: 1 vez. Comp.2: n/2 1 vezes. Comp.3: n/2 1 vezes. Comp.4: n/2 1 vezes. Então: f (n) = 1 + (n/2 1) + (n/2 1) + (n/2 1) f (n) = 3(n/2 1) + 1 f (n) = 3n/2 2 BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (33)

Exemplo: Maior e menor elementos de um vetor (comparação) Algoritmo Melhor caso Pior caso Caso médio MaxMin1 2 (n-1) 2 (n-1) 2 (n-1) MaxMin2 n - 1 2 (n-1) 3 n/2-3/2 MaxMin3 3 n/2-2 3 n/2-2 3 n/2-2 Os algoritmos MaxMin2 e MaxMin3 são superiores ao algoritmo MaxMin1. O algoritmo MaxMin3 é superior ao algoritmo MaxMin2 com relação ao pior caso e muito próximo quanto ao caso médio. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (34)

Conteúdo 1 Introdução 2 Análise de Algoritmos Análise de Algoritmos Custo de um algoritmo Função de complexidade Tamanho da entrada de dados 3 Conclusão 4 Exercícios BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (35)

Conclusão Conclusão Nesta aula tivemos o primeiro contato com a Análise de Complexidade de Algoritmos. Este tópico é muito importante no estudo de algoritmos, pois possibilita avaliar o custo dos mesmos, servido de referência para a escolha daquele que será mais adequado para uso em determinadas situações. Foco principal para a definição da função de complexidade e a análise de melhor caso, pior caso e caso médio. Próxima aula: Análise de Algoritmos (Parte 2) Comportamento Assintótico e Dominação Assintótica. Dúvidas? BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (36)

Conteúdo 1 Introdução 2 Análise de Algoritmos Análise de Algoritmos Custo de um algoritmo Função de complexidade Tamanho da entrada de dados 3 Conclusão 4 Exercícios BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (37)

Exercícios propostos Exercício 01 Avalie os dois códigos fonte abaixo e responda: O resultado será o mesmo? Justifique sua resposta. Qual a função de complexidade de cada um dos procedimentos? Defina as operações relevantes. Caso o resultado seja o mesmo, qual dos dois você escolheria? 1 void Procedimento1 () { 2 int i = 0, a = 0; 3 while (i < n) { 4 a += i; 5 i += 2; 6 } 7 } 1 void Procedimento2 () { 2 int i, j, a = 0; 3 for ( i = 0; i < n; i ++) 4 for ( j = 0; j < i; j ++) 5 a += i + j; 6 } Dica: Avalie o código e faça testes de mesa, só depois de responder às perguntas, implemente o código e execute os procedimentos para conferir os resultados. BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) (38)