ebook img

Algoritmos e complexidade Notas de aula PDF

430 Pages·2012·5.84 MB·Portuguese
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Algoritmos e complexidade Notas de aula

Algoritmos e complexidade Notas de aula Marcus Ritt com contribui¸co˜es de Edson Prestes e Luciana Buriol 16 de Maio de 2012 Conteu´do I. An´alise de algoritmos 7 1. Introduc¸˜ao e conceitos b´asicos 9 1.1. Nota¸c˜ao assint´otica . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.2. Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.3. Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2. An´alise de complexidade 31 2.1. Introdu¸c˜ao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.2. Complexidade pessimista . . . . . . . . . . . . . . . . . . . . . 35 2.2.1. Metodologia de an´alise de complexidade . . . . . . . . . 35 2.2.2. Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.3. Complexidade m´edia . . . . . . . . . . . . . . . . . . . . . . . . 47 2.4. Outros t´ıpos de an´alise . . . . . . . . . . . . . . . . . . . . . . . 61 2.4.1. An´alise agregada . . . . . . . . . . . . . . . . . . . . . . 61 2.4.2. An´alise amortizada . . . . . . . . . . . . . . . . . . . . . 64 2.5. Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 2.6. Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 II. Projeto de algoritmos 71 3. Introduc¸˜ao 73 4. Algoritmos gulosos 75 4.1. Introdu¸c˜ao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.2. Algoritmos em grafos . . . . . . . . . . . . . . . . . . . . . . . . 78 4.2.1. A´rvores espalhadas m´ınimas . . . . . . . . . . . . . . . . 78 4.2.2. Caminhos mais curtos . . . . . . . . . . . . . . . . . . . 84 4.3. Algoritmos de sequ¨enciamento . . . . . . . . . . . . . . . . . . 85 4.4. To´picos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.5. Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.6. Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 1 Conteu´do 5. Programa¸c˜ao dinˆamica 95 5.1. Introdu¸c˜ao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.2. Compara¸c˜ao de sequˆencias . . . . . . . . . . . . . . . . . . . . . 98 5.2.1. Subsequˆencia comum mais longa . . . . . . . . . . . . . 98 5.2.2. Similaridade entre strings . . . . . . . . . . . . . . . . . 103 5.3. Problema da Mochila. . . . . . . . . . . . . . . . . . . . . . . . 105 5.4. Multiplica¸c˜ao de Cadeias de Matrizes. . . . . . . . . . . . . . . 107 5.5. T´opicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.5.1. Algoritmo de Floyd-Warshall . . . . . . . . . . . . . . . 109 5.5.2. Caixeiro viajante . . . . . . . . . . . . . . . . . . . . . . 111 5.5.3. Cobertura por conjuntos . . . . . . . . . . . . . . . . . . 113 5.5.4. Caminho mais longo . . . . . . . . . . . . . . . . . . . . 113 5.5.5. Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.6. Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 6. Divis˜ao e conquista 117 6.1. Introdu¸c˜ao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.2. Resolver recorrˆencias . . . . . . . . . . . . . . . . . . . . . . . . 119 6.2.1. M´etodo da substitui¸c˜ao . . . . . . . . . . . . . . . . . . 119 6.2.2. M´etodo da ´arvore de recurs˜ao . . . . . . . . . . . . . . . 125 6.2.3. M´etodo Mestre . . . . . . . . . . . . . . . . . . . . . . . 127 6.2.4. Um novo m´etodo Mestre. . . . . . . . . . . . . . . . . . 132 6.3. Algoritmos usando divis˜ao e conquista . . . . . . . . . . . . . . 133 6.3.1. O algoritmo de Strassen . . . . . . . . . . . . . . . . . . 133 6.3.2. Menor distˆancia . . . . . . . . . . . . . . . . . . . . . . 135 6.3.3. Selec¸˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 6.3.4. Convolu¸c˜oes . . . . . . . . . . . . . . . . . . . . . . . . . 138 6.4. Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 6.5. Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 7. A´rvores de busca, backtracking e branch-and-bound 145 7.1. Backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 7.1.1. Exemplo: O problema das n-rainhas . . . . . . . . . . . 147 7.1.2. Exemplo: Caixeiro viajante . . . . . . . . . . . . . . . . 149 7.1.3. Exemplo: Cobertura por v´ertices . . . . . . . . . . . . . 150 7.1.4. T´opicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 7.2. Branch-and-bound . . . . . . . . . . . . . . . . . . . . . . . . . 156 7.3. Analisar ´arvores de busca . . . . . . . . . . . . . . . . . . . . . 167 7.4. Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 7.5. Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 2 Conteu´do III. Estruturas de dados 171 8. Estruturas abstratas de dados 173 8.1. Exemplos de estruturas abstratos de dados . . . . . . . . . . . 173 9. Estruturas da dados elementares 177 9.1. Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 10.Dicion´arios 183 10.1.Listas skip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 10.2.A´rvores de busca . . . . . . . . . . . . . . . . . . . . . . . . . . 184 10.2.1. A´rvores bin´arias . . . . . . . . . . . . . . . . . . . . . . 185 10.2.2. Treaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 10.2.3. A´rvores bin´arias de busca ´otimas . . . . . . . . . . . . . 190 10.2.4. A´rvores rubro-negros . . . . . . . . . . . . . . . . . . . . 194 10.2.5. A´rvores AVL . . . . . . . . . . . . . . . . . . . . . . . . 202 10.2.6. A´rvores Splay . . . . . . . . . . . . . . . . . . . . . . . . 203 10.2.7. A´rvores (a,b) . . . . . . . . . . . . . . . . . . . . . . . . 204 10.2.8. A´rvores B . . . . . . . . . . . . . . . . . . . . . . . . . . 204 10.2.9. Tries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 11.Filas de prioridade e heaps 207 11.1.Filas de prioridade e heaps . . . . . . . . . . . . . . . . . . . . 207 11.1.1. Heaps bin´arios . . . . . . . . . . . . . . . . . . . . . . . 210 11.1.2. Heaps binomiais . . . . . . . . . . . . . . . . . . . . . . 213 11.1.3. Heaps Fibonacci . . . . . . . . . . . . . . . . . . . . . . 218 11.1.4. Rank-pairing heaps . . . . . . . . . . . . . . . . . . . . . 222 11.1.5. T´opicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 11.1.6. Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . 231 12.Tabelas hash 233 12.1.Hashing com listas encadeadas . . . . . . . . . . . . . . . . . . 233 12.2.Hashing com endere¸camento aberto. . . . . . . . . . . . . . . . 237 12.3.Cuco hashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 12.4.Filtros de Bloom . . . . . . . . . . . . . . . . . . . . . . . . . . 241 13.Grafos 243 IV. Algoritmos 245 14.Algoritmos em grafos 247 3 Conteu´do 14.1.Fluxos em redes. . . . . . . . . . . . . . . . . . . . . . . . . . . 248 14.1.1. Algoritmo de Ford-Fulkerson . . . . . . . . . . . . . . . 249 14.1.2. O algoritmo de Edmonds-Karp . . . . . . . . . . . . . . 253 14.1.3. O algoritmo “caminho mais gordo” (“fattest path”) . . 255 14.1.4. Varia¸c˜oes do problema . . . . . . . . . . . . . . . . . . . 256 14.1.5. Aplicac¸˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . 261 14.1.6. Outros problemas de fluxo . . . . . . . . . . . . . . . . . 264 14.1.7. Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . 264 14.2.Emparelhamentos. . . . . . . . . . . . . . . . . . . . . . . . . . 266 14.2.1. Aplicac¸˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . 269 14.2.2. Grafos bi-partidos . . . . . . . . . . . . . . . . . . . . . 270 14.2.3. Emparelhamentos em grafos n˜ao-bipartidos . . . . . . . 281 14.2.4. Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . 282 15.Algoritmos de aproximac¸˜ao 283 15.1.Problemas, classes e reduc¸˜oes . . . . . . . . . . . . . . . . . . . 283 15.2.Medidas de qualidade . . . . . . . . . . . . . . . . . . . . . . . 284 15.3.T´ecnicas de aproxima¸c˜ao. . . . . . . . . . . . . . . . . . . . . . 285 15.3.1. Algoritmos gulosos . . . . . . . . . . . . . . . . . . . . . 285 15.3.2. Aproximac¸˜oes com randomiza¸c˜ao . . . . . . . . . . . . . 290 15.4.Esquemas de aproxima¸c˜ao . . . . . . . . . . . . . . . . . . . . . 291 15.5.Aproximando o problema da ´arvore de Steiner m´ınima . . . . . 294 15.6.Aproximando o PCV . . . . . . . . . . . . . . . . . . . . . . . . 295 15.7.Aproximando problemas de cortes . . . . . . . . . . . . . . . . 296 15.8.Aproximando empacotamento unidimensional . . . . . . . . . . 300 15.8.1. Um esquema de aproxima¸c˜ao assint´otico para min-EU . 305 15.9.Aproximando problemas de sequˆenciamento . . . . . . . . . . . 307 15.9.1. Um esquema de aproxima¸c˜ao para P ||C . . . . . . 309 max 15.10.Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 16.Algoritmos randomizados 313 16.1.Teoria de complexidade . . . . . . . . . . . . . . . . . . . . . . 313 16.1.1. Amplificac¸˜ao de probabilidades . . . . . . . . . . . . . . 315 16.1.2. Relac¸˜ao entre as classes . . . . . . . . . . . . . . . . . . 316 16.2.Sele¸c˜ao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 16.3.Corte m´ınimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 16.4.Teste de primalidade . . . . . . . . . . . . . . . . . . . . . . . . 325 16.5.Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 V. Teoria de complexidade 331 4 Conteu´do 17.Do algoritmo ao problema 333 17.1.Introdu¸c˜ao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 18.Classes de complexidade 345 18.1.Defini¸c˜oes b´asicas . . . . . . . . . . . . . . . . . . . . . . . . . . 345 18.2.Hierarquias b´asicas . . . . . . . . . . . . . . . . . . . . . . . . . 347 18.3.Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 19.Teoria de NP-completude 353 19.1.Caracterizac¸˜oes e problemas em NP . . . . . . . . . . . . . . . 353 19.2.Redu¸c˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 19.3.Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 20.Fora do NP 367 20.1.De P at´e PSPACE . . . . . . . . . . . . . . . . . . . . . . . . . . 369 20.2.De PSPACE at´e ELEMENTAR . . . . . . . . . . . . . . . . . . . 374 20.3.Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 21.Complexidade de circuitos 379 A. Conceitos matem´aticos 387 A.1. Fun¸c˜oes comuns. . . . . . . . . . . . . . . . . . . . . . . . . . . 387 A.2. Somat´orio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 A.3. Indu¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 A.4. Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 A.5. Probabilidade discreta . . . . . . . . . . . . . . . . . . . . . . . 396 A.6. Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 B. Soluc¸˜oes dos exerc´ıcios 401 5 Conteu´do Essas notas servem como suplemento `a material do livro “Complexidade de algoritmos” de Toscani/Veloso e o material did´atico da disciplina “Complexi- dade de algoritmos” da UFRGS. Vers˜ao 4227 do 2012-05-16, compilada em 16 de Maio de 2012. A obra est´a licenciada sob uma Licen¸ca Creative Commons (Atribui¸c˜ao-Uso N˜ao- Comercial-N˜ao a obras derivadas 2.5 Brasil). 6 Parte I. An´alise de algoritmos 7

Description:
Isso precisa n! adiç˜oes (A) e n!n multiplicaç˜oes (M), com custo total por Sedgewick [87]: caso um nodo possui somente um filho vermelho, será o.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.