UPE Caruaru Sistemas de Informao Disciplina Estrutura de

  • Slides: 24
Download presentation
UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof.

UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof. : Paulemir G. Campos Análise Algorítmica (Pior Caso) 12/26/2021 EDA - Prof. Paulemir Campos 1

Complexidade de um Algoritmo n Função de Complexidade n n Medida que computa o

Complexidade de um Algoritmo n Função de Complexidade n n Medida que computa o custo de execução de um algoritmo. Tipos de Função de Complexidade n Em relação ao Tempo E, em relação ao Espaço. 12/26/2021 EDA - Prof. Paulemir Campos n 2

Função de Complexidade de Tempo Registra a quantidade de tempo necessário para executar um

Função de Complexidade de Tempo Registra a quantidade de tempo necessário para executar um algoritmo para resolver um determinado problema. OBS. : Na realidade é calculado o número de vezes que determinada operação considerada relevante é executada (operação dominante). n 12/26/2021 EDA - Prof. Paulemir Campos 3

Função de Complexidade de Espaço Neste caso, mede-se a quantidade de memória necessária para

Função de Complexidade de Espaço Neste caso, mede-se a quantidade de memória necessária para executar um dado algoritmo. OBS. : Como o nosso interesse é verificar a eficiência de algoritmos em relação ao tempo (leia-se nº de vezes que uma operação relevante é executada), as funções de complexidades que estudaremos serão sempre em relação ao tempo, salvo menção explícita. n 12/26/2021 EDA - Prof. Paulemir Campos 4

Métodos de Cálculo da Complexidade n Há duas formas de obtenção da complexidade de

Métodos de Cálculo da Complexidade n Há duas formas de obtenção da complexidade de tempo de um algoritmo: n n 12/26/2021 Método Empírico Método Analítico EDA - Prof. Paulemir Campos 5

Método Empírico n n Calcula o tempo de execução de um algoritmo através de

Método Empírico n n Calcula o tempo de execução de um algoritmo através de sua execução propriamente dita, considerando-se entradas diversas. Além disso, também são levados em conta o computador, a linguagem de programação e o compilador utilizados, bem como as condições locais de processamento. 12/26/2021 EDA - Prof. Paulemir Campos 6

Método Analítico n n n Objetiva obter uma ordem de grandeza do tempo de

Método Analítico n n n Objetiva obter uma ordem de grandeza do tempo de execução de um algoritmo usando uma expressão matemática que represente o comportamento de tempo de um algoritmo. Neste caso, não são levados em conta o computador, a linguagem de programação e o compilador utilizados, e nem as condições locais de processamento. Este será o método adotado neste curso, salvo em caso de menção explícita. 12/26/2021 EDA - Prof. Paulemir Campos 7

Convenções para Obtenção da Expressão Matemática n Por questão de simplificação, convencionouse o seguinte:

Convenções para Obtenção da Expressão Matemática n Por questão de simplificação, convencionouse o seguinte: n n Supor uma quantidade de dados a serem manipulados suficientemente grande; E, não considerar constantes aditivas ou multiplicativas na expressão matemática obtida. OBS. : Isto porquê o interesse é avaliar o comportamento assintótico da função de tempo do algoritmo (Pior caso). 12/26/2021 EDA - Prof. Paulemir Campos 8

Tipos de Análises n Análise de um Algoritmo Particular n n 12/26/2021 Qual é

Tipos de Análises n Análise de um Algoritmo Particular n n 12/26/2021 Qual é o custo de usar um dado algoritmo para resolver um problema específico? Neste caso, deve ser investigado, geralmente, o número de vezes que cada parte do algoritmo é executada. EDA - Prof. Paulemir Campos 9

Tipos de Análises n Análise de uma Classe de Algoritmos n n 12/26/2021 Qual

Tipos de Análises n Análise de uma Classe de Algoritmos n n 12/26/2021 Qual é o algoritmo de menor custo possível para resolver um problema particular? Assim, toda uma família de algoritmos para resolver um problema específico deve ser investigada, objetivando identificar o melhor possível, dependendo dos limites que o usuário impor. EDA - Prof. Paulemir Campos 10

Tipos de Casos n Pior Caso n n Melhor Caso n n Maior tempo

Tipos de Casos n Pior Caso n n Melhor Caso n n Maior tempo de execução sobre todas as possíveis entradas de tamanho n. Menor tempo de execução sobre todas as possíveis entradas de tamanho n. Caso Médio (Mais difícil de calcular) n 12/26/2021 Média de execução dos tempos de execução de todas as entradas de tamanho n, supondo uma distribuição de probabilidade de ocorrência de cada uma dessa entradas. EDA - Prof. Paulemir Campos 11

Análise de um Algoritmo Particular Considere o seguinte algoritmo para inverter uma seqüência de

Análise de um Algoritmo Particular Considere o seguinte algoritmo para inverter uma seqüência de números inteiros num vetor V de tamanho n (n>1): (passagem por referência) Inverte. Vetor(inteiro V[], n) { inteiro i, temp para i=1 até n/2 incremento 1 faça { temp = V[i] = V[n-i+1] = temp } } n 12/26/2021 EDA - Prof. Paulemir Campos 12

Análise de um Algoritmo Particular n Note que, obtemos os seguintes valores (n>1): n

Análise de um Algoritmo Particular n Note que, obtemos os seguintes valores (n>1): n n n Pior caso: n/2 Melhor caso: n/2 Caso médio: n/2 OBS 1. : n/2 significa o maior inteiro menor ou igual a n/2. (Piso de n/2) OBS 2. : n/2 significa o menor inteiro maior ou igual a n/2. (Teto de n/2) 12/26/2021 EDA - Prof. Paulemir Campos 13

Análise de uma Classe de Algoritmos Apresentaremos três algoritmos para encontrar o maior e

Análise de uma Classe de Algoritmos Apresentaremos três algoritmos para encontrar o maior e o menor inteiro de um vetor não ordenado de tamanho n. Vejamos o primeiro (n>0): Max. Min 1(inteiro V[], n, Max, Min) { // passagem por referência inteiro i Max = V[1]; Min = V[1] para i=2 até n incremento 1 faça { se V[i] > Max então Max = V[i] se V[i] < Min então Min = V[i] } } n 12/26/2021 EDA - Prof. Paulemir Campos 14

Análise de uma Classe de Algoritmos n Note que, obtemos os seguintes valores para

Análise de uma Classe de Algoritmos n Note que, obtemos os seguintes valores para o Max. Min 1 (n>0): n n Pior caso: 2(n-1) Melhor caso: 2(n-1) Caso médio: 2(n-1) Isto porquê, as operações de comparação são as operações dominantes ou mais relevantes deste algoritmo! 12/26/2021 EDA - Prof. Paulemir Campos 15

Análise de uma Classe de Algoritmos Vejamos o segundo, uma melhoria do anterior (n>0):

Análise de uma Classe de Algoritmos Vejamos o segundo, uma melhoria do anterior (n>0): Max. Min 2(inteiro V[], n, Max, Min) { // passagem por referência inteiro i Max = V[1]; Min = V[1] para i=2 até n incremento 1 faça { se V[i] > Max então Max = V[i] senão se V[i] < Min então Min = V[i] } } n 12/26/2021 EDA - Prof. Paulemir Campos 16

Análise de uma Classe de Algoritmos n Note que, obtemos os seguintes valores para

Análise de uma Classe de Algoritmos n Note que, obtemos os seguintes valores para o Max. Min 2 (n>0): n n n Pior caso: 2(n-1) Melhor caso: n-1 Caso médio: 3 n/2 – 3/2 Pior caso: V está em ordem decrescente Melhor caso: V está em ordem crescente Caso Médio: V[i] é maior do que Max a metade das vezes. (n-1 + (n-1)/2) 12/26/2021 EDA - Prof. Paulemir Campos 17

Análise de uma Classe de Algoritmos Por fim, o terceiro desses algoritmos (n>0): Max.

Análise de uma Classe de Algoritmos Por fim, o terceiro desses algoritmos (n>0): Max. Min 3(inteiro V[], n, Max, Min) { // passagem por referência inteiro i, fim. Do. Anel se (n mod 2)>0 então { // Se n for ímpar V[n+1] = V[n] fim. Do. Anel = n } senão fim. Do. Anel = n - 1 se V[1] > V[2] então { Max = V[1]; Min = V[2] } senão { Max = V[2]; Min = V[1] } n 12/26/2021 EDA - Prof. Paulemir Campos 18

Análise de uma Classe de Algoritmos i=3 enquanto (i =< fim. Do. Anel) {

Análise de uma Classe de Algoritmos i=3 enquanto (i =< fim. Do. Anel) { se V[i] > V[i+1] então { se V[i] > Max então Max = V[i] se V[i+1] < Min então Min = V[i+1] } senão { se V[i] < Min então Min = V[i] se V[i+1]>Max então Max=V[i+1] } i=i+2 } } 12/26/2021 EDA - Prof. Paulemir Campos 19

Análise de uma Classe de Algoritmos n Note que, obtemos os seguintes valores para

Análise de uma Classe de Algoritmos n Note que, obtemos os seguintes valores para o Max. Min 3 (n>0): n n Pior caso: 3 n/2 – 2 Melhor caso: 3 n/2 – 2 Caso médio: 3 n/2 – 2 Isto é: n O resultado da seguinte soma: n n 12/26/2021 n/2 comparações considerando que os elementos do vetor V são comparados dois a dois; 2 vezes (n-2)/2 comparações considerando os subconjuntos imaginários de máximos e mínimos. EDA - Prof. Paulemir Campos 20

Análise de uma Classe de Algoritmos n Comparação entre os três algoritmos para obter

Análise de uma Classe de Algoritmos n Comparação entre os três algoritmos para obter o máximo e o mínimo de um vetor de inteiros de tamanho n (n>0): 12/26/2021 EDA - Prof. Paulemir Campos 21

Análise de uma Classe de Algoritmos n Uma observação importante neste tipo de problema.

Análise de uma Classe de Algoritmos n Uma observação importante neste tipo de problema. Segundo [Ziviani, 1999], na pág. 10, há o seguinte teorema: “ Qualquer algoritmo para encontrar o maior e o menor elemento de um conjunto com n elementos não ordenados, n 1, faz pelo menos 3 n/2 - 2 comparações. ” 12/26/2021 EDA - Prof. Paulemir Campos 22

Análise de uma Classe de Algoritmos n Ora, como o cálculo de complexidade de

Análise de uma Classe de Algoritmos n Ora, como o cálculo de complexidade de tempo desses três algoritmos foi baseado em operações de comparação (operação dominante) e esse teorema especifica o limite inferior desse tipo de algoritmo, então o algoritmo Max. Min 3 apresentado é um algoritmo ótimo para resolver tal tipo de problema. 12/26/2021 EDA - Prof. Paulemir Campos 23

Referências Bibliográficas n n n Ziviani, N. Projeto de Algoritmos: Com implementações em Pascal

Referências Bibliográficas n n n Ziviani, N. Projeto de Algoritmos: Com implementações em Pascal e C. São Paulo: Pioneira, 5 a. ed. , 1999. Szwarcfiter, J. L. ; Markenzon, L. Estruturas de Dados e seus Algoritmos. Rio de Janeiro: LTC, 2 a. ed. , 1994. Terada, R. Desenvolvimento de Algoritmos e Estruturas de Dados. São Paulo: Mc. Graw-Hill, Makron, 1991. 12/26/2021 EDA - Prof. Paulemir Campos 24