Você está na página 1de 11

T opicos Avan cados em Algoritmos

Armando Matos

2008 Departamento de Ci encia de Computadores Faculdade de Ci encias da Universidade do Porto

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009

Conte udo
0 Introdu c ao 1 Preliminares: fundamentos da an alise de algoritmos 1.1 Eci encia dos algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 1.1.2 1.1.3 1.1.4 1.2 Eci encia dos algoritmos: duas an alises . . . . . . . . . . . . . . . . . . . . Recursos e modelos de computa c ao . . . . . . . . . . . . . . . . . . . . . . . Pior caso e caso m edio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recorr encias, pior caso e caso m edio, um exemplo . . . . . . . . . . . . . . 9 13 13 13 14 14 15 17 17 20 21 21 22 24 26 28 28 29 30 30 32 35 35 36

Ordens de grandeza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 1.2.2 Majora c ao, minora c ao e ordem exacta . . . . . . . . . . . . . . . . . . . . . Tempo de execu c ao em algoritmos de ordena c ao e pesquisa . . . . . . . . .

1.3

Solu c ao de recorr encias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 Exemplos de fun c oes denidas atrav es de recorr encias deni c oes indutivas O que e uma recorr encia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . M etodo Tabelar suspeitar demonstrar . . . . . . . . . . . . . . . . . . M etodo das diferen cas nitas constantes . . . . . . . . . . . . . . . . . . . . M etodo da mudan ca de vari avel . . . . . . . . . . . . . . . . . . . . . . . .

M etodo da equa c ao caracter stica homog enea . . . . . . . . . . . . . . . . . Equa c ao caracter stica homog enea ra zes distintas . . . . . . . . . . . . . Equa c ao caracter stica homog enea, caso geral: exist encia de ra zes m ultiplas M etodo da equa c ao caracter stica n ao homog enea . . . . . . . . . . . . . . .

1.4

Um exemplo de an alise: tempo m edio do quicksort . . . . . . . . . . . . . . . . .

2 Tempo de execu c ao dos algoritmos complementos 2.1 2.2 Tempo de execu c ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sobre os modelos de computa c ao . . . . . . . . . . . . . . . . . . . . . . . . . . . .

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009

4 2.2.1 2.2.2 2.3 O modelo externo dos dados

CONTEUDO . . . . . . . . . . . . . . . . . . . . . . . . . . 37 38 39 40 42 44 45 49 49 51 51 54 57 57 59 60 60 61 61 63 65 66 66 67 67 68 72 72 73 77 79 79

Monotonia de t(n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

An alise amortizada de algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 2.3.2 2.3.3 2.3.4 Stack com gest ao de mem oria . . . . . . . . . . . . . . . . . . . . . . . .

A fun c ao potencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outro exemplo, um contador bin ario . . . . . . . . . . . . . . . . . . . . . . Contador bin ario com custo exponencial na ordem do bit . . . . . . . . . .

3 Sobre o esquema Dividir para Conquistar 3.1 3.2 Uma recorr encia associada ao esquema dividir para conquistar . . . . . . . . . . Multiplicar mais rapidamente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 3.2.2 Multiplica c ao de inteiros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multiplica c ao de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Algoritmos aleatorizados e classes de complexidade 4.1 4.2 4.3 Um problema de colora c ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O produto de duas matrizes iguala uma terceira? . . . . . . . . . . . . . . . . . . . O quick sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 4.3.2 4.3.3 4.3.4 4.4 4.5 Esquema b asico do quick sort . . . . . . . . . . . . . . . . . . . . . . . . . An alise no pior caso do quick sort cl assico. . . . . . . . . . . . . . . . . . An alise do tempo m edio do quick sort cl assico . . . . . . . . . . . . . . . O quick sort aleatorizado . . . . . . . . . . . . . . . . . . . . . . . . . . .

T ecnica de redu c ao da probabilidade de erro . . . . . . . . . . . . . . . . . . . . . . Outro algoritmo aleatorizado: o algoritmo de Rabin-Miller . . . . . . . . . . . . . . 4.5.1 4.5.2 4.5.3 4.5.4 Ineci encia dos algoritmos elementares de primalidade . . . . . . . . . . . . Existem algoritmos polinomiais para a primalidade . . . . . . . . . . . . . . Testemunhos rarefeitos da n ao primalidade . . . . . . . . . . . . . . . . . . Testemunhos frequentes da n ao primalidade . . . . . . . . . . . . . . . . . .

4.6

Computa c ao aleatorizada: classes de complexidade . . . . . . . . . . . . . . . . . . 4.6.1 4.6.2 Panorama geral das classes de complexidade . . . . . . . . . . . . . . . . . . Classes de complexidade aleatorizadas . . . . . . . . . . . . . . . . . . . . .

5 Sobre a ordena c ao e a selec c ao 5.1 Quando o universo e pequeno: indexa c ao nos valores . . . . . . . . . . . . . . . . . 5.1.1 Vector sem elementos repetidos . . . . . . . . . . . . . . . . . . . . . . . . .

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009

CONTEUDO 5.1.2 5.1.3 5.1.4 5.1.5 5.2 Coment ario: uma representa c ao de conjuntos . . . . . . . . . . . . . . . . . Vector com elementos repetidos . . . . . . . . . . . . . . . . . . . . . . . . . Notas sobre as tentativas de generaliza c ao do universo . . . . . . . . . . . . Ordena c ao de reais no intervalo [0, 1) . . . . . . . . . . . . . . . . . . . . . .

5 80 81 83 83 85 85 86 88 89 91 95 95 98 98 98

M etodos de ordena c ao baseados na representa c ao dos valores . . . . . . . . . . . . 5.2.1 5.2.2 Radix sort: come cando pelo s mbolo mais signicativo . . . . . . . . . . . Radix sort: come cando pelo s mbolo menos signicativo . . . . . . . . . .

5.3

Mediana; selec c ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 5.3.2 Mediana em tempo m edio O(n) . . . . . . . . . . . . . . . . . . . . . . . . . Mediana em tempo O(n) (pior caso) . . . . . . . . . . . . . . . . . . . . . .

6 Circuitos e redes de ordena c ao 6.1 Circuitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 6.2 Classes de complexidade associadas ao modelo dos circuitos . . . . . . . . .

Redes de compara c ao e redes de ordena c ao . . . . . . . . . . . . . . . . . . . . . . 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 Introdu c ao e conceitos fundamentais . . . . . . . . . . . . . . . . . . . . . .

Princ pio 0/1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Ordenadores bit onicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Rede de ordena c ao baseada no merge sort . . . . . . . . . . . . . . . . . . 105 Sum ario, complexidade e minorantes . . . . . . . . . . . . . . . . . . . . . . 107 111

Hash universal e perfeito 7.1

Considera c oes gerais sobre os m etodos de hash . . . . . . . . . . . . . . . . . . . 111 7.1.1 7.1.2 Universos grandes, fun c oes de hash . . . . . . . . . . . . . . . . . . . . . 111 Variantes do m etodo de hash . . . . . . . . . . . . . . . . . . . . . . . . 114

7.2

Hash universal: aleatoriza c ao do hash . . . . . . . . . . . . . . . . . . . . . . 115 7.2.1 O m etodo matricial de constru c ao . . . . . . . . . . . . . . . . . . . . . . . 116

7.3

Hash perfeito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 7.3.1 7.3.2 Constru c ao com espa co O(n2 ) . . . . . . . . . . . . . . . . . . . . . . . . . 118 Constru c ao com espa co O(n) . . . . . . . . . . . . . . . . . . . . . . . . . . 119

7.4

Contar o n umero de elementos distintos . . . . . . . . . . . . . . . . . . . . . . . . 121 123

8 Programa c ao Din amica: complementos 8.1 8.2

Introdu c ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Alguns exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009

6 8.2.1 8.2.2 8.2.3 8.3

CONTEUDO Parentiza c ao optima de um produto matricial . . . . . . . . . . . . . . . . . 125 M axima sub-sequ encia comum . . . . . . . . . . . . . . . . . . . . . . . . . 129 Problema da mochila (knapsack problem) . . . . . . . . . . . . . . . . . . 134

Coment ario nal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 137

9 Sobre o algoritmo FFT 9.1 9.2

Transforma c oes de representa c ao, generalidades . . . . . . . . . . . . . . . . . . . . 137 Polin omios em corpos. Representa c oes . . . . . . . . . . . . . . . . . . . . . . . . . 137 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5 C alculo de um polin omio num ponto . . . . . . . . . . . . . . . . . . . . . . 137 Dois modos de representar um polin omio . . . . . . . . . . . . . . . . . . . 138 Multiplica c ao de 2 polin omios . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Corpos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Ra zes primitivas da unidade . . . . . . . . . . . . . . . . . . . . . . . . . . 141

9.3

A DFT: dos coecientes para os valores . . . . . . . . . . . . . . . . . . . . . . . . 142 9.3.1 9.3.2 O que e a transformada discreta de Fourier, DFT? . . . . . . . . . . . . . . 142 A inversa da transformada discreta de Fourier . . . . . . . . . . . . . . . . . 143

9.4

O algoritmo FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 9.4.1 An alise da eci encia do algoritmo FFT . . . . . . . . . . . . . . . . . . . . 146

9.5

Aplica c oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 9.5.1 9.5.2 Multiplica c ao eciente de matrizes . . . . . . . . . . . . . . . . . . . . . . . 150 Transformadas tempo frequ encia . . . . . . . . . . . . . . . . . . . . . . 150 153

10 Notas sobre minorantes de complexidade 10.1 Exemplos introdut orios

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

10.1.1 Um problema simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 10.1.2 O problema das 12 bolas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 10.2 Entropia, informa c ao e minorantes de complexidade . . . . . . . . . . . . . . . . . 157 10.2.1 Introdu c ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 10.2.2 Informa c ao e os problemas de pesagens . . . . . . . . . . . . . . . . . . . . 158 10.3 Minorantes de algoritmos de ordena c ao . . . . . . . . . . . . . . . . . . . . . . . . . 159 10.4 Algoritmos de ordena c ao em que o custo e o n umero de trocas . . . . . . . . . . . 161

10.5 Minorantes de algoritmos de determina c ao do maior elemento . . . . . . . . . . . . 163 10.6 Determina c ao do segundo maior elemento . . . . . . . . . . . . . . . . . . . . . . . 164 10.7 Minorantes do problema de Merge . . . . . . . . . . . . . . . . . . . . . . . . . . 166 10.8 Conectividade de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009

CONTEUDO 11 Ap endices

7 169

11.1 Ap endice: Alguns resultados u teis . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 11.2 Ap endice: Implementa c oes do quick sort em Haskell, Prolog e Python . . . . . . 170 11.3 Ap endice: Algoritmo eciente de potencia c ao modular . . . . . . . . . . . . . . . . 171 11.4 Ap endice: Algoritmo de Rabin-Miller (teste de primalidade) . . . . . . . . . . . . . 172 11.5 Ap endice: Algoritmo do radix sort em python . . . . . . . . . . . . . . . . . . . 173

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009

CONTEUDO

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009

Cap tulo 0

Introdu c ao
Nesta publica c ao reunimos um conjunto de notas informais das aulas te oricas da disciplina de T opicos Avan cados em Algoritmos1 . Incluimos tamb em diversos exerc cios propostos nas aulas te oricas. Uma grande parte da Ci encia de Computadores consiste no estudo dos algoritmos projecto (design), prova da correc c ao, an alise da eci encia e implementa c ao2 . H a muitos, muitos, algoritmos nas mais diversas areas: algoritmos de ordena c ao e pesquisa, algoritmos para procura de padr oes em textos (pattern matching) algoritmos de compress ao de cheiros, algoritmos num ericos, algoritmos geom etricos, algoritmos para an alise l exica ou sint atica, algoritmos para garbage collection, algoritmos para problemas relacionados com grafos, algoritmos usados na Teoria dos Grupos. . . a lista quase n ao tem m. Contudo, vale a pena estudarmos algoritmos espec cos: quando se compreende bem ou se inventa um algoritmo concreto est a-se muitas vezes a utilizar uma ideia ou um conjunto de ideias que s ao aplic aveis com muito mais generalidade. Nesta publica c ao estudaremos os seguintes temas relacionados com algoritmos: Algumas t ecnicas de an alise da eci encia de algoritmos. Algoritmos espec cos. Algumas t ecnicas gen ericas aplic aveis em muitos problemas: dividir para conquistar e Programa c ao Din amica. Minorantes de complexidade.
1 Anos de 2008 e 2009, Departamento de Ci encia de Computadores, Faculdade de Ci encias da Universidade do Porto. 2 O projecto, a prova da correc c ao e a an alise da eci encia est ao intimamente relacionados; devem efectuar-se em paralelo.

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009

10

CAP ITULO 0. INTRODUC AO Este livro est a organizado daseguinte forma. No pr oximo cap tulo apresentam-se alguns ele-

mentos de an alise de algoritmos, sendo especialmente estudadas as ordens de grandeza das fun c oes e alguns m etodos de solu c ao de recorr encias. O Cap tulo 2 trata dos modelos de computa c ao e do tempo de execu c ao dos algoritmos, estudando-se em especial a an alise amortizada do tempo de execu c ao. O esquema dividir para conquistar, bem como a solu c ao das recorr encias que lhe est ao associadas s ao estudados no Cap tulo 3; esse esquema e aplicado a algoritmos de multiplica c ao de inteiros e de matrizes grandes. No cap tulo seguinte s ao considerados os algoritmos aleatorizados, isto e, que t em acesso a uma fonte de n umeros aleat orios (ou pseudo-aleat orios); em particular e estudado o quick-sort aleatorizado e o algoritmo de primalidade Rabin-Miller. As classes de complexidade aleatorizadas s ao tamb em estudadas. O Cap tulo 5 trata de alguns algoritmos relacionados com o problema da ordena c ao, sendo considerados m etodos de ordena c ao aplic aveis a universos pequenos, o radix-sort e um algoritmo eciente de determina c ao da mediana. Os circuitos como modelos de computa c ao s ao mencionados no Cap tulo 6, sendo estudadas em algum pormenor as redes de ordena ca o. No Cap tulo 7 s ao consideradas 2 quest oes relacionadas com os m etodos de hash: o hash universal e o hash perfeito. Algumas aplica c oes t picas da Programa c ao Din amica parentiza c ao optima de um produto matricial, m axima sub-sequ encia comum e o problema da mochila (knapsack problem) s ao considerados em algum pormenor no Cap tulo 8. O cap tulo seguinte trata do importante algoritmo FFT (Fast Fourier Transform); este algoritmo e estudado do ponto de vista da convers ao entre 2 representa c oes dos polin omios representa c ao por coecientes e representa c ao por valores em determinados pontos. A Teoria da Informa c ao e aplicada no Cap tulo 10 ` a determina c ao de minorantes de complexidade de algoritmos de ordena c ao e pesquisa.

Pr e-requesitos. Para a boa compreens ao destes apontamentos e necess ario : (i) ter alguma maturidade matem atica, em particular na area da matem atica discreta, (ii) ter conhecimentos m nimos da teoria das probabilidades, (iii) conhecer os principais algoritmos de ordena c ao e respectiva eci encia, (iv) ter alguma experi encia de programa c ao numa linguagem como, por exemplo, o C, o C++, o Python ou at e o Java, e ter capacidade de implementar nessa linguagem algoritmos descritos numa linguagem informal, (v) conhecer os fundamentos da teoria dos problemas completos em NP.

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009

11

Os exerc cios s ao parte integrante deste curso. O leitor dever a fazer um esfor co s erio para os resolver!

T opicos Avan cados de Algoritmos Armando B. Matos DCC-FC-UP 2009