Bibliografia Comentada

algoritmos, machine-learning, criptografia recursos basico

Bibliografia Comentada

Lista de referências por área, com uma indicação honesta de nível e de para que cada livro serve. Vários estão disponíveis legalmente de graça — marcados com (livre).

Matemática discreta

Rosen, Discrete Mathematics and Its Applications. O livro-texto padrão. Amplo, muito bem explicado, com milhares de exercícios. É a escolha certa para quem está começando do zero. Peca por ser longo demais para leitura linear — use como referência por capítulo.

Graham, Knuth e Patashnik, Concrete Mathematics. Escrito para dar a base matemática do TAOCP. Difícil, divertido e insubstituível em somatórios, recorrências e assintótica. As notas de margem são parte do valor. Segunda leitura, não primeira.

Gersting, Mathematical Structures for Computer Science. Alternativa ao Rosen, mais enxuta e mais orientada a computação.

Teoria dos grafos

Diestel, Graph Theory. (livre) — o autor disponibiliza a edição eletrônica. Referência teórica moderna, rigorosa. Não é livro de algoritmos.

West, Introduction to Graph Theory. Mais acessível que o Diestel, com muitos exercícios.

Bondy e Murty, Graph Theory. Amplo, com boa cobertura de aplicações.

Algoritmos

Cormen, Leiserson, Rivest e Stein, Introduction to Algorithms. O CLRS. Enciclopédico, com pseudocódigo e provas completas. É referência, não leitura de cabo a rabo.

Kleinberg e Tardos, Algorithm Design. Melhor que o CLRS para aprender a projetar algoritmos: organiza por técnica e explica o raciocínio que leva à solução.

Knuth, The Art of Computer Programming. Profundidade incomparável e notação própria. Consulta, não leitura sequencial.

Álgebra linear

Strang, Introduction to Linear Algebra. A porta de entrada. As aulas do MIT 18.06 (livres) seguem o livro e são excelentes.

Axler, Linear Algebra Done Right. Trata autovalores antes de determinantes, com foco em estrutura. Ótima segunda leitura; esclarece o que o primeiro curso deixa obscuro.

Trefethen e Bau, Numerical Linear Algebra. As 40 lições são o melhor texto sobre condicionamento, estabilidade e as decomposições que importam na prática.

Golub e Van Loan, Matrix Computations. A referência de quem implementa.

3Blue1Brown, "Essence of Linear Algebra". (livre) — série em vídeo que constrói a intuição geométrica melhor que qualquer texto.

Análise

Spivak, Calculus. A melhor ponte entre cálculo operacional e análise rigorosa.

Rudin, Principles of Mathematical Analysis. O "baby Rudin". Conciso ao extremo; as demonstrações são elegantes e exigem esforço.

Apostol, Mathematical Analysis. Mais expansivo que o Rudin, mais fácil de acompanhar sozinho.

Probabilidade

Ross, A First Course in Probability. Introdução sólida com muitos exercícios.

Mitzenmacher e Upfal, Probability and Computing. Probabilidade escrita para computação desde a primeira página. É o livro certo para quem quer analisar algoritmos aleatorizados.

Motwani e Raghavan, Randomized Algorithms. O clássico da área.

Vershynin, High-Dimensional Probability. (livre) — concentração e aleatoriedade em dimensão alta, com aplicações a ciência de dados.

Grinstead e Snell, Introduction to Probability. (livre) — introdução gratuita e bem escrita.

Análise numérica

Goldberg, "What Every Computer Scientist Should Know About Floating-Point Arithmetic". (livre) — artigo de 1991, ainda insuperável. Leitura obrigatória para quem escreve código numérico.

Higham, Accuracy and Stability of Numerical Algorithms. O tratado sobre erro numérico.

Burden e Faires, Numerical Analysis. Livro-texto padrão, com todos os métodos e análise de erro.

Press et al., Numerical Recipes. Implementações comentadas. Útil pelas discussões práticas; o código não é o melhor disponível.

Teoria dos números e criptografia

Shoup, A Computational Introduction to Number Theory and Algebra. (livre) — teoria dos números do ponto de vista computacional.

Menezes, van Oorschot e Vanstone, Handbook of Applied Cryptography. (livre) — todos os algoritmos, com detalhes de implementação.

Katz e Lindell, Introduction to Modern Cryptography. O tratamento moderno, com definições de segurança precisas. É o livro para entender por que um esquema é seguro, não só como funciona.

Hardy e Wright, An Introduction to the Theory of Numbers. O clássico puro.

Teoria da computação

Sipser, Introduction to the Theory of Computation. A melhor introdução: clara, rigorosa e bem dosada.

Hopcroft, Motwani e Ullman. Mais amplo, com mais algoritmos.

Arora e Barak, Computational Complexity: A Modern Approach. (rascunho livre) — complexidade moderna, além de P e NP.

Garey e Johnson, Computers and Intractability. O catálogo de problemas NP-completos. Ainda a primeira consulta ao suspeitar que um problema é difícil.

Otimização

Boyd e Vandenberghe, Convex Optimization. (livre) — o livro da área, com curso em vídeo de Stanford também gratuito.

Nocedal e Wright, Numerical Optimization. Métodos numéricos de otimização em detalhe.

Chvátal, Linear Programming. Clássico sobre simplex e dualidade.

Aprendizado de máquina

Goodfellow, Bengio e Courville, Deep Learning. (livre) — a parte I é uma excelente revisão da matemática necessária.

Bishop, Pattern Recognition and Machine Learning. (livre) — a referência bayesiana.

Como escolher

Se você quer um livro para começar e a área é computação, comece pelo Rosen (discreta) e pelo Strang (linear). Se já tem base e quer profundidade aplicada, vá para Mitzenmacher e Upfal (probabilidade) e Trefethen e Bau (numérica) — são os dois de maior retorno prático.

Kenneth H. Rosen (2019). Discrete Mathematics and Its Applications. McGraw-Hill. ISBN 9781259676512. Ronald L. Graham and Donald E. Knuth and Oren Patashnik (1994). Concrete Mathematics: A Foundation for Computer Science. Addison-Wesley. ISBN 9780134389967. Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest and Clifford Stein (2009). Introduction to Algorithms. MIT Press. ISBN 9780262533058. Gilbert Strang (2016). Introduction to Linear Algebra. Wellesley-Cambridge Press. ISBN 9780980232776. Lloyd N. Trefethen and David Bau III (1997). Numerical Linear Algebra. SIAM. DOI: 10.1137/1.9780898719574. Michael Mitzenmacher and Eli Upfal (2017). Probability and Computing: Randomization and Probabilistic Techniques. Cambridge University Press. ISBN 9781107154889. Michael Sipser (2012). Introduction to the Theory of Computation. Cengage Learning. ISBN 9781133187790. Stephen Boyd and Lieven Vandenberghe (2004). Convex Optimization. Cambridge University Press. DOI: 10.1017/cbo9780511804441.

Referências

  1. Kenneth H. Rosen (2019). Discrete Mathematics and Its Applications. McGraw-Hill.
  2. Ronald L. Graham; Donald E. Knuth; Oren Patashnik (1994). Concrete Mathematics: A Foundation for Computer Science. Addison-Wesley.
  3. Thomas H. Cormen; Charles E. Leiserson; Ronald L. Rivest; Clifford Stein (2009). Introduction to Algorithms. MIT Press.
  4. Gilbert Strang (2016). Introduction to Linear Algebra. Wellesley-Cambridge Press.
  5. Lloyd N. Trefethen; David Bau III (1997). Numerical Linear Algebra. SIAM.
  6. Michael Mitzenmacher; Eli Upfal (2017). Probability and Computing: Randomization and Probabilistic Techniques. Cambridge University Press.
  7. Michael Sipser (2012). Introduction to the Theory of Computation. Cengage Learning.
  8. Stephen Boyd; Lieven Vandenberghe (2004). Convex Optimization. Cambridge University Press.