32
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel da Silva Dias - www.arieldias.com

ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise e Complexidade de AlgoritmosProfessor Ariel da Silva DiasIntrodução

Professor Ariel da Silva Dias - www.arieldias.com

Page 2: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Apresentação Professor

▪ Professor Ariel Dias

Professor Ariel da Silva Dias - www.arieldias.com

Page 3: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Apresentação Disciplina

▪ O que veremos?

▪ www.arieldias.com

▪ BlackBoard

Professor Ariel da Silva Dias - www.arieldias.com

Page 4: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Apresentação

▪ Turma Noite

▪ Continuada I – 18/03 1 Ponto

▪ Continuada II – 20/05 1 Ponto

▪ Atividades 1 Ponto

▪ Regimental – 03/06 7 Pontos

▪ Total 10 Pontos

Professor Ariel da Silva Dias - www.arieldias.com

Page 5: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Apresentação

▪ Turma Manhã

▪ Continuada I – 20/03 1 Ponto

▪ Continuada II – 22/05 1 Ponto

▪ Atividades 1 Ponto

▪ Regimental – 05/06 7 Pontos

▪ Total 10 Pontos

Professor Ariel da Silva Dias - www.arieldias.com

Page 6: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise de Algoritmo

▪ Antes...

▪ Existe diferença entre Algoritmo, Código Fonte, Processo, Programa, Software, App?

▪ Um programa não roda...

▪ Um programa não tem performance...

Professor Ariel da Silva Dias - www.arieldias.com

Page 7: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Algoritmo

▪ Algoritmos são projetados para resolver problemas

▪ Problema: encontrar a melhor rota, em termos de tempo de entrega, dos produtosdas Casas Ceará em Ermelino Matarazzo;

▪ Solução: algoritmo para descoberta da melhor rota tendo como entrada os locais deentrega.

▪ Informalmente, um algoritmo é um procedimento computacional bem definidoque:▪ Recebe um conjunto de valores como entrada e

▪ Produz um conjunto de valores como saída.

Professor Ariel da Silva Dias - www.arieldias.com

Page 8: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Algoritmo

Segundo Dijkstra, um algoritmo corresponde a uma descrição de um padrão decomportamento, expresso em termos de um conjunto finito de ações.

Segundo Terada, um algoritmo é, em geral, uma descrição passo a passo de comoum problema é solucionável. A descrição deve ser finita, e os passos devem serbem definidos, sem ambiguidades, e executáveis computacionalmente.

Professor Ariel da Silva Dias - www.arieldias.com

Page 9: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Algoritmo

Consequências:

▪ Deve-se ter um repertório finito de regras

▪ Linguagem de programação;

▪ A maior parte dos algoritmos utilizam métodos de organização de dadosenvolvidos na computação▪ Estrutura de dados;

Professor Ariel da Silva Dias - www.arieldias.com

Page 10: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Algoritmo

Consequências:

▪ Tempo finito não é uma eternidade

▪ A maior parte das pessoas não está interessada em algoritmos que levam anos,décadas, séculos, milênios para executarem;

▪ Existem diferentes tipos de computadores▪ Logo, existem diferentes modelos computacionais.

Professor Ariel da Silva Dias - www.arieldias.com

Page 11: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Algoritmo – Problema x Instância

Problema: rearranjar um vetor A[1...n] em ordem crescente.

Entrada:

Saída:

Instância: O vetor é uma instância do problema de ordenação.

32 25 64 18 10 41 44 50 16 1

1 10 16 18 25 32 41 44 50 64

1 n

1 n

Professor Ariel da Silva Dias - www.arieldias.com

Page 12: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Algoritmo – Problema x Instância

Todo problema computacional é uma coleção de instância. Cada instância é definida por um conjunto particular de dados.

Professor Ariel da Silva Dias - www.arieldias.com

Page 13: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Algoritmo – Problema x Instância

Tamanho da instância

▪ No problema de ordenação de vetores visto anteriormente, podemos dizer que otamanho da instância é 10 e que, em geral, o tamanho de uma instância A[1...n]é n;

Professor Ariel da Silva Dias - www.arieldias.com

Page 14: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Projeto de Algoritmo

Projetar algoritmos implica estudar seu comportamento no tempo e no espaço:

▪ No tempo: quanto tempo vai demorar para encontrar a solução do problema

▪ No espaço: quanto de memória será necessário para encontrar a solução

Professor Ariel da Silva Dias - www.arieldias.com

Page 15: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise de Algoritmo

Dois problemas distintos

1. Análise de um algoritmo particular

▪ Qual é o custo de usar um dado algoritmo para resolver um problema específico?

▪ Quantas vezes cada parte desse algoritmo vai ser executada?

▪ Quanto de memória será necessária?

Professor Ariel da Silva Dias - www.arieldias.com

Page 16: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise de Algoritmo

Dois problemas distintos

2. Análise de uma classe de algoritmos

▪ Qual é o algoritmo de menor custo possível para resolver um problema específico?

▪ Isto implica investigar toda uma família de algoritmo?

▪ Para realizar esta investigação limites podem ser impostos:

▪ Exemplo: número mínimo de comparações necessárias para ordenar n números por meiode comparações sucessivas (teremos o pior e melhor caso).

Professor Ariel da Silva Dias - www.arieldias.com

Page 17: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise de Algoritmo

Em análise de algoritmos buscamos responder a seguinte pergunta: “podemos fazer um algoritmo mais eficiente?”

Professor Ariel da Silva Dias - www.arieldias.com

Page 18: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise de Algoritmo

Lembre-se que podemos resolver um mesmo problema de várias maneirasdiferentes, ou seja, utilizamos algoritmos diferentes para o mesmo problema.

Algoritmos diferentes para um mesmo problema, não necessariamente terão amesma eficiência!

Professor Ariel da Silva Dias - www.arieldias.com

Page 19: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise de Algoritmo

Essas diferenças de eficiência podem ser

▪ Irrelevantes para uma instância pequena (n pequeno);

▪ Crescer proporcionalmente com o tamanho da instância (n muito grande);

Professor Ariel da Silva Dias - www.arieldias.com

Page 20: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise de Algoritmo

▪ Podemos determinar se um algoritmo é o mais eficiente utilizando duasabordagens:

▪ Análise Empírica: comparação entre os programas;

▪ Análise Matemática: estudo das propriedades dos algoritmos;

Professor Ariel da Silva Dias - www.arieldias.com

Page 21: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise de Algoritmo

▪ Análise Empírica

▪ Avalia o custo de um algoritmo já implementado e em execução;

▪ Logo, é analisado o programa!

▪ Considera custos não aparentes;

▪ Utilizado para comparar computadores e linguagens;

▪ Resultado pode ser injusto;

Professor Ariel da Silva Dias - www.arieldias.com

Page 22: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise de Algoritmo

▪ Análise Matemática

▪ Permite um estudo formal do algoritmo;

▪ Considera somente os custos dominantes do algoritmo;

▪ A medição do tempo (custo) é feita de maneira independente do hardware ou dalinguagem de programação utilizada;

▪ Permite compreender o comportamento de um algoritmo à medida que a instânciado problema (conjunto de dados de entrada n) cresce.

Professor Ariel da Silva Dias - www.arieldias.com

Page 23: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

▪ Vamos contar quantas instruções simples o algoritmo executa;

▪ Tipos de instrução:▪ Atribuição de valor à uma variável;▪ Acesso ao valor de um elemento do vetor;▪ Comparação entre variáveis;▪ Incremento/decremento de variáveis;▪ Operações aritméticas básicas;

▪ Contrato inicial:▪ Vamos assumir que as instruções possuem o mesmo custo;▪ Comandos de seleção possuem custo zero;

Professor Ariel da Silva Dias - www.arieldias.com

Page 24: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

int m = 10;

int n = 20;

int o = m + n;

Professor Ariel da Silva Dias - www.arieldias.com

Page 25: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

int a = 10

int b = 0

if(a<8)

b = 4;

if(a>8)

b = 6;

if(a==8)

b = 3;

Professor Ariel da Silva Dias - www.arieldias.com

Page 26: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

int a = 10

int b = 0

if(a<8)

b = 4;

else if(a>8)

b = 6;

else

b = 3;

Professor Ariel da Silva Dias - www.arieldias.com

Page 27: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

int M = v[0];

for(i = 0; i< n; i++){

if(v[i] >= M)

M = v[i];

}

Professor Ariel da Silva Dias - www.arieldias.com

Page 28: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

▪ Vamos ignorar por enquanto os comandos dentro do laço for;

▪ Assim, temos que o algoritmos precisa executar quantas instruções?

▪ 3 antes de iniciar o laço for e

▪ 2 ao final de cada laço for que será executado n vezes;

▪ Logo, se o laço estiver vazio, definimos uma função matemática para o cálculo do custo do algoritmo em relação ao tamanho do vetor de entrada: f(n) = 2n + 3

▪ E se considerarmos o conteúdo do laço for?

Professor Ariel da Silva Dias - www.arieldias.com

Page 29: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

▪ PROBLEMA

▪ Algumas instruções dentro do for podem ou não serem executadas;

▪ Antes bastava saber o tamanho do vetor para definir a função de custo f(n);

▪ Agora temos que considerar o conteúdo do vetor;

Professor Ariel da Silva Dias - www.arieldias.com

Page 30: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

▪ EXEMPLOS:▪ V1 = {1, 2, 3, 4};▪ V2 = {4, 3, 2, 1};

1. int M = v[0];

2. for(i = 0; i< n; i++){

3. if(v[i] >= M)

4. M = v[i];

5. }

Professor Ariel da Silva Dias - www.arieldias.com

Page 31: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

▪ EXEMPLOS:

▪ V1 = {1, 2, 3, 4};

▪ V2 = {4, 3, 2, 1};

▪ Considerações▪ V1: o comando if é sempre verdadeiro, logo, teremos mais instruções;

▪ V2: o comando if é sempre falso, a atribuição nunca é executada, logo, teremos menos instruções.

Professor Ariel da Silva Dias - www.arieldias.com

Page 32: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula1n.pdf · Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Professor Ariel

Análise Matemática – Contando Instruções do Algoritmo

▪ EXEMPLOS:

▪ V1 = {1, 2, 3, 4};

▪ V2 = {4, 3, 2, 1};

▪ Considerações▪ Para nosso azar, V1 vai executar mais instruções, terá um custo maior;

▪ Para nossa sorte, V2 vai executar menos instruções, terá um custo menor;

Professor Ariel da Silva Dias - www.arieldias.com