25
Aula T05 – BCC202 Aula T05 – BCC202 Análise de Algoritmos Análise de Algoritmos (Parte 3) (Parte 3) Túlio Toffolo Túlio Toffolo www.decom.ufop.br/toffolo www.decom.ufop.br/toffolo

Aula T05 – BCC202 Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

  • Upload
    adanne

  • View
    27

  • Download
    1

Embed Size (px)

DESCRIPTION

Aula T05 – BCC202 Análise de Algoritmos (Parte 3) Túlio Toffolo www.decom.ufop.br/toffolo. Como escolher o algoritmo mais adequado para uma situação? (Continuação). Comportamento Assintótico de Funções. Nas aulas passadas aprendemos: Como calcular a função de complexidade f(n). - PowerPoint PPT Presentation

Citation preview

Page 1: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Aula T05 – BCC202 Aula T05 – BCC202

Análise de Algoritmos (Parte 3)Análise de Algoritmos (Parte 3)

Túlio ToffoloTúlio Toffolowww.decom.ufop.br/toffolowww.decom.ufop.br/toffolo

Page 2: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Como escolher o algoritmo mais adequado para uma situação?

(Continuação)

Page 3: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Comportamento Assintótico de FunçõesComportamento Assintótico de Funções

• Nas aulas passadas aprendemos:

• Como calcular a função de complexidade f(n).

Melhor caso x Caso médio x Pior caso

Qual a influência desta função em algoritmos aplicados sobre problemas de tamanho pequeno?

E sobre problemas grandes?

Estuda-se o comportamento assintótico das funções de custo. O que isto significa?

Page 4: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Qual a função de complexidade para MaxMin1?

• Seja f(n) o número de comparações entre os elementos de A, se A contiver n elementos.

• Logo f(n) = 2(n-1) para n > 0, para o melhor caso, pior caso e caso médio.

void MaxMin1(int* A, int n, int* pMax, int* pMin){ int i; *pMax = A[0]; *pMin = A[0]; for (i = 1; i < n; i++) { if (A[i] > *pMax) *pMax = A[i]; if (A[i] < *pMin) *pMin = A[i]; } }

2*(n-1)

Page 5: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Exemplo - Maior e Menor Elemento (2)

• MaxMin1 pode ser facilmente melhorado: a comparação A[i] < *pMin só é necessária quando a comparação A[i] > *pMax dá falso.

void MaxMin2(int* A, int n, int* pMax, int* pMin) { int i; *pMax = A[0]; *pMin = A[0]; for (i = 1; i < n; i++) { if (A[i] > *pMax) *pMax = A[i]; else if (A[i] < *pMin) *pMin = A[i]; } }

Page 6: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Qual a função de complexidade para 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:• No caso médio, A[i] é maior do que Max a metade das vezes.• f(n) = 3n/2 – 3/2

void MaxMin2(int* A, int n, int* pMax, int* pMin) { int i; Max = A[0]; Min = A[0]; for (i = 1; i < n; i++) { if (A[i] > *pMax) *pMax = A[i]; else if (A[i] < *pMin) *pMin = A[i]; } }

Page 7: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Comportamento Assintótico de FunçõesComportamento Assintótico de Funções

• Nas aulas passadas também aprendemos:

• Comportamento assintótico das função de complexidade f(n).

Dominação Assintótica

Notação O.

Notação ΩΩ e Notação ӨӨ..

Page 8: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Dominação AssintóticaDominação Assintótica

• f(n) domina assintoticamente g(n) se:

Existem duas constantes positivas c e m tais que, para n ≥ m, temos |g(n)| ≤ c|f(n)|.

Page 9: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Notação ONotação O

• O valor da constante m mostrado é o menor valor possível, mas qualquer valor maior também é válido.

• Definição: uma função g(n) é O(f(n)) se existem duas constantes positivas c e m tais que g(n) ≤ c f(n), para todo n ≥ m.

Page 10: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Operações com a Notação OOperações com a Notação O

Page 11: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Qual a complexidade da função MaxMin1?

• Seja f(n) o número de comparações entre os elementos de A, se A contiver n elementos.

• Logo f(n) = 2(n-1) para n > 0, para o melhor caso, pior caso e caso médio.

void MaxMin1(int* A, int n, int* pMax, int* pMin){ int i; *pMax = A[0]; *pMin = A[0]; for (i = 1; i < n; i++) { if (A[i] > *pMax) *pMax = A[i]; if (A[i] < *pMin) *pMin = A[i]; } }

O(n)

Page 12: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Exercício da Última Semana...

void exercicio1 (int n){ int i, a; a = 0; i = 0; while (i < n) {

a += i; i += 2; }}

void exercicio2 (int n){ int i, j, a; a = 0; for (i = 0; i < n; i++) for (j = 0; j < i; j++) a += i + j;}

2

)1(

2

)11)(1(1...210

1

0

nnnnni

n

i

2

2n

O(n) O(n2)

Page 13: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Notação Notação ΩΩ

• Especifica um limite inferior para g(n).

• Definição: Uma função g(n) é Ω(f(n)) se:

Existem duas constantes positivas c e m tais que, para n ≥ m, temos |g(n)| ≥ c|f(n)|.

Page 14: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Notação Notação ӨӨ

• Exemplo gráfico de dominação assintótica que ilustra a notação ӨӨ.

• Especifica um limite assintótico firme para g(n).

Para ser ӨӨ(f(n))(f(n)), uma função deve ser ao mesmo , uma função deve ser ao mesmo tempo tempo O(f(n))O(f(n)) e e Ω(f(n)).Ω(f(n)).

Page 15: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Notação Notação ӨӨ

Para mostrar que g(n) = 3n3 + 2n2 é Ω(n3) basta fazer:c = 1, e então 3n3 + 2n2 ≥ n3 para n ≥ 0.

Seja g(n) = n2 para n par (n ≥ 0) g(n) = n para n ímpar (n ≥ 1).

Neste caso g(n) poderá ser:Ω(n2), se considerarmos

apenas entradas pares

Ω(n), se considerarmos apenas entradas ímpares

Se considerarmos qualquer entrada possível, então g(n) é Ω(n)

Page 16: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Perguntas....Perguntas....

• n é O(n log n)? Esta afirmação é útil?

• n3 é Ω(n)? Esta afirmação é útil?

• n é O(n)?

• n é Ω(n)?

• n é ӨӨ(n)?(n)?

• n é ӨӨ(n (n loglog n)? n)?

Page 17: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Data da Prova 1

• Quanto mais longe, mais matéria acumula =(

• Tipo Abstrato de Dados• Análise de Algoritmos

• Função de complexidade• Notações O, Ω e ӨӨ• Classes de comportamento assintótico• Limites inferiores

• Alocação Dinâmica• Recursividade

• Valor: 2,0 pontos

Page 18: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Data da Prova 1

• Site: www.decom.ufop.br/toffolo• Listas de exercício estarão disponíveis ainda hoje no site

• Próximas aulas• Classes de comportamento assintótico• Limites inferiores• Alocação Dinâmica (reforço em TAD e ponteiros)• Recursividade• Aula de dúvidas para a prova

• Sugestão de data para a prova: até dia 21/Setembro

Page 19: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Horários de Monitoria

• Kayran (4h/semana)• Terça-feira: 19h – 21h• Quinta-feira: 19h – 21h

• Tiago (8h/semana)• Segunda-feira: 19h – 21h• Terça-feira: 19h – 21h• Quarta-feira: 19h – 21h• Quinta-feira: 19h – 21h

Page 20: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Aula(s) Extra(s)

• Presença não obrigatória• Tema: Reforço sobre algoritmos e programação

• Interessados:• Enviar e-mail para [email protected] com o assunto

[BCC202 – Aula Extra]

• Provavelmente próxima sexta-feira (manhã ou tarde).• Data/horário a serem decididos por votação no site:

www.decom.ufop.br/toffolo

Page 21: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Quem vê, entende...Mas é quem faz que aprende!

Page 22: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Exercício 1

void ex1(int n) { int i, j, x, y; x = y = 0; for (i = 1; i <= n; i++) {

for (j = i; j <= n; j++) x = x + 1;

for (j = 1; j < i; j++) y = y + 1;

}}

• Obtenha a função de complexidade f(n) dos algoritmos abaixo. Na função de custo, considere apenas as operações envolvendo as variáveis x e y. Responder também, para cada algoritmo:

• Qual o valor da variável x ao final da execução do algoritmo?

• O algoritmo é O(n2)? É ΩΩ(n3)? • O algoritmo é ӨӨ(n(n3)? void ex2(int n) {

int i, j, k, x; x = 0; for (i = 1; i <= n; i++)

for (j = 1; j <= n; j++) for (k = 1; k <= j; k++) x = x + j + k; x = i;}

Page 23: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo
Page 24: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo

Exercício 2

• Indique se as afirmativas a seguir são verdadeiras ou falsas e justifique a sua resposta

• É melhor um algoritmo que requer 2n passos do que um que requer 10n10 passos.

• 2n+1 = O(2n).

• f(n) = O(u(n)) e g(n) = O(v(n)) => f(n) + g(n) = O(u(n) + v(n))

• f(n) = O(u(n)) e g(n) = O(v(n))=> f(n) - g(n) = O(u(n) - v(n))

Page 25: Aula T05 – BCC202  Análise de Algoritmos (Parte 3) Túlio Toffolo decom.ufop.br/toffolo