• Nenhum resultado encontrado

NOÇÕES DE ANÁLISE DE COMPLEXIDADE

N/A
N/A
Protected

Academic year: 2019

Share "NOÇÕES DE ANÁLISE DE COMPLEXIDADE"

Copied!
31
0
0

Texto

(1)

NOÇÕES DE ANÁLISE DE

COMPLEXIDADE

(2)

NOTAÇÃO ASSINTÓTICA

A notações que usamos para descrever o tempo de

execução assintótica de um algoritmo são definidas em

termos de funções cujos domínios são o conjunto dos

números naturais

N ={0,1,2,...}.

(3)

NOTAÇÃO ASSINTÓTICA

(4)

NOTAÇÃO

Também conhecido como limite assintótico firme.

Ao analisarmos o tempo de execução do algoritmos de ordenação por inserção, verificar-se-a que o algoritmos tem o tempo médio de execução de T(n) = (n²), o que quer dizer que no caso médio ele executa em n² onde n é o número de entradas.

(5)

NOTAÇÃO

(g(n)) = {f(n): existem constantes

positivas c

1

, c

2

e n

0

tais que 0≤c

1

g(n)

≤c

2

g(n) para todos n≥n

0

}

Uma função f(n) pertence ao conjunto

(g(n)) se existem constantes c

1

e c

2

(6)

NOTAÇÃO

A definição de

(g(n)) exige que todo membro f(n)

(g(n)) seja

positivo para um determinado n suficientemente grande.

Vamos usar a definição formal para mostrar que ½n²-3n =

(n²)

c

1

½n²-3n

c

2

n² ,

n

n

0

.

A divisão por n² produz

c

1

½- 3/n

c

2 Fazendo:

(7)

NOTAÇÃO

c

2

½- 3/n

a desigualdade é válida para

n

1

pois para qualquer

valor menor que

1, -3/n

cresce em módulo

n

.

Temos que

½

½ - 3/n

n

é verdadeiro logo podemos tomar c

2

com valor de ½

logo temos c

2

=½ .

c

1

½- 3/n

c

1

- 3/n

n

3/(½ -c

1

)

para satisfazer a

desigualdade

c

1

tomando c

1

=1/14 por exemplo temos que

(8)
(9)

NOTAÇÃO

A notação

limita assintoticamente

uma função acima e abaixo. Quando

temos um limite superior , usamos a

notação

que é um limite

assintótico superior.

Para uma dada função g(n), denotamos

(g(n))

o conjunto das funções:

(g(n))

= {f(n): existem constantes

positivas c

e n

0

tais que 0≤f(n)≤cg(n)

para todo n≥n

0

}

Para todos os valores n à direita de n0 o valor

(10)

NOTAÇÃO

Usando a notação

, podemos descrever frequentemente o tempo de

execução de um algoritmo apenas inspecionando a estrutura global

do algoritmos.

Por exemplo, a estrutura de loop duplamente aninhado do algoritmo de ordenação por inserção, produz imediatamente um limite superior

(n²)

(11)

OPERAÇÕES COM A NOTAÇÃO

f (n) = O(f (n))

c × O(f (n)) = O(f (n)) c = constante

O(f (n)) + O(f (n)) = O(f (n))

O(O(f (n)) = O(f (n))

O(f (n)) + O(g(n)) = O(max(f (n), g(n)))

O(f (n))O(g(n)) = O(f (n)g(n))

(12)

NOTAÇÃO

Da mesma maneira que a notação

fornece um limite assintótico

superior a notação

ᵗ fornece um

limite assintótico inferior.

Para uma determinada função g(n), denotamos por (g(n)) o conjunto da funções:

ᵗ(g(n)) =

{f(n): existem constantes

positivas c

e n

0

tais que 0≤cg(n)≤f(n)

(13)

NOTAÇÃO

O limite assintótico fornecido pela notação

pode se ou não

assintoticamente restrito. O lmite 2n² =

(n²) é assintoticamente restrito,

mas o limite 2n =

(n²) não o é.

(g(n))

= {f(n): para qualquer constante positiva c>0 existe uma

constante n

0

>0 tal que 0≤f(n)≤cg(n) para todo n≥n

0

}.

Por exemplo 2n=

(n²), mas 2n² ≠

(n²)

Intuitivamente na notação

, a função f(n) se torna insignificante em

relação a g(n) a medida que se aproxima do infinito.

(14)

NOTAÇÃO

Por analogia a notação

está para a notação

ᵗ assim como a notação

está para a notação

. Usamos a notação

para denotar um limite

inferior que não é assintoticamente restrito. f(n)

(g(n)) se e

somente se g(n)

(f(n))

Formalmente definimos

(g(n)) como o conjunt:

(g(n)) = {f(n): para qualquer constante positiva c > 0 existe uma

constante n

0

>0 tal que 0≤cg(n)≤f(n) para todo n≥n

0

}. Por exemplo:

(15)

RELAÇÃO ASSINTÓTICA

A seguinte hierarquia de funções pode ser definida do ponto de

vista assintótico:

(16)
(17)
(18)

CLASSES DE COMPORTAMENTO ASSINTÓTICO

f(n)=O(1) : O uso do algoritmo independe do tamanho de n. As instruções do

algoritmo são executadas um número fixo de vezes.

f(n)=O(log(n)): Ocorre tipicamente em algoritmos que resolvem um problema

transformando-o em problemas menores. Ex:Algoritmo de pesquisa binária.

f(n)=O(n): Em geral, um pequeno trabalho é realizado sobre cada elemento

de entrada.

Esta é a melhor situação possível para um algoritmo que tem que processar/produzir n elementos de entrada/saída.

(19)

CLASSES DE COMPORTAMENTO ASSINTÓTICO

f(n) = O(n log n)

-Este tempo de execução ocorre tipicamente em algoritmos que resolvem um problema quebrando-o em problemas menores, resolvendo cada um deles independentemente e depois agrupando as soluções.

-Caso típico dos algoritmos baseados no paradigma divisão-e-conquista.

(20)

CLASSES DE COMPORTAMENTO ASSINTÓTICO

f(n)=O(n²)

-Algoritmos desta ordem de complexidade ocorrem quando os itens de dados

são processados aos pares, muitas vezes em um anel dentro do outro

– Para n= 1 000, o número de operações é da ordem de 1 000 000. – Sempre que n dobra o tempo de execução é multiplicado por 4.

– Algoritmos deste tipo são úteis para resolver problemas de tamanhos Relativamente pequenos.

Exemplos:

(21)

CLASSES DE COMPORTAMENTO ASSINTÓTICO

f(n) =O(n³)

– Algoritmos desta ordem de complexidade geralmente são úteis apenas para resolver problemas relativamente pequenos.

– Para n = 100 , o número de operações é da ordem de 1 000 000 – Sempre que n dobra o tempo de execução é multiplicado por 8.

– Algoritmos deste tipo são úteis para resolver problemas de tamanhos relativamente pequenos.

Exemplo:

(22)

CLASSES DE COMPORTAMENTO ASSINTÓTICO

f(n) = O(2n)

– Algoritmos desta ordem de complexidade não são úteis sob o ponto de vista prático.

– Eles ocorrem na solução de problemas quando se usa a força bruta para resolvê-los.

– Para n = 20 , o tempo de execução é cerca de 1 000 000.

– Sempre que n dobra o tempo de execução fica elevado ao quadrado. Exemplo:

(23)

CLASSES DE COMPORTAMENTO ASSINTÓTICO

f(n) =O(n!).

– Um algoritmo de complexidade O(n!) é dito ter complexidade exponencial, apesar de O(n!) ter comportamento muito pior do que O(2n).

– Geralmente ocorrem quando se usa força bruta na solução do problema.

Considerando:

(24)

FUNÇÃO DE COMPLEXIDADE

● Usa um modelo matemático baseado em um computador idealizado.

● Deve ser especificado o conjunto de operações e seus custos de execuções.

● É mais usual ignorar o custo de algumas das operações e considerar apenas as operações mais significativas.

Por exemplo, algoritmos de ordenação:

(25)

FUNÇÃO DE COMPLEXIDADE

● Para medir o custo de execução de um algoritmo é comum definir uma função de custo ou função de complexidade f .

● f (n) é a medida do tempo necessário para executar um algoritmo para um problema de tamanho n.

● Função de complexidade de tempo: f (n) mede o tempo necessário para executar um algoritmo em um problema de tamanho n.

● Função de complexidade de espaço: f (n) mede a memória necessária para executar algoritmo em um problema de tamanho n.

● Utilizaremos f para denotar uma função de complexidade de tempo.

(26)

OPERAÇÕES RELEVANTES

Operações aritméticas

Comparações

Atribuições

Resolver um ponteiro ou referência

Indexação em um arranjo

(27)
(28)
(29)
(30)
(31)

Referências

Documentos relacionados

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

Com base nos resultados da pesquisa referente à questão sobre a internacionalização de processos de negócios habilitados pela TI com o apoio do BPM para a geração de ganhos para

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Mediante o impacto do paciente com o ambiente do centro cirúrgico, a equipe de enfermagem deve estar voltada para o aspecto humano do atendimento, centrando suas

Mestrado em: Nutrição Humana ou Nutrição Clínica ou Saúde Coletiva ou Ciências da Saúde ou Ciências ou Saúde ou Alimentos e Nutrição e Desenvolvimento na

Neste presente estudo foi aplicado um questionário sobre a aceitação de um dos seus detergentes comparado a dois concorrentes utilizando a escala ideal , além

Os autores relatam a primeira ocorrência de Lymnaea columella (Say, 1817) no Estado de Goiás, ressaltando a importância da espécie como hospedeiro intermediário de vários parasitos