ebook img

ALGORITMOS - TEORIA E PRATICA: TRADUÇÃO DA 2a EDIÇÃO AMERICANA PDF

239 Pages·2002·16.15 MB·Portuguese
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 - TEORIA E PRATICA: TRADUÇÃO DA 2a EDIÇÃO AMERICANA

Teoria e Prática Associação Brasileira para a Proteção dos Direitos Editoriais e Autorais Preencha a ficha de cadastro no final deste livro e receba gratuitamente informações sobre os lançamentos e as promoções da Editora Campus. Consulte também nosso catálogo completo e últimos lançamentos em www.campus.com.br THd Fb, COR CHARLES E. LE ISIFRSOM ROMALD L, WIVEST CL IFFORD STEIN T e o r i a e P r á t i c a JUSSARA PIMENTMAA TOS Dqartamento de Engenharia de Computação e Sistemas Digitais da Escola Politécnica da USP e Consultora em Engenharia de Sofhoare TRAI VANDEN 4" Tiragem - CAA Do original Introduction to algorithms - Second Edition Tradução autorizada do idioma inglês da edição publicada por The MIT Press Copyright 2001 by The Massachusetts Institute of Technology O 2002, Elsevier Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônicos, mecânicos, fotográficos, gravação ou quaisquer outros. Editoração Eletrônica Estúdio Castellani Revisão Gráfica Jane Castellani Projeto Gráfico Elsevier Editora Ltda. A Qualidade da Informação. Rua Sete de Setembro, 111 - 16" andar 20050-006 Rio de Janeiro RJ Brasil Telefone: (21) 3970-9300 FAX: (21) 2507-1991 E-mail: info Oelsevier.com.br Escritório São Paulo: Rua Elvira Ferraz. 198 04552-040 Vila Olímpia São Paulo SP Tel.: (1 1) 3841- 8555 ISBN 85-352-0926-3 (Edição original: ISBN 0-07-013 1 51-1) CIP-Brasil. Catalogação-na-fonte. Sindicato Nacional dos Editores de Livros, RJ A385 Algoritmos : teoria e prática 1 Thomas H. Cormen. .. [et a[]; tradução da segunda edição [americana] Vandenberg D. de Souza. - Rio de Janeiro : Elsevier, 2002 - @ Reimpressão. Tradução de: Introduction to algorithms ISBN 85-352-0926-3 1. Programação (Computadores). 2. Algoritmos de computador. I. Cormen. Thomas H. O1 -16 74 CDD - 005.1 CDU - 004.421 04 05 06 07 7 6 5 4 Sumário .......................................................... Prefácio XI Parte i Fundamentos ........................................................ Introduçáo 1 ............................ 1 A função dos algoritmos na computaçáo - 3 ................................................... 1.1 Algoritmos 3 .................................. 1.2 Algoritmos como uma tecnologia 7 .............................................. 2 Conceitosbásicos 11 ........................................ 2.1 Ordenação por inserção 11 2.2 Análise de algoritmos ..........................................1 6 2.3 Projeto de algoritmos ..........................................2 1 ......................................... 3 Crescimentodefunções 32 3.1 Notação assintótica ...........................................3.2 3.2 Notações padrão e funções comuns ................................4 0 .................................................. 4 Xecorrências 50 ....................................... 4.1 O método de substituição 51 .................................. 4.2 O método de árvore de recursáo 54 4.3 O método mestre ..............................................5 9 * ........................................ 4.4 Prova do teorema mestre 61 ........................ 5 Análise probabiíística e algoritmos aleatórios 73 5.1 O problema da contrataçáo ......................................7 3 5.2 Indicadores de variáveis aleatórias .................................7 6 5.3 Algoritmos aleatórios ...........................................7 9 5.4 Análise probabilística e usos adicionais de indicadores de variáveis aleatórias . . 85 Parte I1 Ordenação e estatísticas de ordem .................................................... Introdução 99 .................................................... 6 Heapsort 103 6.1 Heaps ....................................................1.0 3 6.2 Manutenção da propriedade de heap ..............................1 05 6.3 A construção de um heap ......................................1 07 6.4 O algoritmo heapsort ........................................1.1 0 6.5 Filas de prioridades ...........................................1 11 .................................................... 7 Quicksort 117 7.1 Descrição do quicksort ........................................1 17 7.2 O desempenho de quicksort ....................................1 20 7.3 Uma versão aleatória de quicksort ................................1 24 7.4 Análise de quicksort ..........................................1 25 Iv ..................................... 8 Ordenaçãoemtempolinea r 133 ................................ 8.1 Limites inferiores para ordenação 133 ...................................... 8.2 Ordenação por contagem 135 .................................................. 8.3 Radixsort 137 ................................................. 8.4 Bucket sort 140 ................................. 9 Medianas e estatísticas de ordem 147 ............................................ 9.1 Mínimo e máximo 147 ................................ 9.2 Seleção em tempo esperado linear 149 ............................. 9.3 Seleção em tempo linear no pior caso 152 Parte I11 Estruturas de dados ...................................................... Introduçáo 159 ................................. 10 Estruturas de dados elementares 163 ................................................. 10.1 Pilhas e filas 163 ................................................ 10.2 Listas ligadas 166 ............................. 10.3 Implementação de ponteiros e objetos 170 .............................. 10.4 Representação de árvores enraizadas 173 ................................................. 11 Tabelashash 179 ..................................... 11.1 Tabelas de endereço direto 179 ................................................ 11.2 Tabelashash 181 ................................................ 11.3 Funçõeshash 185 ......................................... 11.4 Endereçamento aberto 192 * ............................................... 11.5 Hash perfeito 198 ...................................... 12 Árvores de pesquisa binária 204 ........................... 12.1 O que é uma árvore de pesquisa binária? 204 ....................... 12.2 Consultas em uma árvore de pesquisa binária 207 ......................................... 12.3 Inserção e eliminação 210 * ................ 12.4 Árvores de pesquisa binária construídas aleatoriamente 213 ......................................... 13 Árvores vermelho.preto 220 ........................... 13.1 Propriedades de árvores vermelho-preto 220 ................................................... 13.2 Rotações 223 13.3 Inserção ....................................................2 25 .................................................. 13.4 Eliminação 231 .................................. 14 Ampliando estruturas de dados 242 .................................. 14.1 Estatísticas de ordem dinâmicas 242 ............................ 14.2 Como ampliar uma estrutura de dados 247 .......................................... 14.3 Árvores de intervalos 249 Parte IV Técnicas avançadas de projeto e análise ...................................................... Introdução 257 ........................................ 15 Programação dinâmica -259 .............................. 15.1 Programação de linha de montagem 260 .............................. 15.2 Multiplicação de cadeias de matrizes 266 .............................. 15.3 Elementos de programação dinâmica 272 ................................. 15.3 Subsequência comum mais longa 281 ............................... 15.5 Árvores de pesquisa binária ótimas 285 ............................................ 16 Algoritmosgulosos 29 6 ............................. 16.1 Um problema de seleção de atividade 297 .................................. 16.2 Elementos da estratégia gulosa 303 .......................................... 16.3 Códigos de Huffman 307 + ......................... 16.4 Fundamentos teóricos de métodos gulosos 314 + ........................... 16.5 Um problema de programação de tarefas 319 ............................................ 17 Análiseamortizada 324 ............................................ 17.1 A análise agregada 325 ..................................... 17.2 O método de contabilidade 328 ........................................... 17.3 O método potencial 330 ............................................ 17.4 Tabelas dinâmicas 333 Parte V Estruturas de dados avançadas ...................................................... Introdução 345 .................................................... 18 Árvores B 349 ........................................ 18.1 Definição de árvores B 352 ................................ 18.2 Operaçóes básicas sobre árvores B 354 ......................... 18.3 Eliminaçáo de uma chave de uma árvore B 360 .............................................. 19 Heapsbinomiais 365 .............................. 19.1 Árvores binomiais e heaps binomiais 366 ................................ 19.2 Operações sobre heaps binomiais 370 ............................................ 20 HeapsdeFibonacci 381 ................................. 20.1 Estrutura de heaps de Fibonacci 382 ................................. 20.2 Operações de heaps intercaláveis 384 ..................... 20.3 Como decrementar uma chave e eliminar um nó 390 ................................... 20.4 Como limitar o grau máximo 394 ...................... 21 Estruturas de dados para conjuntos disjuntos -398 .................................. 21.1 Operaçóes de conjuntos disjuntos 398 ................. 21.2 Representação de conjuntos disjuntos por listas ligadas 400 ................................... 2 1.3 Florestas de conjuntos disjuntos 403 + 21.4 Análise da união por ordenação com compressão de caminho ............ 406 Parte VI Algoritmos de grafos ...................................................... Introdução 417 ................................ 22 Algoritmos elementares de grafos 419 ....................................... 22.1 Representações de grafos 419 ................................... 22.2 Pesquisa primeiro na extensão 422 ............................... 22.3 Pesquisa primeiro na profundidade 429 ......................................... 22.4 Ordenação topológica 436 ............................. 22.5 Componentes fortemente conectados 438 .................................... 23 Árvores de amplitude mínima 445 ................... 23.1 Como aumentar uma árvore de amplitude mínima 446 ................................. 23.2 Os algoritmos de Kruskal e Prim 450 ............................ 24 Caminhos mais curtos de única origem 459 24.1 O algoritmo de Bellman-Ford ................................... 465 I "I1 24.2 Caminhos mais curtos de única origem em grafos acíclicos orientados ..... 468 ......................................... 24.3 Algoritmo de Dijkstra 470 ..................... 24.4 Restrições de diferenças e caminhos mais curtos 475 ..................... 24.5 Provas de propriedades de caminhos mais curtos 480 ........................... 25 Caminhos mais curtos de todos os pares 490 .................... 25.1 Caminhos mais curtos e multiplicação de matrizes 492 .................................. 25.2 O algoritmo de Floyd.Warshal1 497 ......................... 25.3 Algoritmo de Johnson para grafos esparsos 503 ................................................ 26 Fluxomáximo 509 .............................................. 26.1 Fluxo em redes 510 ................................... 26.2 O método de Ford-Fulkerson 515 ............................... 26.3 Correspondência bipartida máxima 525 + ..................................... 26.4 Algoritmos de push-relabel 529 + 26.5 O algoritmo de relabel-to-front ..................................5 38 Parte VI1 Tópicos selecionados ...................................................... Introduçáo 553 ........................................... 27 Redesdeordenação 555 ......................................... 27.1 Redes de comparação 555 .......................................... 27.2 O princípio zero um 559 ................................. 27.3 Uma rede de ordenação bitônica 561 ...................................... 27.4 Uma rede de intercalação 564 ........................................ 27.5 Uma rede de ordenação 566 ....................................... 28 Operaçóes sobre matllzes 571 ....................................... 28.1 Propriedades de matrizes 571 28.2 Algoritmo de Strassen para multiplicação de matrizes ................. 579 ......................... 28.3 Resolução de sistemas de equações lineares 585 .......................................... 28.4 Inversão de matrizes 597 28.5 Matrizes simétricas definidas como positivas e aproximação de mínimos quadrados ..................................................6 01 ............................................ 29 Programaçáolinear 610 ...................................... 29.1 Formas padrão e relaxada 616 29.2 Formulação de problemas como programas lineares ..................6 22 29.3 O algoritmo simplex ..........................................6 26 .................................................. 29.4 Dualidade 638 .................................. 29.5 A solução básica inicial possível 643 ............................................ 30 PolinÔmioseaFFT 651 ................................... 30.1 Representação de polinômios 653 .............................................. 30.2 ADFTeaFFT 658 ................................ 30.3 Implementações eficientes de FFT 664 ................................ 31 Algoritmos de teoria dos números 672 ........................... 31.1 Noções de teoria elementar dos números 673 ....................................... 3 1.2 Máximo divisor comum 678 ........................................... 3 1.3 Aritmética modular 682 3 1.4 Resolução de equações lineares modulares .........................6 88 ...................................... 3 1.5 O teorema chinês do resto 691 3 1.6 Potências de um elemento ..................................: ...6 93 ...................... 3 1.7 O sistema de criptografia de chave pública RSA 697 + .................................... 3 1.8 Como testar o caráter primo 702 + .......................................... 3 1.9 Fatoração de inteiros 709 ..................................... 32 Correspondência de cadeias 717 ................... 32.1 O algoritmo simples de correspondência de cadeias 719 32.2 O algoritmo de Rabin.Karp .....................................7 21 ................... 32.3 Correspondência de cadeias com autômatos finitos 725 * ............................... 32.4 O algoritmo de Knuth.Morris.Pratt 730 ....................................... 33 Geometria compiitacional 738 .............................. 33.1 Propriedades de segmentos de linha 738 .............. 33.2 Como determinar se dois segmentos quaisquer se cruzam 743 ............................. 33.3 Como encontrar a envoltória convexa 749 33.4 Localização do par de pontos mais próximos ........................7 56 ....................................... 34 Problemas NP-completos 763 ............................................ 34.1 Tempo polinomial 767 ................................. 34.2 Verificação de tempo polinomial 773 ............................. 34.3 Caráter NP-completo e redutibilidade 776 .................................. 34.4 Provas do caráter NP.completo 785 ....................................... 34.5 Problemas NP.completos 791 ..................................... 35 Algoritmos de aproximação 806 .............................. 35.1 O problema de cobertura de vértices 808 35.2 O problema do caixeiro-viajante .................................8 10 35.3 O problema de cobertura de conjuntos ............................8 15 ............................... 35.4 Aleatoriedade e programação linear 819 ............................. 35.5 O problema de soma de subconjuntos 823 Parte VI11 Apêndice: Fundamentos de matemática ...................................................... Introdução 833 ................................................... A Somatórios 835 A.l Fórmulas e propriedades de somatórios ............................8 35 ....................................... A.2 Como limitar somatórios 838 ....................................... B Conjuntos e outros temas 845 B.l Conjuntos .................................................8.4 5 B.2 Relações ..................................................8.4 9 B.3 Funções ....................................................8 51 B.4 Grafos .....................................................8 53 B.5 Árvores ...................................................8.5 6 ...................................... C Contagem e probabilidade 863 .................................................. C.l Contagem 863 ............................................... C.2 Probabilidade 868 .................................... C.3 Variáveis aleatórias discretas 873 C.4 As distribuições geométrica e binomial ............................8 78 + .......................... C.5 As extremidades da distribuição binomial 883 ...................................................... Bibliografia 8 90

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.