complexidade assintótica - usp · 2016. 8. 24. · tempo de execução do algoritmo = soma dos...

86
1 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 SISTEMAS DE INFORMAÇÃO 1 SISTEMAS DE INFORMAÇÃO 1 1 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO 1 SISTEMAS DE INFORMAÇÃO 1 1 SISTEMAS DE INFORMAÇÃO Complexidade Assintótica Professores: Norton T. Roman Fátima L. S. Nunes

Upload: others

Post on 23-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

11SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO1SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO1SISTEMAS DE

INFORMAÇÃO1SISTEMAS DE

INFORMAÇÃO11 1SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO1SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO1SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO

Complexidade Assintótica

Professores:

Norton T. Roman

Fátima L. S. Nunes

Page 2: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

22SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO2SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO2SISTEMAS DE

INFORMAÇÃO2SISTEMAS DE

INFORMAÇÃO22 2SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO2SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO2SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO

Vamos lembrar dos algoritmos de ordenação

Quais vocês já conhecem?

Page 3: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

33SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO3SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO3SISTEMAS DE

INFORMAÇÃO3SISTEMAS DE

INFORMAÇÃO33 3SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO3SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO3SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO

Vamos lembrar dos algoritmos de ordenação

Quais vocês já conhecem? Seleção (Selection Sort) Inserção (Insertion Sort) Bolha (Bubble Sort)

Page 4: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

44SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO4SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO4SISTEMAS DE

INFORMAÇÃO4SISTEMAS DE

INFORMAÇÃO44 4SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO4SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO4SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO

Vamos lembrar dos algoritmos de ordenação

Quais vocês já conhecem? Seleção (Selection Sort) Inserção (Insertion Sort) Bolha (Bubble Sort)

Qual é o melhor ???

Page 5: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

55SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO5SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO5SISTEMAS DE

INFORMAÇÃO5SISTEMAS DE

INFORMAÇÃO55 5SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO5SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO5SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO

Vamos lembrar dos algoritmos de ordenação

Quais vocês já conhecem? Seleção (Selection Sort) Inserção (Insertion Sort) Bolha (Bubble Sort)

Qual é o melhor ???

Page 6: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

66SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO6SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO6SISTEMAS DE

INFORMAÇÃO6SISTEMAS DE

INFORMAÇÃO66 6SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO6SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO6SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO

Vamos lembrar dos algoritmos de ordenação

Inserção Bolhavoid insercaoDireta(int [] numeros)

{ for (int ivet=1; ivet < numeros.length; ivet++) { int numaInserir = numeros[ivet]; int isubv = ivet; while ((isubv > 0) && (numeros [isubv -1] > numoAInserir)) { numeros[isubv] = numeros[isubv - 1]; isubv--; } numeros[isubv] = numAInserir; } }

void bolha(int [] numeros) { for (ivet = numeros.length - 1; ivet > 0; ivet--) {

for (isubv = 0; isubv < ivet; isubv++)

if (numeros[isubv ] > numeros[isubv+1]) { temp = numeros[isubv]; numeros [isubv] = numeros [isubv+1]; numeros [isubv+1] = temp; } } }

Page 7: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

77SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO7SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO7SISTEMAS DE

INFORMAÇÃO7SISTEMAS DE

INFORMAÇÃO77 7SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO7SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO7SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO

Vamos lembrar dos algoritmos de ordenação

Melhor em quê? tempo memória dificuldade

Page 8: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

88SISTEMAS DE

INFORMAÇÃO88SISTEMAS DE

INFORMAÇÃO88SISTEMAS DE

INFORMAÇÃO8SISTEMAS DE

INFORMAÇÃO88SISTEMAS DE

INFORMAÇÃO88SISTEMAS DE

INFORMAÇÃO8SISTEMAS DE

INFORMAÇÃO8SISTEMAS DE

INFORMAÇÃO88 8SISTEMAS DE

INFORMAÇÃO88SISTEMAS DE

INFORMAÇÃO8SISTEMAS DE

INFORMAÇÃO88SISTEMAS DE

INFORMAÇÃO88SISTEMAS DE

INFORMAÇÃO8SISTEMAS DE

INFORMAÇÃO88SISTEMAS DE

INFORMAÇÃO

Recordando...

Algoritmo

O que é?

Page 9: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

99SISTEMAS DE

INFORMAÇÃO99SISTEMAS DE

INFORMAÇÃO99SISTEMAS DE

INFORMAÇÃO9SISTEMAS DE

INFORMAÇÃO99SISTEMAS DE

INFORMAÇÃO99SISTEMAS DE

INFORMAÇÃO9SISTEMAS DE

INFORMAÇÃO9SISTEMAS DE

INFORMAÇÃO99 9SISTEMAS DE

INFORMAÇÃO99SISTEMAS DE

INFORMAÇÃO9SISTEMAS DE

INFORMAÇÃO99SISTEMAS DE

INFORMAÇÃO99SISTEMAS DE

INFORMAÇÃO9SISTEMAS DE

INFORMAÇÃO99SISTEMAS DE

INFORMAÇÃO

Recordando...

Algoritmo

Informalmente (Cormen et al., 2002):Qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores com saída.Sequência de passos computacionais que transformam a entrada na saída.

Page 10: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1010SISTEMAS DE

INFORMAÇÃO1010SISTEMAS DE

INFORMAÇÃO1010SISTEMAS DE

INFORMAÇÃO10SISTEMAS DE

INFORMAÇÃO1010SISTEMAS DE

INFORMAÇÃO1010SISTEMAS DE

INFORMAÇÃO10SISTEMAS DE

INFORMAÇÃO10SISTEMAS DE

INFORMAÇÃO1010 10SISTEMAS DE

INFORMAÇÃO1010SISTEMAS DE

INFORMAÇÃO10SISTEMAS DE

INFORMAÇÃO1010SISTEMAS DE

INFORMAÇÃO1010SISTEMAS DE

INFORMAÇÃO10SISTEMAS DE

INFORMAÇÃO1010SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos

O que é analisar um algoritmo?

Page 11: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1111SISTEMAS DE

INFORMAÇÃO1111SISTEMAS DE

INFORMAÇÃO1111SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO1111SISTEMAS DE

INFORMAÇÃO1111SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO1111 11SISTEMAS DE

INFORMAÇÃO1111SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO1111SISTEMAS DE

INFORMAÇÃO1111SISTEMAS DE

INFORMAÇÃO11SISTEMAS DE

INFORMAÇÃO1111SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos

O que é analisar um algoritmo? Prever os recursos de que o algoritmo

necessitará. Quais recursos?

Page 12: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1212SISTEMAS DE

INFORMAÇÃO1212SISTEMAS DE

INFORMAÇÃO1212SISTEMAS DE

INFORMAÇÃO12SISTEMAS DE

INFORMAÇÃO1212SISTEMAS DE

INFORMAÇÃO1212SISTEMAS DE

INFORMAÇÃO12SISTEMAS DE

INFORMAÇÃO12SISTEMAS DE

INFORMAÇÃO1212 12SISTEMAS DE

INFORMAÇÃO1212SISTEMAS DE

INFORMAÇÃO12SISTEMAS DE

INFORMAÇÃO1212SISTEMAS DE

INFORMAÇÃO1212SISTEMAS DE

INFORMAÇÃO12SISTEMAS DE

INFORMAÇÃO1212SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos O que é analisar um algoritmo?

Prever os recursos de que o algoritmo necessitará.

Quais recursos? memória, largura de banda de comunicação, hardware principal: tempo de computação

Análise de algoritmos: permite escolher o algoritmo mais eficiente dentre

um conjunto de candidatos para resolver um problema

Page 13: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1313SISTEMAS DE

INFORMAÇÃO1313SISTEMAS DE

INFORMAÇÃO1313SISTEMAS DE

INFORMAÇÃO13SISTEMAS DE

INFORMAÇÃO1313SISTEMAS DE

INFORMAÇÃO1313SISTEMAS DE

INFORMAÇÃO13SISTEMAS DE

INFORMAÇÃO13SISTEMAS DE

INFORMAÇÃO1313 13SISTEMAS DE

INFORMAÇÃO1313SISTEMAS DE

INFORMAÇÃO13SISTEMAS DE

INFORMAÇÃO1313SISTEMAS DE

INFORMAÇÃO1313SISTEMAS DE

INFORMAÇÃO13SISTEMAS DE

INFORMAÇÃO1313SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos

Em geral, tempo de duração de um algoritmo cresce com o tamanho da entrada

É usual descrever o tempo de execução de um programa como uma função do tamanho de sua entrada.

Page 14: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1414SISTEMAS DE

INFORMAÇÃO1414SISTEMAS DE

INFORMAÇÃO1414SISTEMAS DE

INFORMAÇÃO14SISTEMAS DE

INFORMAÇÃO1414SISTEMAS DE

INFORMAÇÃO1414SISTEMAS DE

INFORMAÇÃO14SISTEMAS DE

INFORMAÇÃO14SISTEMAS DE

INFORMAÇÃO1414 14SISTEMAS DE

INFORMAÇÃO1414SISTEMAS DE

INFORMAÇÃO14SISTEMAS DE

INFORMAÇÃO1414SISTEMAS DE

INFORMAÇÃO1414SISTEMAS DE

INFORMAÇÃO14SISTEMAS DE

INFORMAÇÃO1414SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos Em geral, tempo de duração de um algoritmo cresce

com o tamanho da entrada Tamanho de entrada (n):

depende do problema estudado maioria dos problemas: número de itens de entrada exemplo: ordenação (quantidade de elementos do arranjo)

Tempo de execução: quantidade de operações primitivas ou etapas executadas para uma

determinada entrada vamos considerar que cada linha i leva um tempo constante ci

Page 15: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1515SISTEMAS DE

INFORMAÇÃO1515SISTEMAS DE

INFORMAÇÃO1515SISTEMAS DE

INFORMAÇÃO15SISTEMAS DE

INFORMAÇÃO1515SISTEMAS DE

INFORMAÇÃO1515SISTEMAS DE

INFORMAÇÃO15SISTEMAS DE

INFORMAÇÃO15SISTEMAS DE

INFORMAÇÃO1515 15SISTEMAS DE

INFORMAÇÃO1515SISTEMAS DE

INFORMAÇÃO15SISTEMAS DE

INFORMAÇÃO1515SISTEMAS DE

INFORMAÇÃO1515SISTEMAS DE

INFORMAÇÃO15SISTEMAS DE

INFORMAÇÃO1515SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos Função de custo de um algoritmo

representa o custo de tempo de cada instrução e o número de vezes que cada instrução é executada

Exemplo: insertion-sort(A) (entrada: array A que tem tamanho n)

custo vezes

c1 n

c2 n-1

0 n-1

c4 n-1

c5

c6

c7

c8 n-1

∑j=2

n

t j

∑j=2

n

( t j−1 )

∑j=2

n

( t j−1 )

1 para j = 2 até tamanho[A] faça

2 chave = A[j]

3 // ordenando elementos à esquerda

4 i = j – 1

5 enquanto i > 0 e A[i] > chave faça

6 A[i+1] = A[i]

7 i = i -1

8 fim enquanto

9 A[i+1] = chave

10 fim para

Page 16: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1616SISTEMAS DE

INFORMAÇÃO1616SISTEMAS DE

INFORMAÇÃO1616SISTEMAS DE

INFORMAÇÃO16SISTEMAS DE

INFORMAÇÃO1616SISTEMAS DE

INFORMAÇÃO1616SISTEMAS DE

INFORMAÇÃO16SISTEMAS DE

INFORMAÇÃO16SISTEMAS DE

INFORMAÇÃO1616 16SISTEMAS DE

INFORMAÇÃO1616SISTEMAS DE

INFORMAÇÃO16SISTEMAS DE

INFORMAÇÃO1616SISTEMAS DE

INFORMAÇÃO1616SISTEMAS DE

INFORMAÇÃO16SISTEMAS DE

INFORMAÇÃO1616SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos Tempo de execução do algoritmo = soma dos tempos de execução para cada

instrução

T(n)=c1n + c2(n-1) + c4(n-1) + c5 + c6 + c7 + c8 (n-1)

1 para j = 2 até tamanho[A] faça

2 chave = A[j]

3 // ordenando elementos à esquerda

4 i = j – 1

5 enquanto i > 0 e A[i] > chave faça

6 A[i+1] = A[i]

7 i = i -1

8 fim enquanto

9 A[i+1] = chave

10 fim para

custo vezes

c1 n

c2 n-1

0 n-1

c4 n-1

c5

c6

c7

c8 n-1

∑j=2

n

t j

∑j=2

n

( t j−1 )

∑j=2

n

( t j−1 )

∑j=2

n

t j ∑j=2

n

( t j−1 ) ∑j=2

n

( t j−1 )

Page 17: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1717SISTEMAS DE

INFORMAÇÃO1717SISTEMAS DE

INFORMAÇÃO1717SISTEMAS DE

INFORMAÇÃO17SISTEMAS DE

INFORMAÇÃO1717SISTEMAS DE

INFORMAÇÃO1717SISTEMAS DE

INFORMAÇÃO17SISTEMAS DE

INFORMAÇÃO17SISTEMAS DE

INFORMAÇÃO1717 17SISTEMAS DE

INFORMAÇÃO1717SISTEMAS DE

INFORMAÇÃO17SISTEMAS DE

INFORMAÇÃO1717SISTEMAS DE

INFORMAÇÃO1717SISTEMAS DE

INFORMAÇÃO17SISTEMAS DE

INFORMAÇÃO1717SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos Tempo de execução do algoritmo = soma dos tempos de execução para cada

instrução

T(n)=c1n + c2(n-1) + c4(n-1) + c5 + c6 + c7 + c8 (n-1)

Melhor caso: vetor já ordenado (A[i] ≤ chave na linha 5 tj=1 para j=2,3,...,n)

T(n)=c1n + c2(n-1) + c4(n-1) + c5(n-1) + c8(n-1) =( c1+ c2 + c4 + c5 + c8)n - (c2 + c4 + c5 + c8)

Tempo de execução, neste caso, pode ser expresso como an + b para constantes a e b que dependem dos custos de instrução ci função linear de n

∑j=2

n

t j ∑j=2

n

( t j−1 ) ∑j=2

n

( t j−1 )

Page 18: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1818SISTEMAS DE

INFORMAÇÃO1818SISTEMAS DE

INFORMAÇÃO1818SISTEMAS DE

INFORMAÇÃO18SISTEMAS DE

INFORMAÇÃO1818SISTEMAS DE

INFORMAÇÃO1818SISTEMAS DE

INFORMAÇÃO18SISTEMAS DE

INFORMAÇÃO18SISTEMAS DE

INFORMAÇÃO1818 18SISTEMAS DE

INFORMAÇÃO1818SISTEMAS DE

INFORMAÇÃO18SISTEMAS DE

INFORMAÇÃO1818SISTEMAS DE

INFORMAÇÃO1818SISTEMAS DE

INFORMAÇÃO18SISTEMAS DE

INFORMAÇÃO1818SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos Tempo de execução do algoritmo = soma dos tempos de execução para cada

instrução

T(n)=c1n + c2(n-1) + c4(n-1) + c5 + c6 + c7 + c8 (n-1)

Pior caso: vetor em ordem inversa (deve comparar cada elemento A[j] com cada elemento do subarranjo ordenado A[j... j-1] tj=j para j=2,3,...,n)

Tempo de execução, neste caso, pode ser expresso como an2 + bn + c para constantes a, b e c que dependem dos custos de instrução ci função quadrática de n

∑j=2

n

t j ∑j=2

n

( t j−1 ) ∑j=2

n

( t j−1 )

T (n )=c1 n+c2( n−1 )+c 4( n−1 )+c5

n(n−1 )2

−1+c6

n(n−1)2

+c7

n(n−1 )2

+c8 (n−1 )=

(c5

2+

c6

2+

c7

2 )n2+(c1 +c2+c4+c5

2−

c6

2−

c7

2+c8 )n−(c2+c4 +c5 +c8 )

∑j=2

n

( j−1 )=n(n−1 )

2∑j=2

n

( j)=n (n−1)

2−1

Page 19: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

1919SISTEMAS DE

INFORMAÇÃO1919SISTEMAS DE

INFORMAÇÃO1919SISTEMAS DE

INFORMAÇÃO19SISTEMAS DE

INFORMAÇÃO1919SISTEMAS DE

INFORMAÇÃO1919SISTEMAS DE

INFORMAÇÃO19SISTEMAS DE

INFORMAÇÃO19SISTEMAS DE

INFORMAÇÃO1919 19SISTEMAS DE

INFORMAÇÃO1919SISTEMAS DE

INFORMAÇÃO19SISTEMAS DE

INFORMAÇÃO1919SISTEMAS DE

INFORMAÇÃO1919SISTEMAS DE

INFORMAÇÃO19SISTEMAS DE

INFORMAÇÃO1919SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos Em geral:

tempo de execução de um algoritmo é fixo para uma determinada entrada

analisamos apenas o pior caso dos algoritmos: é um limite superior sobre o tempo de execução de qualquer entrada; pior caso ocorre com muita frequência para alguns algoritmos. Exemplo:

registro inexistente em um banco de dados; muitas vezes, o caso médio é quase tão ruim quanto o pior caso

Page 20: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2020SISTEMAS DE

INFORMAÇÃO2020SISTEMAS DE

INFORMAÇÃO2020SISTEMAS DE

INFORMAÇÃO20SISTEMAS DE

INFORMAÇÃO2020SISTEMAS DE

INFORMAÇÃO2020SISTEMAS DE

INFORMAÇÃO20SISTEMAS DE

INFORMAÇÃO20SISTEMAS DE

INFORMAÇÃO2020 20SISTEMAS DE

INFORMAÇÃO2020SISTEMAS DE

INFORMAÇÃO20SISTEMAS DE

INFORMAÇÃO2020SISTEMAS DE

INFORMAÇÃO2020SISTEMAS DE

INFORMAÇÃO20SISTEMAS DE

INFORMAÇÃO2020SISTEMAS DE

INFORMAÇÃO

Análise de Algoritmos Nas análises anteriores, foram feitas algumas simplificações em relação às

constantes, chegando à função linear e à função quadrática

Taxa de crescimento ou ordem de crescimento:

considera apenas o termo inicial de uma fórmula (exemplo: an2), pois os termos de mais baixa ordem são relativamente insignificantes para grandes valores de n;

ignora o coeficiente constante do termo inicial também por ser menos significativo para grandes entradas;

Portanto, dizemos que: a ordenação por inserção, por exemplo, tem um tempo de execução do pior caso igual a (n2) (lê-se “theta de n ao quadrado”);

Em geral, consideramos um algoritmo mais eficiente que outro se o tempo de execução do seu pior caso apresenta uma ordem de crescimento mais baixa.

Page 21: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2121SISTEMAS DE

INFORMAÇÃO2121SISTEMAS DE

INFORMAÇÃO2121SISTEMAS DE

INFORMAÇÃO21SISTEMAS DE

INFORMAÇÃO2121SISTEMAS DE

INFORMAÇÃO2121SISTEMAS DE

INFORMAÇÃO21SISTEMAS DE

INFORMAÇÃO21SISTEMAS DE

INFORMAÇÃO2121 21SISTEMAS DE

INFORMAÇÃO2121SISTEMAS DE

INFORMAÇÃO21SISTEMAS DE

INFORMAÇÃO2121SISTEMAS DE

INFORMAÇÃO2121SISTEMAS DE

INFORMAÇÃO21SISTEMAS DE

INFORMAÇÃO2121SISTEMAS DE

INFORMAÇÃO

Exercício

Criar o gráfico do insertion sort, medindo o tempo médio, melhor e pior caso.

Page 22: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2222SISTEMAS DE

INFORMAÇÃO2222SISTEMAS DE

INFORMAÇÃO2222SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO2222SISTEMAS DE

INFORMAÇÃO2222SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO2222 22SISTEMAS DE

INFORMAÇÃO2222SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO2222SISTEMAS DE

INFORMAÇÃO2222SISTEMAS DE

INFORMAÇÃO22SISTEMAS DE

INFORMAÇÃO2222SISTEMAS DE

INFORMAÇÃO

Exercício

Criar o gráfico do insertion sort, medindo o tempo médio, melhor e pior caso.

Page 23: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2323SISTEMAS DE

INFORMAÇÃO2323SISTEMAS DE

INFORMAÇÃO2323SISTEMAS DE

INFORMAÇÃO23SISTEMAS DE

INFORMAÇÃO2323SISTEMAS DE

INFORMAÇÃO2323SISTEMAS DE

INFORMAÇÃO23SISTEMAS DE

INFORMAÇÃO23SISTEMAS DE

INFORMAÇÃO2323 23SISTEMAS DE

INFORMAÇÃO2323SISTEMAS DE

INFORMAÇÃO23SISTEMAS DE

INFORMAÇÃO2323SISTEMAS DE

INFORMAÇÃO2323SISTEMAS DE

INFORMAÇÃO23SISTEMAS DE

INFORMAÇÃO2323SISTEMAS DE

INFORMAÇÃO

Complexidade? Assintótica?

Complexidade

(cs) sf (complexo+dade) Qualidade do que é complexo. Complexo

(cs) adj (lat complexu) 1 Que abrange ou encerra muitos elementos ou partes. 2 Que pode ser considerado sob vários pontos de vista. 3 Complicado.

Page 24: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2424SISTEMAS DE

INFORMAÇÃO2424SISTEMAS DE

INFORMAÇÃO2424SISTEMAS DE

INFORMAÇÃO24SISTEMAS DE

INFORMAÇÃO2424SISTEMAS DE

INFORMAÇÃO2424SISTEMAS DE

INFORMAÇÃO24SISTEMAS DE

INFORMAÇÃO24SISTEMAS DE

INFORMAÇÃO2424 24SISTEMAS DE

INFORMAÇÃO2424SISTEMAS DE

INFORMAÇÃO24SISTEMAS DE

INFORMAÇÃO2424SISTEMAS DE

INFORMAÇÃO2424SISTEMAS DE

INFORMAÇÃO24SISTEMAS DE

INFORMAÇÃO2424SISTEMAS DE

INFORMAÇÃO

Complexidade? Assintótica?

Assintótico

adj (assíntota+ico2) Geom 1 Pertencente ou relativo à assíntota. 2 Qualificativo do espaço compreendido entre uma curva e a sua assíntota. 3 Diz-se da direção paralela de uma assíntota. Var: assimptótico.Assíntota

sf (gr asýmptotos) Geom Linha reta que se aproxima indefinidamente de uma curva sem nunca poder tocá-la. Var: assímptota.

Page 25: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2525SISTEMAS DE

INFORMAÇÃO2525SISTEMAS DE

INFORMAÇÃO2525SISTEMAS DE

INFORMAÇÃO25SISTEMAS DE

INFORMAÇÃO2525SISTEMAS DE

INFORMAÇÃO2525SISTEMAS DE

INFORMAÇÃO25SISTEMAS DE

INFORMAÇÃO25SISTEMAS DE

INFORMAÇÃO2525 25SISTEMAS DE

INFORMAÇÃO2525SISTEMAS DE

INFORMAÇÃO25SISTEMAS DE

INFORMAÇÃO2525SISTEMAS DE

INFORMAÇÃO2525SISTEMAS DE

INFORMAÇÃO25SISTEMAS DE

INFORMAÇÃO2525SISTEMAS DE

INFORMAÇÃO

Complexidade? Assintótica?

Assíntota

sf (gr asýmptotos) Geom Linha reta que se aproxima indefinidamente de uma curva sem nunca poder tocá-la. Var: assímptota.

A função f(x)=1/x tem como assíntotas os eixos coordenados.

(Fonte: http://pt.wikipedia.org/wiki/Assímptota)

Page 26: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2626SISTEMAS DE

INFORMAÇÃO2626SISTEMAS DE

INFORMAÇÃO2626SISTEMAS DE

INFORMAÇÃO26SISTEMAS DE

INFORMAÇÃO2626SISTEMAS DE

INFORMAÇÃO2626SISTEMAS DE

INFORMAÇÃO26SISTEMAS DE

INFORMAÇÃO26SISTEMAS DE

INFORMAÇÃO2626 26SISTEMAS DE

INFORMAÇÃO2626SISTEMAS DE

INFORMAÇÃO26SISTEMAS DE

INFORMAÇÃO2626SISTEMAS DE

INFORMAÇÃO2626SISTEMAS DE

INFORMAÇÃO26SISTEMAS DE

INFORMAÇÃO2626SISTEMAS DE

INFORMAÇÃO

Complexidade assintótica

● Em ciência da computação e matemática aplicada, particularmente a análise de algoritmos, análise real, e engenharia, análise assintótica é um método de descrever o comportamento de limites. Exemplos incluem o desempenho de algoritmos quando aplicados a um volume muito grande de dados de entrada, ou o comportamento de sistemas físicos quando eles são muito grandes.

Page 27: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2727SISTEMAS DE

INFORMAÇÃO2727SISTEMAS DE

INFORMAÇÃO2727SISTEMAS DE

INFORMAÇÃO27SISTEMAS DE

INFORMAÇÃO2727SISTEMAS DE

INFORMAÇÃO2727SISTEMAS DE

INFORMAÇÃO27SISTEMAS DE

INFORMAÇÃO27SISTEMAS DE

INFORMAÇÃO2727 27SISTEMAS DE

INFORMAÇÃO2727SISTEMAS DE

INFORMAÇÃO27SISTEMAS DE

INFORMAÇÃO2727SISTEMAS DE

INFORMAÇÃO2727SISTEMAS DE

INFORMAÇÃO27SISTEMAS DE

INFORMAÇÃO2727SISTEMAS DE

INFORMAÇÃO

Crescimento Assintótico de Funções

Escolha do algoritmo não é um problema crítico quando n é pequeno. O problema é quando n cresce.

Por isso, é usual analisar o comportamento das funções de custo quando n é bastante grande: analisa-se o comportamento assintótico das funções de

custo; representa o limite do comportamento da função de custo

quando n cresce.

Page 28: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2828SISTEMAS DE

INFORMAÇÃO2828SISTEMAS DE

INFORMAÇÃO2828SISTEMAS DE

INFORMAÇÃO28SISTEMAS DE

INFORMAÇÃO2828SISTEMAS DE

INFORMAÇÃO2828SISTEMAS DE

INFORMAÇÃO28SISTEMAS DE

INFORMAÇÃO28SISTEMAS DE

INFORMAÇÃO2828 28SISTEMAS DE

INFORMAÇÃO2828SISTEMAS DE

INFORMAÇÃO28SISTEMAS DE

INFORMAÇÃO2828SISTEMAS DE

INFORMAÇÃO2828SISTEMAS DE

INFORMAÇÃO28SISTEMAS DE

INFORMAÇÃO2828SISTEMAS DE

INFORMAÇÃO

Crescimento Assintótico de Funções

Eficiência assintótica dos algoritmos: estuda a maneira como o tempo de execução de um

algoritmo aumenta com o tamanho da entrada no limite, à medida que o tamanho da entrada aumenta indefinidamente (sem limitação)

em geral, um algoritmo que é assintoticamente mais eficiente será a melhor escolha para toda as entradas, exceto as pequenas.

Page 29: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

2929SISTEMAS DE

INFORMAÇÃO2929SISTEMAS DE

INFORMAÇÃO2929SISTEMAS DE

INFORMAÇÃO29SISTEMAS DE

INFORMAÇÃO2929SISTEMAS DE

INFORMAÇÃO2929SISTEMAS DE

INFORMAÇÃO29SISTEMAS DE

INFORMAÇÃO29SISTEMAS DE

INFORMAÇÃO2929 29SISTEMAS DE

INFORMAÇÃO2929SISTEMAS DE

INFORMAÇÃO29SISTEMAS DE

INFORMAÇÃO2929SISTEMAS DE

INFORMAÇÃO2929SISTEMAS DE

INFORMAÇÃO29SISTEMAS DE

INFORMAÇÃO2929SISTEMAS DE

INFORMAÇÃO

Vamos ordenar

Quais funções “crescem mais”?

f(n) = n

f(n) = nlogn

f(n) = lognf(n) = n²

f(n) = 100n² + 15 n

f(n) = 2n

Page 30: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3030SISTEMAS DE

INFORMAÇÃO3030SISTEMAS DE

INFORMAÇÃO3030SISTEMAS DE

INFORMAÇÃO30SISTEMAS DE

INFORMAÇÃO3030SISTEMAS DE

INFORMAÇÃO3030SISTEMAS DE

INFORMAÇÃO30SISTEMAS DE

INFORMAÇÃO30SISTEMAS DE

INFORMAÇÃO3030 30SISTEMAS DE

INFORMAÇÃO3030SISTEMAS DE

INFORMAÇÃO30SISTEMAS DE

INFORMAÇÃO3030SISTEMAS DE

INFORMAÇÃO3030SISTEMAS DE

INFORMAÇÃO30SISTEMAS DE

INFORMAÇÃO3030SISTEMAS DE

INFORMAÇÃO

Vamos ordenar

Page 31: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3131SISTEMAS DE

INFORMAÇÃO3131SISTEMAS DE

INFORMAÇÃO3131SISTEMAS DE

INFORMAÇÃO31SISTEMAS DE

INFORMAÇÃO3131SISTEMAS DE

INFORMAÇÃO3131SISTEMAS DE

INFORMAÇÃO31SISTEMAS DE

INFORMAÇÃO31SISTEMAS DE

INFORMAÇÃO3131 31SISTEMAS DE

INFORMAÇÃO3131SISTEMAS DE

INFORMAÇÃO31SISTEMAS DE

INFORMAÇÃO3131SISTEMAS DE

INFORMAÇÃO3131SISTEMAS DE

INFORMAÇÃO31SISTEMAS DE

INFORMAÇÃO3131SISTEMAS DE

INFORMAÇÃO

Vamos ordenar

Page 32: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3232SISTEMAS DE

INFORMAÇÃO3232SISTEMAS DE

INFORMAÇÃO3232SISTEMAS DE

INFORMAÇÃO32SISTEMAS DE

INFORMAÇÃO3232SISTEMAS DE

INFORMAÇÃO3232SISTEMAS DE

INFORMAÇÃO32SISTEMAS DE

INFORMAÇÃO32SISTEMAS DE

INFORMAÇÃO3232 32SISTEMAS DE

INFORMAÇÃO3232SISTEMAS DE

INFORMAÇÃO32SISTEMAS DE

INFORMAÇÃO3232SISTEMAS DE

INFORMAÇÃO3232SISTEMAS DE

INFORMAÇÃO32SISTEMAS DE

INFORMAÇÃO3232SISTEMAS DE

INFORMAÇÃO

Vamos ordenar

Page 33: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3333SISTEMAS DE

INFORMAÇÃO3333SISTEMAS DE

INFORMAÇÃO3333SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO3333SISTEMAS DE

INFORMAÇÃO3333SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO3333 33SISTEMAS DE

INFORMAÇÃO3333SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO3333SISTEMAS DE

INFORMAÇÃO3333SISTEMAS DE

INFORMAÇÃO33SISTEMAS DE

INFORMAÇÃO3333SISTEMAS DE

INFORMAÇÃO

Vamos ordenar

Page 34: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3434SISTEMAS DE

INFORMAÇÃO3434SISTEMAS DE

INFORMAÇÃO3434SISTEMAS DE

INFORMAÇÃO34SISTEMAS DE

INFORMAÇÃO3434SISTEMAS DE

INFORMAÇÃO3434SISTEMAS DE

INFORMAÇÃO34SISTEMAS DE

INFORMAÇÃO34SISTEMAS DE

INFORMAÇÃO3434 34SISTEMAS DE

INFORMAÇÃO3434SISTEMAS DE

INFORMAÇÃO34SISTEMAS DE

INFORMAÇÃO3434SISTEMAS DE

INFORMAÇÃO3434SISTEMAS DE

INFORMAÇÃO34SISTEMAS DE

INFORMAÇÃO3434SISTEMAS DE

INFORMAÇÃO

Vamos ordenar

Page 35: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3535SISTEMAS DE

INFORMAÇÃO3535SISTEMAS DE

INFORMAÇÃO3535SISTEMAS DE

INFORMAÇÃO35SISTEMAS DE

INFORMAÇÃO3535SISTEMAS DE

INFORMAÇÃO3535SISTEMAS DE

INFORMAÇÃO35SISTEMAS DE

INFORMAÇÃO35SISTEMAS DE

INFORMAÇÃO3535 35SISTEMAS DE

INFORMAÇÃO3535SISTEMAS DE

INFORMAÇÃO35SISTEMAS DE

INFORMAÇÃO3535SISTEMAS DE

INFORMAÇÃO3535SISTEMAS DE

INFORMAÇÃO35SISTEMAS DE

INFORMAÇÃO3535SISTEMAS DE

INFORMAÇÃO

Vamos ordenar

Page 36: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3636SISTEMAS DE

INFORMAÇÃO3636SISTEMAS DE

INFORMAÇÃO3636SISTEMAS DE

INFORMAÇÃO36SISTEMAS DE

INFORMAÇÃO3636SISTEMAS DE

INFORMAÇÃO3636SISTEMAS DE

INFORMAÇÃO36SISTEMAS DE

INFORMAÇÃO36SISTEMAS DE

INFORMAÇÃO3636 36SISTEMAS DE

INFORMAÇÃO3636SISTEMAS DE

INFORMAÇÃO36SISTEMAS DE

INFORMAÇÃO3636SISTEMAS DE

INFORMAÇÃO3636SISTEMAS DE

INFORMAÇÃO36SISTEMAS DE

INFORMAÇÃO3636SISTEMAS DE

INFORMAÇÃO

Comportamento Assintótico

Vamos comparar funções assintoticamente, ou seja, para valores grandes, desprezando constantes multiplicativas e termos de menor ordem.

Page 37: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3737SISTEMAS DE

INFORMAÇÃO3737SISTEMAS DE

INFORMAÇÃO3737SISTEMAS DE

INFORMAÇÃO37SISTEMAS DE

INFORMAÇÃO3737SISTEMAS DE

INFORMAÇÃO3737SISTEMAS DE

INFORMAÇÃO37SISTEMAS DE

INFORMAÇÃO37SISTEMAS DE

INFORMAÇÃO3737 37SISTEMAS DE

INFORMAÇÃO3737SISTEMAS DE

INFORMAÇÃO37SISTEMAS DE

INFORMAÇÃO3737SISTEMAS DE

INFORMAÇÃO3737SISTEMAS DE

INFORMAÇÃO37SISTEMAS DE

INFORMAÇÃO3737SISTEMAS DE

INFORMAÇÃO

Comportamento Assintótico Supondo uma máquina que execute 1 milhão (106)

de operações por segundon

Page 38: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3838SISTEMAS DE

INFORMAÇÃO3838SISTEMAS DE

INFORMAÇÃO3838SISTEMAS DE

INFORMAÇÃO38SISTEMAS DE

INFORMAÇÃO3838SISTEMAS DE

INFORMAÇÃO3838SISTEMAS DE

INFORMAÇÃO38SISTEMAS DE

INFORMAÇÃO38SISTEMAS DE

INFORMAÇÃO3838 38SISTEMAS DE

INFORMAÇÃO3838SISTEMAS DE

INFORMAÇÃO38SISTEMAS DE

INFORMAÇÃO3838SISTEMAS DE

INFORMAÇÃO3838SISTEMAS DE

INFORMAÇÃO38SISTEMAS DE

INFORMAÇÃO3838SISTEMAS DE

INFORMAÇÃO

Comportamento Assintótico Influência do aumento de velocidade dos computadores no

tamanho do problema, considerando a complexidade assintótica Exemplo: um aumento de 1000 vezes na velocidade do computador

resolve, considerando o mesmo tempo, um problema dez vezes maior de complexidade (n3) e um problema 1000 vezes maior se a complexidade for (n).

Page 39: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

3939SISTEMAS DE

INFORMAÇÃO3939SISTEMAS DE

INFORMAÇÃO3939SISTEMAS DE

INFORMAÇÃO39SISTEMAS DE

INFORMAÇÃO3939SISTEMAS DE

INFORMAÇÃO3939SISTEMAS DE

INFORMAÇÃO39SISTEMAS DE

INFORMAÇÃO39SISTEMAS DE

INFORMAÇÃO3939 39SISTEMAS DE

INFORMAÇÃO3939SISTEMAS DE

INFORMAÇÃO39SISTEMAS DE

INFORMAÇÃO3939SISTEMAS DE

INFORMAÇÃO3939SISTEMAS DE

INFORMAÇÃO39SISTEMAS DE

INFORMAÇÃO3939SISTEMAS DE

INFORMAÇÃO

Comportamento Assintótico – Resumindo...

Se f(n) é a função de complexidade de um algoritmo A O comportamento assintótico de f (n) representa o limite do

comportamento do custo (complexidade) de A quando n cresce.

A análise de um algoritmo (função de complexidade) Geralmente considera apenas algumas operações elementares ou

mesmo uma operação elementar (e.g., o número de comparações).

A complexidade assintótica relata crescimento assintótico das operações elementares.

Page 40: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4040SISTEMAS DE

INFORMAÇÃO4040SISTEMAS DE

INFORMAÇÃO4040SISTEMAS DE

INFORMAÇÃO40SISTEMAS DE

INFORMAÇÃO4040SISTEMAS DE

INFORMAÇÃO4040SISTEMAS DE

INFORMAÇÃO40SISTEMAS DE

INFORMAÇÃO40SISTEMAS DE

INFORMAÇÃO4040 40SISTEMAS DE

INFORMAÇÃO4040SISTEMAS DE

INFORMAÇÃO40SISTEMAS DE

INFORMAÇÃO4040SISTEMAS DE

INFORMAÇÃO4040SISTEMAS DE

INFORMAÇÃO40SISTEMAS DE

INFORMAÇÃO4040SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico Definição:

Uma função g(n) domina assintoticamente outra função f(n) se existem duas constantes positivas c e m tais que, para n ≥ m, tem-se |f(n)| ≤ c . |g(n)|.

m

n

Page 41: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4141SISTEMAS DE

INFORMAÇÃO4141SISTEMAS DE

INFORMAÇÃO4141SISTEMAS DE

INFORMAÇÃO41SISTEMAS DE

INFORMAÇÃO4141SISTEMAS DE

INFORMAÇÃO4141SISTEMAS DE

INFORMAÇÃO41SISTEMAS DE

INFORMAÇÃO41SISTEMAS DE

INFORMAÇÃO4141 41SISTEMAS DE

INFORMAÇÃO4141SISTEMAS DE

INFORMAÇÃO41SISTEMAS DE

INFORMAÇÃO4141SISTEMAS DE

INFORMAÇÃO4141SISTEMAS DE

INFORMAÇÃO41SISTEMAS DE

INFORMAÇÃO4141SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico Definição:

Uma função g(n) domina assintoticamente outra função f(n) se existem duas constantes positivas c e m tais que, para n ≥ m, tem-se |f(n)| ≤ c . |g(n)|.

m

n

Exemplo:

g(n) = n e f (n) = n2

Alguém domina alguém? ???

Page 42: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4242SISTEMAS DE

INFORMAÇÃO4242SISTEMAS DE

INFORMAÇÃO4242SISTEMAS DE

INFORMAÇÃO42SISTEMAS DE

INFORMAÇÃO4242SISTEMAS DE

INFORMAÇÃO4242SISTEMAS DE

INFORMAÇÃO42SISTEMAS DE

INFORMAÇÃO42SISTEMAS DE

INFORMAÇÃO4242 42SISTEMAS DE

INFORMAÇÃO4242SISTEMAS DE

INFORMAÇÃO42SISTEMAS DE

INFORMAÇÃO4242SISTEMAS DE

INFORMAÇÃO4242SISTEMAS DE

INFORMAÇÃO42SISTEMAS DE

INFORMAÇÃO4242SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico Definição:

Uma função g(n) domina assintoticamente outra função f(n) se existem duas constantes positivas c e m tais que, para n ≥ m, tem-se |f(n)| ≤ c . |g(n)|.

m

n

Exemplo:

g(n) = n e f (n) = n2

Alguém domina alguém?

∣n∣ ≤ ∣n2∣ para todo n ∈ N

• Para c = 1 e m = 0 ⇒ g(n) ≤ f(n)∣ ∣ ∣ ∣• Portanto, f (n) domina assintoticamente g(n).

Page 43: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4343SISTEMAS DE

INFORMAÇÃO4343SISTEMAS DE

INFORMAÇÃO4343SISTEMAS DE

INFORMAÇÃO43SISTEMAS DE

INFORMAÇÃO4343SISTEMAS DE

INFORMAÇÃO4343SISTEMAS DE

INFORMAÇÃO43SISTEMAS DE

INFORMAÇÃO43SISTEMAS DE

INFORMAÇÃO4343 43SISTEMAS DE

INFORMAÇÃO4343SISTEMAS DE

INFORMAÇÃO43SISTEMAS DE

INFORMAÇÃO4343SISTEMAS DE

INFORMAÇÃO4343SISTEMAS DE

INFORMAÇÃO43SISTEMAS DE

INFORMAÇÃO4343SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico

g(n) = n e f (n) = -n2

Alguém domina alguém? ???

Page 44: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4444SISTEMAS DE

INFORMAÇÃO4444SISTEMAS DE

INFORMAÇÃO4444SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO4444SISTEMAS DE

INFORMAÇÃO4444SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO4444 44SISTEMAS DE

INFORMAÇÃO4444SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO4444SISTEMAS DE

INFORMAÇÃO4444SISTEMAS DE

INFORMAÇÃO44SISTEMAS DE

INFORMAÇÃO4444SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico

g(n) = n e f (n) = -n2

Alguém domina alguém? |n| ≤ ∣-n2∣ para todo n N.∈

Por ser módulo, o sinal não importa

Para c = 1 e m = 0 ⇒ ∣g(n)∣ ≤ ∣f(n)∣.

Portanto, f (n) domina assintoticamente g(n).

Page 45: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4545SISTEMAS DE

INFORMAÇÃO4545SISTEMAS DE

INFORMAÇÃO4545SISTEMAS DE

INFORMAÇÃO45SISTEMAS DE

INFORMAÇÃO4545SISTEMAS DE

INFORMAÇÃO4545SISTEMAS DE

INFORMAÇÃO45SISTEMAS DE

INFORMAÇÃO45SISTEMAS DE

INFORMAÇÃO4545 45SISTEMAS DE

INFORMAÇÃO4545SISTEMAS DE

INFORMAÇÃO45SISTEMAS DE

INFORMAÇÃO4545SISTEMAS DE

INFORMAÇÃO4545SISTEMAS DE

INFORMAÇÃO45SISTEMAS DE

INFORMAÇÃO4545SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico

g(n) = (n+1)2 e f (n) = n2

Alguém domina alguém? ???

Page 46: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4646SISTEMAS DE

INFORMAÇÃO4646SISTEMAS DE

INFORMAÇÃO4646SISTEMAS DE

INFORMAÇÃO46SISTEMAS DE

INFORMAÇÃO4646SISTEMAS DE

INFORMAÇÃO4646SISTEMAS DE

INFORMAÇÃO46SISTEMAS DE

INFORMAÇÃO46SISTEMAS DE

INFORMAÇÃO4646 46SISTEMAS DE

INFORMAÇÃO4646SISTEMAS DE

INFORMAÇÃO46SISTEMAS DE

INFORMAÇÃO4646SISTEMAS DE

INFORMAÇÃO4646SISTEMAS DE

INFORMAÇÃO46SISTEMAS DE

INFORMAÇÃO4646SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico

g(n) = (n+1)2 e f (n) = n2

Alguém domina alguém? Vamos colocar em um

gráfico(n+1)2

n2

Page 47: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4747SISTEMAS DE

INFORMAÇÃO4747SISTEMAS DE

INFORMAÇÃO4747SISTEMAS DE

INFORMAÇÃO47SISTEMAS DE

INFORMAÇÃO4747SISTEMAS DE

INFORMAÇÃO4747SISTEMAS DE

INFORMAÇÃO47SISTEMAS DE

INFORMAÇÃO47SISTEMAS DE

INFORMAÇÃO4747 47SISTEMAS DE

INFORMAÇÃO4747SISTEMAS DE

INFORMAÇÃO47SISTEMAS DE

INFORMAÇÃO4747SISTEMAS DE

INFORMAÇÃO4747SISTEMAS DE

INFORMAÇÃO47SISTEMAS DE

INFORMAÇÃO4747SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico

g(n) = (n+1)2 e f (n) = n2

Alguém domina alguém? Vamos colocar em um

gráfico ∣n2∣ ≤ ∣(n+1)2∣, para n ≥ 0 g(n) domina f(n)

(n+1)2

n2

Page 48: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4848SISTEMAS DE

INFORMAÇÃO4848SISTEMAS DE

INFORMAÇÃO4848SISTEMAS DE

INFORMAÇÃO48SISTEMAS DE

INFORMAÇÃO4848SISTEMAS DE

INFORMAÇÃO4848SISTEMAS DE

INFORMAÇÃO48SISTEMAS DE

INFORMAÇÃO48SISTEMAS DE

INFORMAÇÃO4848 48SISTEMAS DE

INFORMAÇÃO4848SISTEMAS DE

INFORMAÇÃO48SISTEMAS DE

INFORMAÇÃO4848SISTEMAS DE

INFORMAÇÃO4848SISTEMAS DE

INFORMAÇÃO48SISTEMAS DE

INFORMAÇÃO4848SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico

g(n) = (n+1)2 e f (n) = n2

Alguém domina alguém? Será somente isso? Não há como f(n) dominar

g(n)? ???

(n+1)2

n2

Page 49: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

4949SISTEMAS DE

INFORMAÇÃO4949SISTEMAS DE

INFORMAÇÃO4949SISTEMAS DE

INFORMAÇÃO49SISTEMAS DE

INFORMAÇÃO4949SISTEMAS DE

INFORMAÇÃO4949SISTEMAS DE

INFORMAÇÃO49SISTEMAS DE

INFORMAÇÃO49SISTEMAS DE

INFORMAÇÃO4949 49SISTEMAS DE

INFORMAÇÃO4949SISTEMAS DE

INFORMAÇÃO49SISTEMAS DE

INFORMAÇÃO4949SISTEMAS DE

INFORMAÇÃO4949SISTEMAS DE

INFORMAÇÃO49SISTEMAS DE

INFORMAÇÃO4949SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico

g(n) = (n+1)2 e f (n) = n2

Alguém domina alguém? Não há como f(n) dominar g(n)?

Lembre que a definição envolve também uma constante. Suponha que queremos g(n) ≤ cf(n) Então ∣(n+1)2∣ ≤ ∣cn2∣

Mas, para isso, basta que ∣(n+1)2∣ ≤ ∣(√c n)2∣, ou ∣n+1∣ ≤ ∣√c n∣

Se √c = 2, ou seja, c=4, isso é verdade

(n+1)2

n2

Page 50: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5050SISTEMAS DE

INFORMAÇÃO5050SISTEMAS DE

INFORMAÇÃO5050SISTEMAS DE

INFORMAÇÃO50SISTEMAS DE

INFORMAÇÃO5050SISTEMAS DE

INFORMAÇÃO5050SISTEMAS DE

INFORMAÇÃO50SISTEMAS DE

INFORMAÇÃO50SISTEMAS DE

INFORMAÇÃO5050 50SISTEMAS DE

INFORMAÇÃO5050SISTEMAS DE

INFORMAÇÃO50SISTEMAS DE

INFORMAÇÃO5050SISTEMAS DE

INFORMAÇÃO5050SISTEMAS DE

INFORMAÇÃO50SISTEMAS DE

INFORMAÇÃO5050SISTEMAS DE

INFORMAÇÃO

Relacionamento Assintótico

g(n) = (n+1)2 e f (n) = n2

Alguém domina alguém? |(n+1)2 |≤ ∣4n2∣, para n ≥ 1 f(n) domina g(n), para n ≥ 1

Nesse caso, dizemos que f(n) e g(n) dominam assintoticamente uma a outra.

(n+1)2

4n2

Page 51: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5151SISTEMAS DE

INFORMAÇÃO5151SISTEMAS DE

INFORMAÇÃO5151SISTEMAS DE

INFORMAÇÃO51SISTEMAS DE

INFORMAÇÃO5151SISTEMAS DE

INFORMAÇÃO5151SISTEMAS DE

INFORMAÇÃO51SISTEMAS DE

INFORMAÇÃO51SISTEMAS DE

INFORMAÇÃO5151 51SISTEMAS DE

INFORMAÇÃO5151SISTEMAS DE

INFORMAÇÃO51SISTEMAS DE

INFORMAÇÃO5151SISTEMAS DE

INFORMAÇÃO5151SISTEMAS DE

INFORMAÇÃO51SISTEMAS DE

INFORMAÇÃO5151SISTEMAS DE

INFORMAÇÃO

Notação O

Knuth(1971) * criou a notação O (lê-se "O grande") para expressar que g(n) domina assintoticamente f(n) Escreve-se f(n) = O(g(n)) e lê-se: "f(n) é da ordem no máximo

g(n)".

Para que serve isto para o Bacharel em Sistemas de Informação?

*Knuth, D.E. (1971) "Mathematical Analysis of Algorithms". Proceedings IFIP Congress 71, vol. 1, North Holland, Amsterdam, Holanda, 135-143.

Page 52: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5252SISTEMAS DE

INFORMAÇÃO5252SISTEMAS DE

INFORMAÇÃO5252SISTEMAS DE

INFORMAÇÃO52SISTEMAS DE

INFORMAÇÃO5252SISTEMAS DE

INFORMAÇÃO5252SISTEMAS DE

INFORMAÇÃO52SISTEMAS DE

INFORMAÇÃO52SISTEMAS DE

INFORMAÇÃO5252 52SISTEMAS DE

INFORMAÇÃO5252SISTEMAS DE

INFORMAÇÃO52SISTEMAS DE

INFORMAÇÃO5252SISTEMAS DE

INFORMAÇÃO5252SISTEMAS DE

INFORMAÇÃO52SISTEMAS DE

INFORMAÇÃO5252SISTEMAS DE

INFORMAÇÃO

Notação O Knuth(1971) * criou a notação O (lê-se "O grande") para

expressar que g(n) domina assintoticamente f(n) Escreve-se f(n) = O(g(n)) e lê-se: "f(n) é da ordem no máximo

g(n)".

Para que serve isto ? Muitas vezes calcular a função de complexidade g(n) de um

algoritmo A é complicado. É mais fácil determinar que f (n) é O(g(n)), isto é, que

assintoticamente f(n) cresce no máximo como g(n).

*Knuth, D.E. (1971) "Mathematical Analysis of Algorithms". Proceedings IFIP Congress 71, vol. 1, North Holland, Amsterdam, Holanda, 135-143.

Page 53: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5353SISTEMAS DE

INFORMAÇÃO5353SISTEMAS DE

INFORMAÇÃO5353SISTEMAS DE

INFORMAÇÃO53SISTEMAS DE

INFORMAÇÃO5353SISTEMAS DE

INFORMAÇÃO5353SISTEMAS DE

INFORMAÇÃO53SISTEMAS DE

INFORMAÇÃO53SISTEMAS DE

INFORMAÇÃO5353 53SISTEMAS DE

INFORMAÇÃO5353SISTEMAS DE

INFORMAÇÃO53SISTEMAS DE

INFORMAÇÃO5353SISTEMAS DE

INFORMAÇÃO5353SISTEMAS DE

INFORMAÇÃO53SISTEMAS DE

INFORMAÇÃO5353SISTEMAS DE

INFORMAÇÃO

Notação O Definição:

O(g(n)) = {f(n): existem constantes positivas c e n0 tais que 0 ≤ f(n) ≤ cg(n), para todo n ≥ n0}

Informalmente, dizemos que, se f(n) ∈ O(g(n)), então f(n) cresce no máximo tão rapidamente quanto g(n).

n0

Page 54: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5454SISTEMAS DE

INFORMAÇÃO5454SISTEMAS DE

INFORMAÇÃO5454SISTEMAS DE

INFORMAÇÃO54SISTEMAS DE

INFORMAÇÃO5454SISTEMAS DE

INFORMAÇÃO5454SISTEMAS DE

INFORMAÇÃO54SISTEMAS DE

INFORMAÇÃO54SISTEMAS DE

INFORMAÇÃO5454 54SISTEMAS DE

INFORMAÇÃO5454SISTEMAS DE

INFORMAÇÃO54SISTEMAS DE

INFORMAÇÃO5454SISTEMAS DE

INFORMAÇÃO5454SISTEMAS DE

INFORMAÇÃO54SISTEMAS DE

INFORMAÇÃO5454SISTEMAS DE

INFORMAÇÃO

Notação O

Definição: O(g(n)) = {f(n): existem constantes positivas c e n0 tais

que 0 ≤ f(n) ≤ cg(n), para todo n ≥ n0}

?

???

32

n2−2 n∈O(n2)

Page 55: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5555SISTEMAS DE

INFORMAÇÃO5555SISTEMAS DE

INFORMAÇÃO5555SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO5555SISTEMAS DE

INFORMAÇÃO5555SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO5555 55SISTEMAS DE

INFORMAÇÃO5555SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO5555SISTEMAS DE

INFORMAÇÃO5555SISTEMAS DE

INFORMAÇÃO55SISTEMAS DE

INFORMAÇÃO5555SISTEMAS DE

INFORMAÇÃO

Notação O

Definição: O(g(n)) = {f(n): existem constantes positivas c e n0 tais que

0 ≤ f(n) ≤ cg(n), para todo n ≥ n0}

?

Fazendo c = 3/2, teremos , para n0 ≥ 2

Outras constantes podem existir, mas o que importa é que existe alguma escolha para as constantes

32

n2−2 n∈O(n2)

32

n2−2n≤32

n2

Page 56: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5656SISTEMAS DE

INFORMAÇÃO5656SISTEMAS DE

INFORMAÇÃO5656SISTEMAS DE

INFORMAÇÃO56SISTEMAS DE

INFORMAÇÃO5656SISTEMAS DE

INFORMAÇÃO5656SISTEMAS DE

INFORMAÇÃO56SISTEMAS DE

INFORMAÇÃO56SISTEMAS DE

INFORMAÇÃO5656 56SISTEMAS DE

INFORMAÇÃO5656SISTEMAS DE

INFORMAÇÃO56SISTEMAS DE

INFORMAÇÃO5656SISTEMAS DE

INFORMAÇÃO5656SISTEMAS DE

INFORMAÇÃO56SISTEMAS DE

INFORMAÇÃO5656SISTEMAS DE

INFORMAÇÃO

Notação O

Usamos a notação O para dar um limite superior sobre uma função, dentro de um fator constante.

n0

Page 57: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5757SISTEMAS DE

INFORMAÇÃO5757SISTEMAS DE

INFORMAÇÃO5757SISTEMAS DE

INFORMAÇÃO57SISTEMAS DE

INFORMAÇÃO5757SISTEMAS DE

INFORMAÇÃO5757SISTEMAS DE

INFORMAÇÃO57SISTEMAS DE

INFORMAÇÃO57SISTEMAS DE

INFORMAÇÃO5757 57SISTEMAS DE

INFORMAÇÃO5757SISTEMAS DE

INFORMAÇÃO57SISTEMAS DE

INFORMAÇÃO5757SISTEMAS DE

INFORMAÇÃO5757SISTEMAS DE

INFORMAÇÃO57SISTEMAS DE

INFORMAÇÃO5757SISTEMAS DE

INFORMAÇÃO

Notação O Com a notação O podemos descrever frequentemente o

tempo de execução de um algoritmo apenas inspecionando a estrutura global do algoritmo. Exemplo:

estrutura de laço duplamente aninhado no algoritmo insertion-sort (visto anteriormente) produz um limite superior O(n2) no pior caso:

custo do laço interno é limitado na parte superior por O(1) (constante) índices i e j são no máximo n laço interno é executado no máximo uma vez para cada um dos n2 pares de

valores correspondentes a i e j

Page 58: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5858SISTEMAS DE

INFORMAÇÃO5858SISTEMAS DE

INFORMAÇÃO5858SISTEMAS DE

INFORMAÇÃO58SISTEMAS DE

INFORMAÇÃO5858SISTEMAS DE

INFORMAÇÃO5858SISTEMAS DE

INFORMAÇÃO58SISTEMAS DE

INFORMAÇÃO58SISTEMAS DE

INFORMAÇÃO5858 58SISTEMAS DE

INFORMAÇÃO5858SISTEMAS DE

INFORMAÇÃO58SISTEMAS DE

INFORMAÇÃO5858SISTEMAS DE

INFORMAÇÃO5858SISTEMAS DE

INFORMAÇÃO58SISTEMAS DE

INFORMAÇÃO5858SISTEMAS DE

INFORMAÇÃO

Notação O – o pior caso

Como a notação O dá um limite superior, quando empregado ao pior caso...

Page 59: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

5959SISTEMAS DE

INFORMAÇÃO5959SISTEMAS DE

INFORMAÇÃO5959SISTEMAS DE

INFORMAÇÃO59SISTEMAS DE

INFORMAÇÃO5959SISTEMAS DE

INFORMAÇÃO5959SISTEMAS DE

INFORMAÇÃO59SISTEMAS DE

INFORMAÇÃO59SISTEMAS DE

INFORMAÇÃO5959 59SISTEMAS DE

INFORMAÇÃO5959SISTEMAS DE

INFORMAÇÃO59SISTEMAS DE

INFORMAÇÃO5959SISTEMAS DE

INFORMAÇÃO5959SISTEMAS DE

INFORMAÇÃO59SISTEMAS DE

INFORMAÇÃO5959SISTEMAS DE

INFORMAÇÃO

Notação O – o pior caso

Como a notação O dá um limite superior, quando empregado ao pior caso... indica que esse limite vale para qualquer instância

daquele algoritmo.

Page 60: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6060SISTEMAS DE

INFORMAÇÃO6060SISTEMAS DE

INFORMAÇÃO6060SISTEMAS DE

INFORMAÇÃO60SISTEMAS DE

INFORMAÇÃO6060SISTEMAS DE

INFORMAÇÃO6060SISTEMAS DE

INFORMAÇÃO60SISTEMAS DE

INFORMAÇÃO60SISTEMAS DE

INFORMAÇÃO6060 60SISTEMAS DE

INFORMAÇÃO6060SISTEMAS DE

INFORMAÇÃO60SISTEMAS DE

INFORMAÇÃO6060SISTEMAS DE

INFORMAÇÃO6060SISTEMAS DE

INFORMAÇÃO60SISTEMAS DE

INFORMAÇÃO6060SISTEMAS DE

INFORMAÇÃO

Notação O – o pior caso

Como a notação O dá um limite superior, quando empregado ao pior caso... indica que esse limite vale para qualquer instância

daquele algoritmo.

Assim, o limite O(n2) do pior caso do insertion sort também se aplica a qualquer entrada

Veremos que o mesmo não é verdadeiro para a notação

Page 61: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6161SISTEMAS DE

INFORMAÇÃO6161SISTEMAS DE

INFORMAÇÃO6161SISTEMAS DE

INFORMAÇÃO61SISTEMAS DE

INFORMAÇÃO6161SISTEMAS DE

INFORMAÇÃO6161SISTEMAS DE

INFORMAÇÃO61SISTEMAS DE

INFORMAÇÃO61SISTEMAS DE

INFORMAÇÃO6161 61SISTEMAS DE

INFORMAÇÃO6161SISTEMAS DE

INFORMAÇÃO61SISTEMAS DE

INFORMAÇÃO6161SISTEMAS DE

INFORMAÇÃO6161SISTEMAS DE

INFORMAÇÃO61SISTEMAS DE

INFORMAÇÃO6161SISTEMAS DE

INFORMAÇÃO

Operações com a notação O

Page 62: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6262SISTEMAS DE

INFORMAÇÃO6262SISTEMAS DE

INFORMAÇÃO6262SISTEMAS DE

INFORMAÇÃO62SISTEMAS DE

INFORMAÇÃO6262SISTEMAS DE

INFORMAÇÃO6262SISTEMAS DE

INFORMAÇÃO62SISTEMAS DE

INFORMAÇÃO62SISTEMAS DE

INFORMAÇÃO6262 62SISTEMAS DE

INFORMAÇÃO6262SISTEMAS DE

INFORMAÇÃO62SISTEMAS DE

INFORMAÇÃO6262SISTEMAS DE

INFORMAÇÃO6262SISTEMAS DE

INFORMAÇÃO62SISTEMAS DE

INFORMAÇÃO6262SISTEMAS DE

INFORMAÇÃO

Operações com a notação O

A regra O(f(n)) + O(g(n)) = O(max(f(n),g(n))) pode ser usada para calcular o tempo de execução de uma sequência de trechos de um programa Suponha 3 trechos: O(n), O(n2) e O(nlogn) Qual o tempo de execução do algoritmo como um todo?

???

Page 63: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6363SISTEMAS DE

INFORMAÇÃO6363SISTEMAS DE

INFORMAÇÃO6363SISTEMAS DE

INFORMAÇÃO63SISTEMAS DE

INFORMAÇÃO6363SISTEMAS DE

INFORMAÇÃO6363SISTEMAS DE

INFORMAÇÃO63SISTEMAS DE

INFORMAÇÃO63SISTEMAS DE

INFORMAÇÃO6363 63SISTEMAS DE

INFORMAÇÃO6363SISTEMAS DE

INFORMAÇÃO63SISTEMAS DE

INFORMAÇÃO6363SISTEMAS DE

INFORMAÇÃO6363SISTEMAS DE

INFORMAÇÃO63SISTEMAS DE

INFORMAÇÃO6363SISTEMAS DE

INFORMAÇÃO

Operações com a notação O

A regra O(f(n)) + O(g(n)) = O(max(f(n),g(n))) pode ser usada para calcular o tempo de execução de uma sequência de trechos de um programa Suponha 3 trechos: O(n), O(n2) e O(nlogn) Qual o tempo de execução do algoritmo como um todo?

Lembre-se que o tempo de execução é a soma dos tempos de cada trecho

O(n) + O(n2) + O(nlogn) = max(O(n), O(n2), O(nlogn)) = O(n2)

Page 64: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6464SISTEMAS DE

INFORMAÇÃO6464SISTEMAS DE

INFORMAÇÃO6464SISTEMAS DE

INFORMAÇÃO64SISTEMAS DE

INFORMAÇÃO6464SISTEMAS DE

INFORMAÇÃO6464SISTEMAS DE

INFORMAÇÃO64SISTEMAS DE

INFORMAÇÃO64SISTEMAS DE

INFORMAÇÃO6464 64SISTEMAS DE

INFORMAÇÃO6464SISTEMAS DE

INFORMAÇÃO64SISTEMAS DE

INFORMAÇÃO6464SISTEMAS DE

INFORMAÇÃO6464SISTEMAS DE

INFORMAÇÃO64SISTEMAS DE

INFORMAÇÃO6464SISTEMAS DE

INFORMAÇÃO

Notação

Definição: (g(n)) = {f(n): existem constantes positivas c e n0 tais

que 0 ≤ cg(n) ≤ f(n), para todo n ≥ n0}

Informalmente, dizemos que, se f(n) ∈ (g(n)), então f(n) cresce no mínimo tão lentamente quanto g(n). Note que se f(n) ∈ O(g(n))

define um limite superiorpara f(n), (g(n)) defineum limite inferior

Page 65: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6565SISTEMAS DE

INFORMAÇÃO6565SISTEMAS DE

INFORMAÇÃO6565SISTEMAS DE

INFORMAÇÃO65SISTEMAS DE

INFORMAÇÃO6565SISTEMAS DE

INFORMAÇÃO6565SISTEMAS DE

INFORMAÇÃO65SISTEMAS DE

INFORMAÇÃO65SISTEMAS DE

INFORMAÇÃO6565 65SISTEMAS DE

INFORMAÇÃO6565SISTEMAS DE

INFORMAÇÃO65SISTEMAS DE

INFORMAÇÃO6565SISTEMAS DE

INFORMAÇÃO6565SISTEMAS DE

INFORMAÇÃO65SISTEMAS DE

INFORMAÇÃO6565SISTEMAS DE

INFORMAÇÃO

Notação

Definição: (g(n)) = {f(n): existem constantes positivas c e n0 tais

que 0 ≤ cg(n) ≤ f(n), para todo n ≥ n0}

?

???

32

n2−2 n∈Ω( n2 )

Page 66: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6666SISTEMAS DE

INFORMAÇÃO6666SISTEMAS DE

INFORMAÇÃO6666SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO6666SISTEMAS DE

INFORMAÇÃO6666SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO6666 66SISTEMAS DE

INFORMAÇÃO6666SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO6666SISTEMAS DE

INFORMAÇÃO6666SISTEMAS DE

INFORMAÇÃO66SISTEMAS DE

INFORMAÇÃO6666SISTEMAS DE

INFORMAÇÃO

Notação

Definição: (g(n)) = {f(n): existem constantes positivas c e n0 tais que

0 ≤ cg(n) ≤ f(n), para todo n ≥ n0}

?

Fazendo c = 1/2, teremos , para n0 ≥ 232

n2−2 n≥12

n2

32

n2−2 n∈Ω( n2 )

Page 67: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6767SISTEMAS DE

INFORMAÇÃO6767SISTEMAS DE

INFORMAÇÃO6767SISTEMAS DE

INFORMAÇÃO67SISTEMAS DE

INFORMAÇÃO6767SISTEMAS DE

INFORMAÇÃO6767SISTEMAS DE

INFORMAÇÃO67SISTEMAS DE

INFORMAÇÃO67SISTEMAS DE

INFORMAÇÃO6767 67SISTEMAS DE

INFORMAÇÃO6767SISTEMAS DE

INFORMAÇÃO67SISTEMAS DE

INFORMAÇÃO6767SISTEMAS DE

INFORMAÇÃO6767SISTEMAS DE

INFORMAÇÃO67SISTEMAS DE

INFORMAÇÃO6767SISTEMAS DE

INFORMAÇÃO

Notação O e

3/2 n2 – 2n3/2 n2

1/2 n2

Page 68: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6868SISTEMAS DE

INFORMAÇÃO6868SISTEMAS DE

INFORMAÇÃO6868SISTEMAS DE

INFORMAÇÃO68SISTEMAS DE

INFORMAÇÃO6868SISTEMAS DE

INFORMAÇÃO6868SISTEMAS DE

INFORMAÇÃO68SISTEMAS DE

INFORMAÇÃO68SISTEMAS DE

INFORMAÇÃO6868 68SISTEMAS DE

INFORMAÇÃO6868SISTEMAS DE

INFORMAÇÃO68SISTEMAS DE

INFORMAÇÃO6868SISTEMAS DE

INFORMAÇÃO6868SISTEMAS DE

INFORMAÇÃO68SISTEMAS DE

INFORMAÇÃO6868SISTEMAS DE

INFORMAÇÃO

Notação Definição:

(g(n)) = {f(n): existem constantes positivas c1, c2 e n0 tais que 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n), para todo n ≥ n0}

Informalmente, dizemos que, se f(n) ∈ (g(n)), então f(n) cresce tão rapidamente quanto g(n).

Page 69: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

6969SISTEMAS DE

INFORMAÇÃO6969SISTEMAS DE

INFORMAÇÃO6969SISTEMAS DE

INFORMAÇÃO69SISTEMAS DE

INFORMAÇÃO6969SISTEMAS DE

INFORMAÇÃO6969SISTEMAS DE

INFORMAÇÃO69SISTEMAS DE

INFORMAÇÃO69SISTEMAS DE

INFORMAÇÃO6969 69SISTEMAS DE

INFORMAÇÃO6969SISTEMAS DE

INFORMAÇÃO69SISTEMAS DE

INFORMAÇÃO6969SISTEMAS DE

INFORMAÇÃO6969SISTEMAS DE

INFORMAÇÃO69SISTEMAS DE

INFORMAÇÃO6969SISTEMAS DE

INFORMAÇÃO

Notação

Definição: (g(n)) = {f(n): existem constantes positivas c1, c2 e n0 tais que

0 ≤ c1g(n) ≤ f(n) ≤ c2g(n), para todo n ≥ n0}

?

???

32

n2−2n∈Θ(n2)

Page 70: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7070SISTEMAS DE

INFORMAÇÃO7070SISTEMAS DE

INFORMAÇÃO7070SISTEMAS DE

INFORMAÇÃO70SISTEMAS DE

INFORMAÇÃO7070SISTEMAS DE

INFORMAÇÃO7070SISTEMAS DE

INFORMAÇÃO70SISTEMAS DE

INFORMAÇÃO70SISTEMAS DE

INFORMAÇÃO7070 70SISTEMAS DE

INFORMAÇÃO7070SISTEMAS DE

INFORMAÇÃO70SISTEMAS DE

INFORMAÇÃO7070SISTEMAS DE

INFORMAÇÃO7070SISTEMAS DE

INFORMAÇÃO70SISTEMAS DE

INFORMAÇÃO7070SISTEMAS DE

INFORMAÇÃO

Notação

Definição: (g(n)) = {f(n): existem constantes positivas c1, c2 e n0 tais

que 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n), para todo n ≥ n0}

?

Fazendo c1 = 1/2 e c2 = 3/2 teremos

para n0 ≥ 2

32

n2−2 n∈Θ(n2)

|12

n2|≤|32

n2−2n|≤|32

n2|

Page 71: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7171SISTEMAS DE

INFORMAÇÃO7171SISTEMAS DE

INFORMAÇÃO7171SISTEMAS DE

INFORMAÇÃO71SISTEMAS DE

INFORMAÇÃO7171SISTEMAS DE

INFORMAÇÃO7171SISTEMAS DE

INFORMAÇÃO71SISTEMAS DE

INFORMAÇÃO71SISTEMAS DE

INFORMAÇÃO7171 71SISTEMAS DE

INFORMAÇÃO7171SISTEMAS DE

INFORMAÇÃO71SISTEMAS DE

INFORMAÇÃO7171SISTEMAS DE

INFORMAÇÃO7171SISTEMAS DE

INFORMAÇÃO71SISTEMAS DE

INFORMAÇÃO7171SISTEMAS DE

INFORMAÇÃO

Notação

Mas, já vimos que: →

→ e ...

Será coincidência? ???

32

n2−2n∈O(n2) |32

n2−2 n|≤|32

n2|

|12

n2|≤|32

n2−2n|32

n2−2 n∈Ω( n2 )

32

n2−2n∈Θ(n2) |12

n2|≤|32

n2−2n|≤|32

n2|

Page 72: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7272SISTEMAS DE

INFORMAÇÃO7272SISTEMAS DE

INFORMAÇÃO7272SISTEMAS DE

INFORMAÇÃO72SISTEMAS DE

INFORMAÇÃO7272SISTEMAS DE

INFORMAÇÃO7272SISTEMAS DE

INFORMAÇÃO72SISTEMAS DE

INFORMAÇÃO72SISTEMAS DE

INFORMAÇÃO7272 72SISTEMAS DE

INFORMAÇÃO7272SISTEMAS DE

INFORMAÇÃO72SISTEMAS DE

INFORMAÇÃO7272SISTEMAS DE

INFORMAÇÃO7272SISTEMAS DE

INFORMAÇÃO72SISTEMAS DE

INFORMAÇÃO7272SISTEMAS DE

INFORMAÇÃO

Notação

Mas, já vimos que: →

→ e ...

Será coincidência? Não! Se f(n) ∈ O(g(n)) e f(n) ∈ (g(n)), então f(n) ∈ g(n))

32

n2−2n∈O(n2) |32

n2−2 n|≤|32

n2|

|12

n2|≤|32

n2−2n|32

n2−2 n∈Ω( n2 )

32

n2−2n∈Θ(n2) |12

n2|≤|32

n2−2n|≤|32

n2|

Page 73: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7373SISTEMAS DE

INFORMAÇÃO7373SISTEMAS DE

INFORMAÇÃO7373SISTEMAS DE

INFORMAÇÃO73SISTEMAS DE

INFORMAÇÃO7373SISTEMAS DE

INFORMAÇÃO7373SISTEMAS DE

INFORMAÇÃO73SISTEMAS DE

INFORMAÇÃO73SISTEMAS DE

INFORMAÇÃO7373 73SISTEMAS DE

INFORMAÇÃO7373SISTEMAS DE

INFORMAÇÃO73SISTEMAS DE

INFORMAÇÃO7373SISTEMAS DE

INFORMAÇÃO7373SISTEMAS DE

INFORMAÇÃO73SISTEMAS DE

INFORMAÇÃO7373SISTEMAS DE

INFORMAÇÃO

Notação

Mas: Será coincidência?

Não! Se f(n) ∈ O(g(n)) e

f(n) ∈ (g(n)), então f(n) ∈ g(n))

Page 74: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7474SISTEMAS DE

INFORMAÇÃO7474SISTEMAS DE

INFORMAÇÃO7474SISTEMAS DE

INFORMAÇÃO74SISTEMAS DE

INFORMAÇÃO7474SISTEMAS DE

INFORMAÇÃO7474SISTEMAS DE

INFORMAÇÃO74SISTEMAS DE

INFORMAÇÃO74SISTEMAS DE

INFORMAÇÃO7474 74SISTEMAS DE

INFORMAÇÃO7474SISTEMAS DE

INFORMAÇÃO74SISTEMAS DE

INFORMAÇÃO7474SISTEMAS DE

INFORMAÇÃO7474SISTEMAS DE

INFORMAÇÃO74SISTEMAS DE

INFORMAÇÃO7474SISTEMAS DE

INFORMAÇÃO

Notação – pior caso

O tempo limite de (n2) para o pior caso do insertion sort

Não implica um tempo (n2) para qualquer entrada

Por exemplo, se pegarmos o melhor caso, vemos que ele tem (n)

Page 75: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7575SISTEMAS DE

INFORMAÇÃO7575SISTEMAS DE

INFORMAÇÃO7575SISTEMAS DE

INFORMAÇÃO75SISTEMAS DE

INFORMAÇÃO7575SISTEMAS DE

INFORMAÇÃO7575SISTEMAS DE

INFORMAÇÃO75SISTEMAS DE

INFORMAÇÃO75SISTEMAS DE

INFORMAÇÃO7575 75SISTEMAS DE

INFORMAÇÃO7575SISTEMAS DE

INFORMAÇÃO75SISTEMAS DE

INFORMAÇÃO7575SISTEMAS DE

INFORMAÇÃO7575SISTEMAS DE

INFORMAÇÃO75SISTEMAS DE

INFORMAÇÃO7575SISTEMAS DE

INFORMAÇÃO

Notação o

Definição: o(g(n)) = {f(n): para toda constante positiva c, existe uma

constante n0 > 0 tal que 0 ≤ f(n) < cg(n), para todo n ≥ n0}

Informalmente, dizemos que, se f(n) ∈ o(g(n)), então f(n) cresce mais lentamente que g(n). Intuitivamente, na notação o, a função f(n) tem crescimento

muito menor que g(n) quando n tende para o infinito

Page 76: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7676SISTEMAS DE

INFORMAÇÃO7676SISTEMAS DE

INFORMAÇÃO7676SISTEMAS DE

INFORMAÇÃO76SISTEMAS DE

INFORMAÇÃO7676SISTEMAS DE

INFORMAÇÃO7676SISTEMAS DE

INFORMAÇÃO76SISTEMAS DE

INFORMAÇÃO76SISTEMAS DE

INFORMAÇÃO7676 76SISTEMAS DE

INFORMAÇÃO7676SISTEMAS DE

INFORMAÇÃO76SISTEMAS DE

INFORMAÇÃO7676SISTEMAS DE

INFORMAÇÃO7676SISTEMAS DE

INFORMAÇÃO76SISTEMAS DE

INFORMAÇÃO7676SISTEMAS DE

INFORMAÇÃO

Notação o

? ???

1000 n2∈o (n3

)

Page 77: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7777SISTEMAS DE

INFORMAÇÃO7777SISTEMAS DE

INFORMAÇÃO7777SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO7777SISTEMAS DE

INFORMAÇÃO7777SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO7777 77SISTEMAS DE

INFORMAÇÃO7777SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO7777SISTEMAS DE

INFORMAÇÃO7777SISTEMAS DE

INFORMAÇÃO77SISTEMAS DE

INFORMAÇÃO7777SISTEMAS DE

INFORMAÇÃO

Notação o

? Para todo valor de c, um n0 que satisfaz a definição é:

1000 n2∈o (n3

)

n0=|1000

c|+1

Page 78: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7878SISTEMAS DE

INFORMAÇÃO7878SISTEMAS DE

INFORMAÇÃO7878SISTEMAS DE

INFORMAÇÃO78SISTEMAS DE

INFORMAÇÃO7878SISTEMAS DE

INFORMAÇÃO7878SISTEMAS DE

INFORMAÇÃO78SISTEMAS DE

INFORMAÇÃO78SISTEMAS DE

INFORMAÇÃO7878 78SISTEMAS DE

INFORMAÇÃO7878SISTEMAS DE

INFORMAÇÃO78SISTEMAS DE

INFORMAÇÃO7878SISTEMAS DE

INFORMAÇÃO7878SISTEMAS DE

INFORMAÇÃO78SISTEMAS DE

INFORMAÇÃO7878SISTEMAS DE

INFORMAÇÃO

Notação o

Qual a diferença entre O e o? O: existem constantes positivas c e n0 tais que

0 ≤ f(n) ≤ cg(n), para todo n ≥ n0

A expressão 0 ≤ f(n) ≤ cg(n) é válida para alguma constante c>0

o: para toda constante positiva c, existe uma constante n0 > 0 tal que 0 ≤ f(n) < cg(n), para todo n ≥ n0

A expressão 0 ≤ f(n) < cg(n) é válida para toda constante c>0

Page 79: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

7979SISTEMAS DE

INFORMAÇÃO7979SISTEMAS DE

INFORMAÇÃO7979SISTEMAS DE

INFORMAÇÃO79SISTEMAS DE

INFORMAÇÃO7979SISTEMAS DE

INFORMAÇÃO7979SISTEMAS DE

INFORMAÇÃO79SISTEMAS DE

INFORMAÇÃO79SISTEMAS DE

INFORMAÇÃO7979 79SISTEMAS DE

INFORMAÇÃO7979SISTEMAS DE

INFORMAÇÃO79SISTEMAS DE

INFORMAÇÃO7979SISTEMAS DE

INFORMAÇÃO7979SISTEMAS DE

INFORMAÇÃO79SISTEMAS DE

INFORMAÇÃO7979SISTEMAS DE

INFORMAÇÃO

Notação

Definição: (g(n)) = {f(n): para toda constante positiva c, existe

uma constante n0 > 0 tal que 0 ≤ cg(n) < f(n), para todon ≥ n0 }

Informalmente, dizemos que, se f(n) ∈ (g(n)), então f(n) cresce mais rapidamente que g(n). Intuitivamente, na notação , a função f(n) tem

crescimento muito maior que g(n) quando n tende para o infinito

Page 80: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

8080SISTEMAS DE

INFORMAÇÃO8080SISTEMAS DE

INFORMAÇÃO8080SISTEMAS DE

INFORMAÇÃO80SISTEMAS DE

INFORMAÇÃO8080SISTEMAS DE

INFORMAÇÃO8080SISTEMAS DE

INFORMAÇÃO80SISTEMAS DE

INFORMAÇÃO80SISTEMAS DE

INFORMAÇÃO8080 80SISTEMAS DE

INFORMAÇÃO8080SISTEMAS DE

INFORMAÇÃO80SISTEMAS DE

INFORMAÇÃO8080SISTEMAS DE

INFORMAÇÃO8080SISTEMAS DE

INFORMAÇÃO80SISTEMAS DE

INFORMAÇÃO8080SISTEMAS DE

INFORMAÇÃO

Notação

está para , da mesma forma que o está para O O e são chamados de assintoticamente firmes

?

???

|1

1000n2|∈ω( n)

Page 81: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

8181SISTEMAS DE

INFORMAÇÃO8181SISTEMAS DE

INFORMAÇÃO8181SISTEMAS DE

INFORMAÇÃO81SISTEMAS DE

INFORMAÇÃO8181SISTEMAS DE

INFORMAÇÃO8181SISTEMAS DE

INFORMAÇÃO81SISTEMAS DE

INFORMAÇÃO81SISTEMAS DE

INFORMAÇÃO8181 81SISTEMAS DE

INFORMAÇÃO8181SISTEMAS DE

INFORMAÇÃO81SISTEMAS DE

INFORMAÇÃO8181SISTEMAS DE

INFORMAÇÃO8181SISTEMAS DE

INFORMAÇÃO81SISTEMAS DE

INFORMAÇÃO8181SISTEMAS DE

INFORMAÇÃO

Notação

está para , da mesma forma que o está para O O e são chamados de assintoticamente firmes

?

Para todo valor de c, um n0 que satisfaz a definição é:

|1

1000n2|∈ω( n)

n0=|1000 c|+1

Page 82: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

8282SISTEMAS DE

INFORMAÇÃO8282SISTEMAS DE

INFORMAÇÃO8282SISTEMAS DE

INFORMAÇÃO82SISTEMAS DE

INFORMAÇÃO8282SISTEMAS DE

INFORMAÇÃO8282SISTEMAS DE

INFORMAÇÃO82SISTEMAS DE

INFORMAÇÃO82SISTEMAS DE

INFORMAÇÃO8282 82SISTEMAS DE

INFORMAÇÃO8282SISTEMAS DE

INFORMAÇÃO82SISTEMAS DE

INFORMAÇÃO8282SISTEMAS DE

INFORMAÇÃO8282SISTEMAS DE

INFORMAÇÃO82SISTEMAS DE

INFORMAÇÃO8282SISTEMAS DE

INFORMAÇÃO

Propriedades das Classes

Page 83: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

8383SISTEMAS DE

INFORMAÇÃO8383SISTEMAS DE

INFORMAÇÃO8383SISTEMAS DE

INFORMAÇÃO83SISTEMAS DE

INFORMAÇÃO8383SISTEMAS DE

INFORMAÇÃO8383SISTEMAS DE

INFORMAÇÃO83SISTEMAS DE

INFORMAÇÃO83SISTEMAS DE

INFORMAÇÃO8383 83SISTEMAS DE

INFORMAÇÃO8383SISTEMAS DE

INFORMAÇÃO83SISTEMAS DE

INFORMAÇÃO8383SISTEMAS DE

INFORMAÇÃO8383SISTEMAS DE

INFORMAÇÃO83SISTEMAS DE

INFORMAÇÃO8383SISTEMAS DE

INFORMAÇÃO

Propriedades das Classes

Page 84: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

8484SISTEMAS DE

INFORMAÇÃO8484SISTEMAS DE

INFORMAÇÃO8484SISTEMAS DE

INFORMAÇÃO84SISTEMAS DE

INFORMAÇÃO8484SISTEMAS DE

INFORMAÇÃO8484SISTEMAS DE

INFORMAÇÃO84SISTEMAS DE

INFORMAÇÃO84SISTEMAS DE

INFORMAÇÃO8484 84SISTEMAS DE

INFORMAÇÃO8484SISTEMAS DE

INFORMAÇÃO84SISTEMAS DE

INFORMAÇÃO8484SISTEMAS DE

INFORMAÇÃO8484SISTEMAS DE

INFORMAÇÃO84SISTEMAS DE

INFORMAÇÃO8484SISTEMAS DE

INFORMAÇÃO

Exercício

Page 85: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

8585SISTEMAS DE

INFORMAÇÃO8585SISTEMAS DE

INFORMAÇÃO8585SISTEMAS DE

INFORMAÇÃO85SISTEMAS DE

INFORMAÇÃO8585SISTEMAS DE

INFORMAÇÃO8585SISTEMAS DE

INFORMAÇÃO85SISTEMAS DE

INFORMAÇÃO85SISTEMAS DE

INFORMAÇÃO8585 85SISTEMAS DE

INFORMAÇÃO8585SISTEMAS DE

INFORMAÇÃO85SISTEMAS DE

INFORMAÇÃO8585SISTEMAS DE

INFORMAÇÃO8585SISTEMAS DE

INFORMAÇÃO85SISTEMAS DE

INFORMAÇÃO8585SISTEMAS DE

INFORMAÇÃO

Referências Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest

& Clifford Stein. Algoritmos - Tradução da 2a. Edição Americana. Editora Campus, 2002 (Capítulo 3).

Michael T. Goodrich & Roberto Tamassia. Estruturas de Dados e Algoritmos em Java. Editora Bookman, 4a. Ed. 2007 (Capítulo 4).

Nívio Ziviani. Projeto de Algoritmos com implementações em C e Pascal. Editora Thomson, 2a. Edição, 2004 (Seção 1.3).

Notas de aula dos professores Marcos Chaim, Cid de Souza, Cândida da Silva e Delano M. Beder.

Page 86: Complexidade Assintótica - USP · 2016. 8. 24. · Tempo de execução do algoritmo = soma dos tempos de execução para cada instrução T(n)=c 1n + c2(n-1) + c4(n-1) + c5 + c6

8686SISTEMAS DE

INFORMAÇÃO8686SISTEMAS DE

INFORMAÇÃO8686SISTEMAS DE

INFORMAÇÃO86SISTEMAS DE

INFORMAÇÃO8686SISTEMAS DE

INFORMAÇÃO8686SISTEMAS DE

INFORMAÇÃO86SISTEMAS DE

INFORMAÇÃO86SISTEMAS DE

INFORMAÇÃO8686 86SISTEMAS DE

INFORMAÇÃO8686SISTEMAS DE

INFORMAÇÃO86SISTEMAS DE

INFORMAÇÃO8686SISTEMAS DE

INFORMAÇÃO8686SISTEMAS DE

INFORMAÇÃO86SISTEMAS DE

INFORMAÇÃO8686SISTEMAS DE

INFORMAÇÃO

Complexidade Assintótica

Professores:

Norton T. Roman

Fátima L. S. Nunes