Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar

arquivoescolar.org
from arquivoescolar.org More from this publisher
13.04.2013 Views

1. Introdução e conceitos básicos Relações de crescimento Definição 1.1 (Relações de crescimento) f ≺ g ⇐⇒ f ∈ o(g) (1.16) f g ⇐⇒ f ∈ O(g) (1.17) f ≻ g ⇐⇒ f ∈ ω(g) (1.18) f g ⇐⇒ f ∈ Ω(g) (1.19) f ≍ g ⇐⇒ f ∈ Θ(g) (1.20) Essas relações são chamadas “notação de Vinogradov” 4 . Caso f g digamos as vezes “f é absorvido pela g”. Essas relações satisfazem as características básicas esperadas. Características das relações de crescimento Proposição 1.3 (Características das relações de crescimento) Sobre o conjunto de funções [N → R + ] 1. f g ⇐⇒ g f, 2. e são ordenações parciais (reflexivas, transitivas e anti-simétricas em relação de ≍), 3. f ≺ g ⇐⇒ g ≻ f, 4. ≺ e ≻ são transitivas, 5. ≍ é uma relação de equivalência. Prova. Exercício. Observe que esses resultados podem ser traduzidos para a notação O. Por exemplo, como ≍ é uma relação de equivalência, sabemos que Θ também satisfaz f ∈ Θ(f) f ∈ Θ(g) ⇒ g ∈ Θ(f) f ∈ Θ(g) ∧ g ∈ Θ(h) ⇒ f ∈ Θ(h) A notação com relações é sugestiva e freqüentemente mais fácil de usar, mas nem todas as identidades que ela sugere são válidas, como a seguinte proposição mostra. 4 Uma notação alternativa é ≪ para e ≫ para . Infelizmente a notação não é padro- 26 nizada.

Identidades falsas das relações de crescimento 1.2. Notas Proposição 1.4 (Identidades falsas das relações de crescimento) É verdadeiro que mas as seguintes afirmações não são verdadeiras: f g ⇒ f ≻ g f g ⇒ f ≺ g f ≻ g ⇒ f g (1.21) f ≺ g ⇒ f g (1.22) f ≺ g ∨ f ≍ g ∨ f ≻ g (Tricotomia) Prova. Exercício. Considerando essas características, a notação tem que ser usada com cuidado. Uma outra abordagem é definir O etc. diferente, tal que outras relações acima são verdadeiras. Mas parece que isso não é possível, sem perder outras [68]. 1.2. Notas Alan Turing provou em 1936 que o “problema de parada” não é decidível. O estudo da complexidade de algoritmos começou com o artigo seminal de Hartmanis e Stearns [35]. O estudo da complexidade de calcular a determinante tem muito mais aspectos interessantes. Um deles é que o método de Gauss pode produzir resultados intermediários cuja representação precisa um número exponencial de bits em função do tamanho da entrada. Portanto, o método de Gauss formalmente não tem complexidade O(n 3 ). Resultados atuais mostram que uma complexidade de operações de bits n 3.2 log A 1+o(1) é possível [40]. Nossa discussão da regra de Cramer usa dois métodos naivos para calcular determinantes. Habgood e Arel [34] mostram que existe um algoritmo que resolve um sistema de equações lineares usando a regra de Cramer em tempo O(n 3 ). 1.3. Exercícios (Soluções a partir da página 307.) Exercício 1.1 Quais funções são contidos nos conjuntos O(−1), o(−1), Ω(−1), ω(−1)? 27

1. Introdução e conceitos básicos<br />

Relações <strong>de</strong> crescimento<br />

Definição 1.1 (Relações <strong>de</strong> crescimento)<br />

f ≺ g ⇐⇒ f ∈ o(g) (1.16)<br />

f g ⇐⇒ f ∈ O(g) (1.17)<br />

f ≻ g ⇐⇒ f ∈ ω(g) (1.18)<br />

f g ⇐⇒ f ∈ Ω(g) (1.19)<br />

f ≍ g ⇐⇒ f ∈ Θ(g) (1.20)<br />

Essas relações são chamadas “notação <strong>de</strong> Vinogradov” 4 .<br />

Caso f g digamos as vezes “f é absorvido pela g”. Essas relações satisfazem<br />

as características básicas esperadas.<br />

Características das relações <strong>de</strong> crescimento<br />

Proposição 1.3 (Características das relações <strong>de</strong> crescimento)<br />

Sobre o conjunto <strong>de</strong> funções [N → R + ]<br />

1. f g ⇐⇒ g f,<br />

2. e são or<strong>de</strong>nações parciais (reflexivas, transitivas e anti-simétricas<br />

em relação <strong>de</strong> ≍),<br />

3. f ≺ g ⇐⇒ g ≻ f,<br />

4. ≺ e ≻ são transitivas,<br />

5. ≍ é uma relação <strong>de</strong> equivalência.<br />

Prova. Exercício. <br />

Observe que esses resultados po<strong>de</strong>m ser traduzidos para a notação O. Por<br />

exemplo, como ≍ é uma relação <strong>de</strong> equivalência, sabemos que Θ também<br />

satisfaz<br />

f ∈ Θ(f)<br />

f ∈ Θ(g) ⇒ g ∈ Θ(f)<br />

f ∈ Θ(g) ∧ g ∈ Θ(h) ⇒ f ∈ Θ(h)<br />

A notação com relações é sugestiva e freqüentemente mais fácil <strong>de</strong> usar, mas<br />

nem todas as i<strong>de</strong>ntida<strong>de</strong>s que ela sugere são válidas, como a seguinte proposição<br />

mostra.<br />

4 Uma notação alternativa é ≪ para e ≫ para . Infelizmente a notação não é padro-<br />

26<br />

nizada.

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

Saved successfully!

Ooh no, something went wrong!