Entendendo Algoritmos

Um guia ilustrado para programadores e outros curiosos

Entendendo Algoritmos Esgotado
× Entendendo Algoritmos

Entendendo Algoritmos

Compartilhar

Autor: Aditya Y. Bhargava

ISBN impresso: 978-85-7522-563-9
ISBN ebook: 978-85-7522-662-9
Ano: 2017
Páginas: 264
Preço impresso: R$ 75,00 O ebook deste livro está disponível na Amazon.

8 opiniões | Opine sobre este livro

Descrição do livro

Um guia ilustrado para programadores e outros curiosos.

Um algoritmo nada mais é do que um procedimento passo a passo para a resolução de um problema. Os algoritmos que você mais utilizará como um programador já foram descobertos, testados e provados. Se você quer entendê-los, mas se recusa a estudar páginas e mais páginas de provas, este é o livro certo. Este guia cativante e completamente ilustrado torna simples aprender como utilizar os principais algoritmos nos seus programas.

O livro Entendendo Algoritmos apresenta uma abordagem agradável para esse tópico essencial da ciência da computação. Nele, você aprenderá como aplicar algoritmos comuns nos problemas de programação enfrentados diariamente. Você começará com tarefas básicas como a ordenação e a pesquisa. Com a prática, você enfrentará problemas mais complexos, como a compressão de dados e a inteligência artificial. Cada exemplo é apresentado em detalhes e inclui diagramas e códigos completos em Python. Ao final deste livro, você terá dominado algoritmos amplamente aplicáveis e saberá quando e onde utilizá-los.

O que este livro inclui

  • A abordagem de algoritmos de pesquisa, ordenação e algoritmos gráficos

  • Mais de 400 imagens com descrições detalhadas

  • Comparações de desempenho entre algoritmos

  • Exemplos de código em Python

Este livro de fácil leitura e repleto de imagens é destinado a programadores autodidatas, engenheiros ou pessoas que gostariam de recordar o assunto.

Ver menos ▲

Sumário

  • Prefácio
  • Agradecimentos
  • Sobre este livro
  • Introdução
    • O que você aprenderá sobre desempenho
    • O que você aprenderá sobre a solução de problemas
  • Pesquisa binária
    • Uma maneira melhor de buscar
    • Tempo de execução
  • Notação Big O
    • Tempo de execução dos algoritmos cresce a taxas diferentes
    • Vendo diferentes tempos de execução Big O
    • A notação Big O estabelece o tempo de execução para a pior hipótese
    • Alguns exemplos comuns de tempo de execução Big O
    • O caixeiro-viajante
  • Recapitulando
  • Como funciona a memória
  • Arrays e listas encadeadas
    • Listas encadeadas
    • Arrays
    • Terminologia
    • Inserindo algo no meio da lista
    • Deleções
  • Ordenação por seleção
  • Recapitulando
  • Recursão
  • Caso-base e caso recursivo
  • A pilha
    • A pilha de chamada
    • A pilha de chamada com recursão
  • Recapitulando
  • Dividir para conquistar
  • Quicksort
  • Notação Big O revisada
    • Merge sort versus quicksort
    • Caso médio versus pior caso
  • Recapitulando
  • Funções hash
  • Utilização
    • Usando tabelas hash para pesquisas
    • Evitando entradas duplicadas
    • Utilizando tabelas hash como cache
    • Recapitulando
  • Colisões
  • Desempenho
    • Fator de carga
    • Uma boa função hash
  • Recapitulando
  • Introdução a grafos
  • O que é um grafo?
  • Pesquisa em largura
    • Encontrando o caminho mínimo
    • Filas
  • Implementando o grafo
  • Implementando o algoritmo
    • Tempo de execução
  • Recapitulando
  • Trabalhando com o algoritmo de Dijkstra
  • Terminologia
  • Adquirindo um piano
  • Arestas com pesos negativos
  • Implementação
  • Recapitulando
  • O problema do cronograma da sala de aula
  • O problema da mochila
  • O problema da cobertura de conjuntos
    • Algoritmos de aproximação
  • Problemas NP-completos
    • Caixeiro-viajante, passo a passo
    • Como faço para saber se um problema é NP-completo?
  • Recapitulando
  • O problema da mochila
    • A solução simples
    • Programação dinâmica
  • Perguntas frequentes sobre o problema da mochila
    • O que acontece se você adicionar um item?
    • O que acontece se você modificar a ordem das linhas?
    • É possível preencher a tabela a partir das colunas, em vez de a partir das linhas?
    • O que acontece se você adicionar um item menor?
    • Você consegue roubar frações de um item?
    • Otimizando o seu itinerário de viagem
    • Lidando com itens com interdependência
    • É possível que a solução requeira mais de dois subproblemas?
    • É possível que a melhor solução não utilize a capacidade total da mochila?
  • Maior substring comum
    • Criando a tabela
    • Preenchendo a tabela
    • A solução
    • Maior subsequência comum
    • Maior subsequência comum – solução
  • Recapitulando
  • Classificando laranja versus toranjas
  • Criando um sistema de recomendações
    • Extração de características
    • Regressão
    • Escolhendo boas características
  • Introdução ao aprendizado de máquina
    • OCR
    • Criando um filtro de spam
    • Prevendo a bolsa de valores
  • Recapitulando
  • Árvores
  • Índices invertidos
  • A transformada de Fourier
  • Algoritmos paralelos
  • MapReduce
    • Por que os algoritmos distribuídos são úteis?
    • Função map
    • Função reduce
  • Filtro de Bloom e HyperLogLog
    • Filtros de Bloom
    • HyperLogLog
  • Algoritmos SHA
    • Comparando arquivos
    • Verificando senhas
  • Hash sensitivo local
  • Troca de chaves de Diffie-Hellman
  • Programação linear
  • Epílogo
Ver sumário completo ▼

Sobre o autor

Aditya Y. Bhargava

Aditya Bhargava é um engenheiro de software com experiência tanto em Ciência da Computação quanto em Artes Plásticas. Ele tem um blog sobre programação em adit.io.… Ver perfil completo ▶

Opinião dos leitores

Cristóvão C

Muito boa a didática adotada e os exemplos... fiquei um gostinho de quero mais!

Welton V de S

O livro é muito básico, mas extremamente importante. Principalmente se vc quer aprender a programar bem! O livro é fácil de ler, já li duas vezes, apesar de alguns pequenos erros, ensina muita coisa, que não se vê em curso de programação ou faculdades.

Antonio F V de S

Didático, simples, direto. Excelente!

Gabriel B

Muito bom o livro. Uma linguagem bem leve e divertida para entender e relembrar como funcionam todos aqueles conceitos que aprendemos lá no começo dos cursos.

Ver todas ▼