Projeto de Algoritmos com Implementaes em Java e C++

Um projeto de Nivio Ziviani, Ph.D. Professor Emrito do Departamento de Cincia da Computao Universidade Federal de Minas Gerais
Consultoria em Java e C++ de Fabiano Cupertino Botelho, M.Sc.

Editora: Pioneira Thomson


» capítulos


Capítulos do Livro

Capítulo 1: Introdução

  1. Algoritmos, Estrutura de Dados e Programas
  2. Tipos de Dados e Tipos Abstratos de Dados
  3. Medida do Tempo de Execução de um Programa
    1. Comportamento Assintótico de Funções
    2. Classes de Comportamento Assintótico
  4. Técnicas de Análise de Algoritmos
  5. Java
    1. Programação Orientada a Objetos
    2. Principais Componentes de um Programa em Java
    3. Diferenças entre Java e C++
  6. Notas Bibliográficas
  7. Exercícios

Capítulo 2: Paradigmas de Projeto de Algoritmos

  1. Indução
  2. Recursividade
    1. Como Implementar Recursividade
    2. Quando Não Usar Recursividade
  3. Algoritmos Tentativa e Erro
  4. Divisão e Conquista
  5. Balanceamento
  6. Programação Dinâmica
  7. Algoritmos Gulosos
  8. Algoritmos Aproximados
  9. Notas Bibliográficas
  10. Exercícios

Capítulo 3: Estruturas de Dados Básicas

  1. Listas Lineares
    1. Implementação de Listas por meio de Arranjos
    2. Implementação de Listas por meio de Ap Estruturas Auto-Referenciadas
  2. Pilhas
    1. Implementação de Pilhas por meio de Arranjos
    2. Implementação de Pilhas por meio de Ap Estruturas Auto-Referenciadas
  3. Filas
    1. Implementação de Filas por meio de Arranjos
    2. Implementação de Filas por meio de Ap Estruturas Auto-Referenciadas
  4. Notas Bibliográficas
  5. Exercícios

Capítulo 4: Ordenação

  1. Ordenação Interna
    1. Ordenação por Seleção
    2. Ordenação por Inserção
    3. Shellsort
    4. Quicksort
    5. Heapsort
    6. Comparação entre os Métodos
    7. Ordenação Parcial
  2. Ordenação Externa
    1. Intercalação Balanceada de Vários Caminhos
    2. Implementação por meio de Seleção por Substituição
    3. Considerações Práticas
    4. Intercalação Polifásica
    5. Quicksort Externo
  3. Notas Bibliográficas
  4. Exercícios

Capítulo 5: Pesquisa em Memória Primária

  1. Pesquisa Sequencial
  2. Pesquisa Binária
  3. Árvores de Pesquisa
    1. Árvores Binárias de Pesquisa sem Balanceamento
    2. Árvores Binárias de Pesquisa com Balanceamento
  4. Pesquisa Digital
    1. Trie
    2. Patricia
  5. Transformação de Chave (Hashing)
    1. Funções de Transformação
    2. Listas Encadeadas
    3. Endereçamento Aberto
    4. Hashing Perfeito
  6. Notas Bibliográficas
  7. Exercícios

Capítulo 6: Pesquisa em Memória Secundária

  1. Modelo de Computação para Memória Secundária
    1. Memória Virtual
    2. Implementação de um Sistema de Paginação
  2. Acesso Sequencial Indexado
    1. Discos Óticos de Apenas-Leitura
  3. Árvores de Pesquisa
    1. Árvores B
    2. Árvores B*
    3. Acesso Concorrente em Árvores B*
    4. Considerações Práticas
  4. Notas Bibliográficas
  5. Exercícios

Capítulo 7: Algoritmos em Grafos

  1. Definições Básicas
  2. O Tipo Abstrato de Dados Grafo
    1. Implementação por meio de Matrizes de Adjacência
    2. Implementação por meio de Listas de Adjacência Usando ApoEstruturas Auto-Referenciadas
    3. Implementação por meio de Listas de Adjacência Usando Arranjos
    4. Programa Teste Para Três Implementações
  3. Busca em Profundidade
    1. Classificação de Arestas
    2. Teste para Verificar se Grafo é Acíclico
  4. Busca em Largura
  5. Ordenação Topológica
  6. Componentes Fortemente Conectados
  7. Árvore Geradora Mínima
    1. Algorítmo Genérico Para Obter a Árvore Geradora Mínima
    2. Algorítmo de Prim
    3. Algorítmo de Kruskal
  8. Caminhos Mais Curtos
  9. O Tipo Abstrato de Dados Hipergrafo
  10. Notas Bibliográficas
  11. Exercícios

Capítulo 8: Processamento de Cadeias de Caracteres

  1. Casamento de Cadeias
    1. Casamento Exato
    2. Casamento Aproximado
  2. Compreessão
    1. Por que Usar Compressão
    2. Compressão de Textos em Linguagem Natural
    3. Codificação de Huffman Usando Bytes
    4. Pesquisa em Texto Comprimido
  3. Notas Bibliográficas
  4. Exercícios

Capítulo 9:

  1. Problemas NP-Completo
    1. Algoritmos Não-Deterministas
    2. As Classes NP-Completo e NP-Difícil
  2. Heurísticas e Algoritmos Aproximados
    1. Algoritmos Exponenciais Usando Tentativa e Erro
    2. Heurísticas para Problemas NP-Completo
    3. Algoritmos Aproximados para Problemas NP-Completo
  3. Notas Bibliográficas
  4. Exercícios

Apendices:

  1. A Programas em C++ do Capítulo 1
  2. B Programas em C++ do Capítulo 2
  3. C Programas em C++ do Capítulo 3
  4. D Programas em C++ do Capítulo 4
  5. E Programas em C++ do Capítulo 5
  6. F Programas em C++ do Capítulo 6
  7. G Programas em C++ do Capítulo 7
  8. H Programas em C++ do Capítulo 8
  9. I Programas em C++ do Capítulo 9
  10. J Programas em C++ do Apêndice K
  11. K Respostas para Exercícios Selecionados
  12. Caracteres ASCII
  13. Referências Bibliográficas
  14. Índice Remissivo

Produzido por Tambor Comunicao