Problemas Clássicos de Ciência da Computação com Python

Problemas Clássicos de Ciência da Computação com Python
× Problemas Clássicos de Ciência da Computação com Python

Problemas Clássicos de Ciência da Computação com Python

Compartilhar

Autor: David Kopec

ISBN impresso: 978-85-7522-805-0
ISBN ebook: 978-85-7522-806-7
Ano: 2019
Páginas: 272
Preço impresso: R$ 79,00 O ebook deste livro está disponível na Amazon.

5 opiniões | Opine sobre este livro

Descrição do livro

Problemas de ciência da computação aparentemente novos ou ímpares muitas vezes têm raízes em algoritmos clássicos, nas técnicas de programação e em princípios de engenharia. E as abordagens clássicas ainda são a melhor forma de solucioná-los! Compreender essas técnicas em Python faz com que o seu potencial para o sucesso se expanda nas áreas de desenvolvimento web, manipulação de dados, aprendizado de máquina e em outras áreas.

Problemas Clássicos de Ciência da Computação com Python permite aprimorar suas habilidades na resolução de problemas de ciência da computação usando Python, com cenários, exercícios e algoritmos consagrados pelo tempo. Você enfrentará dezenas de desafios de programação, os quais variam de tarefas simples como algoritmos de busca binária a clustering de dados usando k-means. Em particular, você apreciará a sensação de satisfação ao resolver problemas que conectam a ciência da computação com questões reais associadas a aplicativos, dados e desempenho, e até mesmo com o sucesso em sua próxima entrevista de emprego!

O que o livro contém:

  • algoritmos de busca;

  • técnicas comuns para grafos;

  • redes neurais;

  • algoritmos genéticos;

  • busca competitiva;

  • uso de dicas de tipo em todos os códigos.

Ver menos ▲

Sumário

  • Agradecimentos
  • Sobre o autor
  • Sobre a ilustração da capa
  • Introdução
    • Problemas pequenos
    • 1.1 Sequência de Fibonacci
      • 1.1.1 Uma primeira tentativa com recursão
      • 1.1.2 Utilizando casos de base
      • 1.1.3 Memoização para nos salvar
      • 1.1.4 Memoização automática
      • 1.1.5 Fibonacci simples
      • 1.1.6 Gerando números de Fibonacci com um gerador
    • 1.2 Compactação trivial
    • 1.3 Criptografia inquebrável
      • 1.3.1 Deixando os dados em ordem
      • 1.3.2 Criptografando e descriptografando
    • 1.4 Calculando pi
    • 1.5 Torres de Hanói
      • 1.5.1 Modelando as torres
      • 1.5.2 Solucionando as Torres de Hanói
    • 1.6 Aplicações no mundo real
    • 1.7 Exercícios
      • Problemas de busca
    • 2.1 Busca em DNA
      • 2.1.1 Armazenando um DNA
      • 2.1.2 Busca linear
      • 2.1.3 Busca binária
      • 2.1.4 Um exemplo genérico
    • 2.2 Resolução de labirintos
      • 2.2.1 Gerando um labirinto aleatório
      • 2.2.2 Miscelânea de minúcias sobre labirintos
      • 2.2.3 Busca em profundidade
      • 2.2.4 Busca em largura
      • 2.2.5 Busca A*
    • 2.3 Missionários e canibais
      • 2.3.1 Representando o problema
      • 2.3.2 Solução
    • 2.4 Aplicações no mundo real
    • 2.5 Exercícios
      • Problemas de satisfação de restrições
    • 3.1 Construindo um framework para problemas de satisfação de restrições
    • 3.2 Problema de coloração do mapa da Austrália
    • 3.3 Problema das oito rainhas
    • 3.4 Caça-palavras
    • 3.5 SEND+MORE=MONEY
    • 3.6 Layout de placa de circuitos
    • 3.7 Aplicações no mundo real
    • 3.8 Exercícios
      • Problemas de grafos
    • 4.1 Mapa como um grafo
    • 4.2 Construindo um framework de grafos
      • 4.2.1 Trabalhando com Edge e Graph
    • 4.3 Encontrando o caminho mínimo
      • 4.3.1 Retomando a busca em largura (BFS)
    • 4.4 Minimizando o custo de construção da rede
      • 4.4.1 Trabalhando com pesos
      • 4.4.2 Encontrando a árvore geradora mínima
    • 4.5 Encontrando caminhos mínimos em um grafo com peso
      • 4.5.1 Algoritmo de Dijkstra
    • 4.6 Aplicações no mundo real
    • 4.7 Exercícios
      • Algoritmos genéticos
    • 5.1 Background em biologia
    • 5.2 Algoritmo genético genérico
    • 5.3 Teste simples
    • 5.4 Revendo SEND+MORE=MONEY
    • 5.5 Otimizando a compactação de listas
    • 5.6 Desafios para os algoritmos genéticos
    • 5.7 Aplicações no mundo real
    • 5.8 Exercícios
      • Clustering k-means
    • 6.1 Informações preliminares
    • 6.2 Algoritmo de clustering k-means
    • 6.3 Clustering de governadores por idade e longitude
    • 6.4 Clustering de álbuns do Michael Jackson por tamanho
    • 6.5 Problemas e extensões do clustering k-means
    • 6.6 Aplicações no mundo real
    • 6.7 Exercícios
      • Redes neurais relativamente simples
    • 7.1 Base biológica?
    • 7.2 Redes neurais artificiais
      • 7.2.1 Neurônios
      • 7.2.2 Camadas
      • 7.2.3 Retropropagação
      • 7.2.4 Visão geral
    • 7.3 Informações preliminares
      • 7.3.1 Produto escalar
      • 7.3.2 Função de ativação
    • 7.4 Construindo a rede
      • 7.4.1 Implementando os neurônios
      • 7.4.2 Implementando as camadas
      • 7.4.3 Implementando a rede
    • 7.5 Problemas de classificação
      • 7.5.1 Normalizando dados
      • 7.5.2 Conjunto clássico de dados de amostras de íris
      • 7.5.3 Classificando vinhos
    • 7.6 Agilizando as redes neurais
    • 7.7 Problemas e extensões das redes neurais
    • 7.8 Aplicações no mundo real
    • 7.9 Exercícios
      • Busca competitiva
    • 8.1 Componentes básicos de jogos de tabuleiro
    • 8.2 Jogo da velha
      • 8.2.1 Administrando os estados do jogo da velha
      • 8.2.2 Minimax
      • 8.2.3 Testando o minimax com o jogo da velha
      • 8.2.4 Desenvolvendo uma IA para o jogo da velha
    • 8.3 Connect Four
      • 8.3.1 Peças do jogo Connect Four
      • 8.3.2 Uma IA para o Connect Four
      • 8.3.3 Aperfeiçoando o minimax com a poda alfa-beta
    • 8.4 Melhorias no minimax além da poda alfa-beta
    • 8.5 Aplicações no mundo real
    • 8.6 Exercícios
      • Problemas diversos
    • 9.1 Problema da mochila
    • 9.2 Problema do Caixeiro-Viajante
      • 9.2.1 Abordagem ingênua
      • 9.2.2 Avançando para o próximo nível
    • 9.3 Dados mnemônicos para números de telefone
    • 9.4 Aplicações no mundo real
    • 9.5 Exercícios
      • Glossário
      • Outros recursos
    • B 1 Python
    • B 2 Algoritmos e estruturas de dados
    • B 3 Inteligência artificial
    • B 4 Programação funcional
    • B 5 Projetos de código aberto convenientes para aprendizado de máquina
      • Introdução rápida às dicas de tipo
    • C 1 O que são dicas de tipo?
    • C 2 Como é a aparência das dicas de tipo?
    • C 3 Por que as dicas de tipo são úteis?
    • C 4 Quais são as desvantagens das dicas de tipo?
    • C 5 Obtendo mais informações
  • Índice remissivo
Ver sumário completo ▼

Sobre o autor

David Kopec

David Kopec é professor-assistente de Ciência da Computação & Inovação no Champlain College em Burlington, Vermont. É autor de Dart for Absolute Beginners (Apress, 2014) e Classic Computer Science Problems in Swift (Manning, 2018).… Ver perfil completo ▶

Opinião dos leitores

Victor A P O

O livro é muito bom, e o autor mostra domínio de quase todos os problemas abordados. Problemas Clássicos de Ciência da Computação com Python é uma forma de viajar a passeio para a cidade natal, revisitando os pontos turísticos que marcaram a infância (ok, tentei criar uma metáfora aqui, pra o tempo da graduação ;). Na minha opinião, o livro é pra quem tem um nível intermediário em Python, e conhecimentos avançados de programação. Em suma, é um livro de nível avançado. Acredito que o único ponto negativo tenha sido o fato de o autor usar anotações de tipo. Apesar dos esforços do autor em empregar o recurso pra ajudar, às vezes, acaba atrapalhando. Fato é que ele mesmo comenta isso na introdução. Por fim, expresso minha opinião: recomendo.

Israel G de O

O livro é excelente! Guia o leitor numa prática com uma quantidade boa de teoria. Atualizado e cheio de dicas úteis sobre Python. Recomendo fortemente para quem quer se aprimorar em Python, mesmo que já conheça os temas. Segundo meus colegas da área da ciência da computação, o livro vale muito a pena sim. Eu sou físico e cientista de dados, para mim está sendo muito produtivo e prazeroso estudar pelo livro.

Jorge L C

Estou gostando muito do livro. Além do aspecto matemático, comentando o tema abordado, implementa as propostas em Python. Recomendo.

Ronald B F

Uma excelente referência para ter na sua biblioteca, pois o livro traz muitos dos problemas clássicos da computação e seus códigos em Python. Didático, serve de consulta para os mais experientes e de estudo para os iniciantes.

Ver todas ▼