13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

custo : E → R + : e ↦→ |e|.<br />

2.2. Complexida<strong>de</strong> pessimista<br />

Por exemplo custo((for, for, if, return)) = 4. As entradas <strong>de</strong>sse algoritmo são<br />

sequências <strong>de</strong> números naturais, logo, D = N ∗ e como tamanho da entrada<br />

escolhemos<br />

tam : D → N : (a1, . . . , an) ↦→ n.<br />

A função <strong>de</strong> execução atribui a sequência <strong>de</strong> operações executadas a qualquer<br />

entrada. Temos<br />

exec[Busca1](d) : D → E :<br />

<br />

(for, if)<br />

(a1, . . . , an) ↦→<br />

ireturn caso existe i = min{j | aj = 1}<br />

(for, if) nreturn caso contrário<br />

Com essas <strong>de</strong>finições temos também a função <strong>de</strong> <strong>de</strong>sempenho<br />

<strong>de</strong>semp[Busca1](n) = custo ◦ exec[Busca1] :<br />

<br />

(a1, . . . , an) ↦→<br />

2i + 1<br />

2n + 1<br />

caso existe i = min{j | aj = 1}<br />

caso contrário<br />

Agora po<strong>de</strong>mos aplicar a <strong>de</strong>finição da <strong>complexida<strong>de</strong></strong> pessimista para obter<br />

C ≤ p [Busca1](n) = max{<strong>de</strong>semp[Busca1](d) | tam(d) = n} = 2n + 1 = O(n).<br />

Observe que C = p é monotônica, e portanto C = p = C ≤ p .<br />

Um caso que em geral é menos interessante po<strong>de</strong>mos tratar nesse exemplo<br />

também: Qual é a <strong>complexida<strong>de</strong></strong> otimista (<strong>complexida<strong>de</strong></strong> no caso melhor)? Isso<br />

acontece quando 1 é o primeiro elemento da sequência, logo, Co[Busca1](n) =<br />

2 = O(1).<br />

♦<br />

2.2. Complexida<strong>de</strong> pessimista<br />

2.2.1. Metodologia <strong>de</strong> análise <strong>de</strong> <strong>complexida<strong>de</strong></strong><br />

Uma linguagem simples<br />

• Queremos estudar como <strong>de</strong>terminar a <strong>complexida<strong>de</strong></strong> <strong>de</strong> algoritmos metodicamente.<br />

• Para este fim, vamos usar uma linguagem simples que tem as operações<br />

básicas <strong>de</strong><br />

35

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!