View
1
Download
0
Category
Preview:
Citation preview
Análise de Algoritmos (Parte 1)
BCC202- Estrutura de DadosDECOM-UFOP
ASN
Material elaborado com base nos slides do Prof. Reinaldo Fortes (curso de 2014/01)
Conteúdo
● Introdução● Análise de Algoritmos
– Custo de um Algoritmo– Função de Complexidade– Tamanho de entrada de dados– Melhor Caso, Pior Caso e Caso Médio
● Conclusão● Exercícios
Conteúdo
● Introdução● Análise de Algoritmos
– Custo de um Algoritmo– Função de Complexidade– Tamanho de entrada de dados– Melhor Caso, Pior Caso e Caso Médio
● Conclusão● Exercícios
A importância de algoritmos para a computação
Dificuldade intríseca de problemas
Dificuldade intríseca de problemas
Algoritmos e Tecnologia
Algoritmos e Tecnologia
Algoritmos e Tecnologia
Algoritmos e Tecnologia: Conclusões
Corretude de Algoritmo
Complexidade de Algoritmos
Modelo Computacional
Máquinas RAM
Máquinas RAM
Tamanho de Entrada de Dados
● A medida do custo de execução de um algoritmo depende principalmente do tamanho de entrada dos dados.
● É comum considerar o tempo de execução de programacomo uma função do tamanho da entrada.
● Para alguns algoritmos, o custo de execução é uma funçãoda entrada dos dados, não apenas do tamanho da entrada. – Ou seja, o custo pode ser diferente para entradas
distintas, mas de mesmo de tamanho.
Tamanho da Entrada
Função Complexidade
● Para medir o custo de execução de um algoritmodefiniremos duas funções de complexidade ou decusto:
● Função de complexidade de tempo: f(n) mede otempo necessário para executar um algoritmo emum problema de tamanho n.
● Função de complexidade de espaço: f'(n) mede amemória necessária para executar um algoritmo emum problema de tamanho n.
Função Complexidade
● Para medir o custo de execução de um algoritmodefiniremos duas funções de complexidade ou decusto:
● Função de complexidade de tempo: f(n) mede otempo necessário para executar um algoritmo emum problema de tamanho n.
● Função de complexidade de espaçõ: f'(n) mede amemória necessária para executar um algoritmo emum problema de tamanho n. Utilizaremos f para denotar uma função de complexidade de tempo daqui
para frente.
Medida de Complexidade e Eficiência de Algoritmos
Computador Idealizado
● É mais usual ignorar o custo de algumas operaçõese considerar apenas as mais significativas.
● Ex.: em algoritmos de ordenação, quais operaçõesconsiderar?
Computador Idealizado
● É mais usual ignorar o custo de algumas operaçõese considerar apenas as mais significativas.
● Ex.: em algoritmos de ordenação, consideramos onúmero de comparações entre os elementos doconjunto a ser ordenado e ignoramos as demaisoperações
Complexidade de Tempo
● A complexidade de tempo na realidade nãorepresenta tempo diretamente: – Representa o número de vezes que determinadas
operações, ditas relevantes, são executadas.
Começando a Trabalhar
Material elaborado com base nos slides do Prof. Reinaldo Fortes (curso de 2014/01)
Exemplo: Maior Elemento de um Vetor
Exemplo: Maior Elemento de um Vetor
Maior Elemento de um Vetor
Tamanho de Entrada de Dados
● No caso da função Max do programa do exemplo, o custoé uniforme sobre todos os problemas de tamanho n.
● O que aconteceria se fossse um algoritmo de ordenação?
Tamanho de Entrada de Dados
● No caso da função Max do programa do exemplo, o custoé uniforme sobre todos os problemas de tamanho n.
● Já um algoritmo de ordenação isso não ocorre: se os dadosde entrada já estiverem quase ordenados, então pode serque o algoritmo trabalhe menos.
Definição
● Melhor caso: menor tempo de execução sobre todas asentradas de tamanho n.
● Pior caso: maior tempo de execução sobre todas asentradas de tamanho n.
● Caso médio (ou caso esperado): média dos tempos deexecução de todas as entradas de tamanho n.
Melhor caso <= Caso médio <= Pior caso
Análise do Caso Médio
● A análise do caso médio é geralmente muito mais difícil deobter do que as análises do melhor e do pior casos.
● Supõe-se uma distribuição de probabilidades sobre oconjunto de entradas de tamanho n.
● É comum supor uma distribuição de probabilidades emque todas as entradas possíveis são igualmente prováveis.– Na prática isso nem sempre é verdade.
Exemplo: Registros de um Arquivo
● Considere o problema de acessar os registros deum arquivo.
● Cada registro contém uma chave única que éutilizada para recuperá-lo.
● O problema: dada uma chave qualquer, localize oregistro que contenha esta chave.
● O algoritmo de pesquisa mais simples é o que faza pesquisa sequencial.
Exemplo: Registros de um arquivo (Análise)
Exemplo: Registros de um arquivo (Análise)
Exemplo: Registros de um arquivo (Análise)
Exemplo: Registros de um arquivo (Análise)
Exemplo: Registros de um arquivo (Análise do CasoMédio)
Exemplo: Registros de um arquivo (Análise do CasoMédio)
Exemplo: Registros de um arquivo (Análise)
Exemplo: Maior e Menor Elemento de um Vetor
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin1)
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin1)
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin1)
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin2)
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin2)
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin2)
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin3)
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin3)
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin3)
Exemplo: Maior e Menor Elemento de um Vetor(MaxMin3)
Exemplo: Maior e Menor Elemento de um Vetor(comparação)
Conclusão
● Primeiro contato com a Análise de Complexidadede Algoritmos.
● Possibilita avaliar o custo dos algoritmos, servindode referência para a escolha daquele que será maisadequado para uso em determinadas situações.
● Foco principal para a definição da função decomplexidade e análise de melhor caso, pior caso ecaso médio.
● Próxima aula: Análise de Algoritmos (Parte 2) –Comportamento Assintótico e DominaçãoAssintótico.
● Dúvidas?
Vantagens do Método de Análise Proposto
Desvantagens do Método de Análise Proposto
Exercício
Recommended