Lista de livros introdutórios do TCS para quem não conhece muito o TCS [fechado]
10
Se você precisar recomendar livros para alguém que queira aprender mais sobre o TCS no nível introdutório, como teoria de autômatos, algoritmos, teoria da complexidade, etc., quais livros você recomendaria para aqueles que estão interessados e desejam aprender mais sobre TCS, mas não teve nenhuma exposição a ele?
@Gigili Não. Listas de livros costumavam ser CW, mas isso não é mais feito. Por favor, leia a postagem do blog que eu vinculei.
Gilles 'SO- stop being evil'
Respostas:
9
Se você gostaria de ter uma introdução geral sem se aprofundar nos detalhes técnicos, sugiro Algorithmics de David Harel : The Spirit of Computing . Depois disso, esta é minha lista de favoritos:
Algoritmos de S. Dasgupta, CH Papadimitriou e UV Vazirani: a introdução mais intuitiva a algoritmos com foco mais forte na intuição do que em provas técnicas.
Pérolas de programação de Jon Bentley : este não é um livro sobre algoritmos, mas demonstra lindamente como usar técnicas de design de algoritmos para resolver problemas reais que irritavam programadores reais. :-) Esse pode ser um bom começo se você tiver algum conhecimento prévio sobre programação.
Acho o livro de Clarke um pouco pesado demais para alguém sem formação na TCS. Conheço (pessoalmente) estudantes de doutorado que acham o livro difícil de entender.
Dai
@Dai, provavelmente você está certo, eu mudei-o para Princípios de verificação de modelos de Baier
Daniil
Alguém pode entender a verificação de modelos sem noções básicas de lógica e / ou autômatos?
Raphael
11
O Dragon Book é certamente uma boa referência; é teórico o suficiente? (Sinceramente, não sei)
Raphael
@Raphael "Principles" dá uma introdução à lógica (pelo menos algum conhecimento necessário) e autômatos. Também é um livro muito grande, com ~ 980 páginas. Quanto ao The Dragon Book, eu pensei que os compiladores são uma área bastante teórica, não é?
Daniil
6
Para a matemática necessária na análise de algoritmos, recomendo o primeiro e único GKP:
Matemática Concreta de Graham, Knuth, Patashnik
Um tratamento abrangente e de alta qualidade de praticamente toda a matemática necessária em algoritmos (básicos). É uma leitura divertida e inclui diversos exercícios (e soluções).
Tentei ler este livro, mas não gostei, porque tudo parecia muito ... desajeitado e agrupado. Eu simplesmente não sentia a beleza da matemática lá. Compare isso com o esboço da teoria dos autômatos de Sipsers ou os livros de Smullyan sobre lógica ou mesmo a Álgebra Abstrata de Dummit & Foote. Talvez seja só eu, tho.
21712 Daniil
Eu segundo Daniil. É uma coleção de excelentes ferramentas para teóricos. Mas é muito seco e técnico para ser agradável para iniciantes. Eu realmente gosto dos livros que mencionei acima, pois eles parecem ter suas próprias almas. Eles leem como se alguém estivesse contando histórias interessantes.
Dai
Infelizmente, ele não cobre indução estrutural, coindução, teoria de domínio e todo o material necessário para o TCS no estilo B da teoria.
21412 Dave Clarke
@DaveClarke: Correto. Não sei se esperaria que qualquer livro de matemática contivesse nada disso. Mas então, o GKP deveria ser um livro de matemática-cs. Também não contém lógica, portanto, devo reformular um pouco.
Raphael
2
@DaveClarke, você pode nos recomendar alguns livros sobre matemática da teoria B?
Introdução à Teoria dos Autômatos, Idiomas e Computação JE Hopcroft, JD Ullman, (R. Motwani)
A primeira edição de 1979 apresenta mais resultados teóricos que estão faltando na segunda edição de 2001. Ainda não olhei para o terceiro Ed.
Eu adoraria ter o TAoCP na lista, mas temo que a abordagem meticulosa de Don Knuth não seja nada que possa ser considerado "introdutório". Infelizmente...
Logicomix é certamente uma jóia, sem dizer que os outros não são.
21812 Dave Clarke
Eu realmente não gosto da maneira como Logicomix retratou os lógicos como pessoas "loucas". As idéias na lógica, quando explicadas da maneira correta, são muito simples e simples, e não são realmente "insanas".
Dai
11
@Dai Veja a vida de pessoas extraordinárias como, por exemplo, Gödel, Wittgenstein, Nash, etc. elas foram ... bem extraordinárias.
21312 uli
Quais são realmente à prova de iniciantes?
Raphael
@ Raphael IMHO todos eles, caso contrário, eu não os teria postado aqui. Alguns podem ter uma curva de aprendizado acentuada, mas acho que está tudo bem.
217 uli
4
Se você é totalmente novo no campo do TCS, a Introdução à Teoria da Computação da Sipser é definitivamente o melhor livro para você começar. Li outros livros introdutórios, e nenhum deles, na minha opinião, chega perto da maneira de Sipser de trazer o assunto.
Outros livros teóricos mais específicos e bons são:
@DaveClarke Eu estava planejando adicionar mais recursos à lista como fiz agora com minha edição, mas também queria enfatizar o quão bom é o livro de Sipser, mencionando-o novamente! :-)
Codd
11
O livro de Pierce é uma jóia. Eu gostaria que tivesse existido quando fiz meu doutorado (em tipos).
Dave Clarke
@DaveClarke Atualmente, estou usando-o para minha tese de bacharel por recomendação do meu orientador e também estou muito impressionado com isso!
Codd
11
Obrigado pela referência, vou dar uma olhada hoje mais tarde. Vejo que você é professor na KUL, virei para o ano que vem para estudar o Secure Software (software Veilige). Que mundo pequeno.
Codd
3
Alguns bons livros que cobrem a parte da teoria B do TCS:
Lógica no CS : Lógica em Ciência da Computação: Modelagem e Raciocínio sobre Sistemas Por Michael Huth e Mark Ryan.
Ampla cobertura de vários usos da lógica em ciência da computação. Cerca de terceiro ano de graduação.
O cálculo Lambda : Lambda-Calculus e combinadores. Uma introdução por J. Roger Hindley e Jonathan P. Seldin.
Introduz o cálculo lambda, que é um ingrediente essencial nos fundamentos das linguagens de programação. Cerca de terceiro ano de graduação.
Conduzir para a teoria de domínio : Introdução a Malhas e Ordem (2ª ed.) Por Davey, BA e Priestley, HA Cambridge University Press. (2002)
Abrange um tópico muito útil, especialmente se você planeja trabalhar com semântica. É um pouco mais matemático do que os outros tópicos, mas os primeiros capítulos certamente estão em um nível avançado de graduação.
Semântica : Semântica com Aplicações: Um Aperitivo de Hanne Riis Nielson e Flemming Nielson.
Uma introdução muito boa à semântica da linguagem de programação. Em vez de se aprofundar em qualquer formalismo em particular, ele oferece uma apresentação ampla e inclui aplicativos geralmente não considerados em outros livros sobre semântica. Pode ser útil para alunos do segundo ano do ensino médio.
Eu não conheço nenhum deles nem por reputação, então não posso dizer se eles são bons (mesmo que eu esteja inclinado a aceitar sua palavra). : /
Raphael
11
Eu adicionei uma descrição de cada livro. Todos são bons.
Dave Clarke
3
Esta é uma resposta agregada que contém livros de respostas com pontuação de pelo menos cinco. Por favor, discuta seu conteúdo no chat .
Algoritmos e estruturas de dados
Introdução a Algoritmos por Cormen, Leiserson, Rivest, Stein (3ª ed. 2009)
Um tratamento abrangente de algoritmos básicos e estruturas de dados e suas análises sem se aprofundar muito.
Algoritmos de Dasgupta, Papadimitriou, Vazirani (2006)
A introdução mais intuitiva a algoritmos com foco mais forte na intuição do que em provas técnicas.
Computabilidade e complexidade
Introdução à Teoria da Computação por Sipser (2ª edição, 2005)
A melhor introdução à teoria, computabilidade e complexidade dos autômatos.
Princípios de verificação de modelo por Baier, Katoen (2008)
Livro maciço que pode ser usado como uma introdução abrangente à verificação de modelo.
Programming Pearls, de Jon Bentley (2ª ed. 1999)
Não é um livro sobre algoritmos, mas demonstra lindamente como usar técnicas de design de algoritmos para resolver problemas reais. Pode ser um bom começo se você tiver algum conhecimento prévio sobre programação.
Isso não responde à pergunta ou, se é para isso, não é uma boa resposta. Você quer dizer que alguém que está iniciando o TCS precisa ler todos esses livros? Se não, como eles escolheriam? Lembre-se de que, de acordo com sua regra, é provável que essa resposta cresça e contenha centenas de livros
Gilles 'SO- stop be evil'
@Raphael Você é educado em pedir a alguém para remover sua própria resposta? Geralmente, o próprio solicitante pode agregar suas respostas favoritas modificando o próprio texto da pergunta, mas nunca vi alguém forçar outra pessoa a excluir sua própria postagem para criar sua própria resposta. Essa troca de pilha do cs está ficando estranha com esses comportamentos narcisistas.
Dai
@Raphael: Tornar-se um CW não faz bem pedir a alguém para excluir sua própria resposta. É como dizer que vou escrever um livro / artigo de pesquisa (que publicarei on-line gratuitamente), então eu pergunto a todos os autores cujos artigos eu cito que anotem seus próprios artigos para evitar confusão.
Dai
@Raphael Não vejo nenhum lugar nas licenças CC dizendo que meu trabalho acabará sendo solicitado por outra pessoa. Não sei que tipo de fantasia você tem com o SE, mas definitivamente não é a Wikipedia. Eu sei que você trabalha duro para "moderar" este site, mas também respeite a liberdade de expressão e privacidade de outra pessoa e simplesmente deixe os votos de cima / baixo cuidarem do resto. Acho que o objetivo do cs SE é fornecer um fórum mais amigável do que o cstheory SE para iniciantes, mas o nível micro de gerenciamento que você propôs aqui tornou muito pior.
Respostas:
Se você gostaria de ter uma introdução geral sem se aprofundar nos detalhes técnicos, sugiro Algorithmics de David Harel : The Spirit of Computing . Depois disso, esta é minha lista de favoritos:
fonte
fonte
Para a matemática necessária na análise de algoritmos, recomendo o primeiro e único GKP:
Matemática Concreta de Graham, Knuth, Patashnik
Um tratamento abrangente e de alta qualidade de praticamente toda a matemática necessária em algoritmos (básicos). É uma leitura divertida e inclui diversos exercícios (e soluções).
fonte
Algoritmos 4. Edição R. Sedgewick
Uma Introdução à Análise de Algoritmos P. Flajolet, R. Sedgewick
Introdução à Teoria dos Autômatos, Idiomas e Computação JE Hopcroft, JD Ullman, (R. Motwani)
A primeira edição de 1979 apresenta mais resultados teóricos que estão faltando na segunda edição de 2001. Ainda não olhei para o terceiro Ed.
Introdução à teoria formal da linguagem MA Harrison
É de 1978, mas eu ainda gostaria de vê-lo na lista.
Logicomix: uma busca épica pela verdade A. Doxiadis, CH Papadimitriou
Porque é totalmente incrível!
Novamente, 1979
, Computadores e Intratabilidade de Garey e Johnson : Um Guia para a Teoria da Completude NP
Eu adoraria ter o TAoCP na lista, mas temo que a abordagem meticulosa de Don Knuth não seja nada que possa ser considerado "introdutório". Infelizmente...
fonte
Se você é totalmente novo no campo do TCS, a Introdução à Teoria da Computação da Sipser é definitivamente o melhor livro para você começar. Li outros livros introdutórios, e nenhum deles, na minha opinião, chega perto da maneira de Sipser de trazer o assunto.
Outros livros teóricos mais específicos e bons são:
fonte
Alguns bons livros que cobrem a parte da teoria B do TCS:
Lógica no CS : Lógica em Ciência da Computação: Modelagem e Raciocínio sobre Sistemas Por Michael Huth e Mark Ryan.
Ampla cobertura de vários usos da lógica em ciência da computação. Cerca de terceiro ano de graduação.
O cálculo Lambda : Lambda-Calculus e combinadores. Uma introdução por J. Roger Hindley e Jonathan P. Seldin.
Introduz o cálculo lambda, que é um ingrediente essencial nos fundamentos das linguagens de programação. Cerca de terceiro ano de graduação.
Conduzir para a teoria de domínio : Introdução a Malhas e Ordem (2ª ed.) Por Davey, BA e Priestley, HA Cambridge University Press. (2002)
Abrange um tópico muito útil, especialmente se você planeja trabalhar com semântica. É um pouco mais matemático do que os outros tópicos, mas os primeiros capítulos certamente estão em um nível avançado de graduação.
Semântica : Semântica com Aplicações: Um Aperitivo de Hanne Riis Nielson e Flemming Nielson.
Uma introdução muito boa à semântica da linguagem de programação. Em vez de se aprofundar em qualquer formalismo em particular, ele oferece uma apresentação ampla e inclui aplicativos geralmente não considerados em outros livros sobre semântica. Pode ser útil para alunos do segundo ano do ensino médio.
fonte
Esta é uma resposta agregada que contém livros de respostas com pontuação de pelo menos cinco. Por favor, discuta seu conteúdo no chat .
Algoritmos e estruturas de dados
Um tratamento abrangente de algoritmos básicos e estruturas de dados e suas análises sem se aprofundar muito.
A introdução mais intuitiva a algoritmos com foco mais forte na intuição do que em provas técnicas.
Computabilidade e complexidade
A melhor introdução à teoria, computabilidade e complexidade dos autômatos.
Linguagens formais e autômatos
O livro padrão sobre compiladores; muito abrangente. Também toca na teoria dos autômatos.
Teoria Aplicada
Livro maciço que pode ser usado como uma introdução abrangente à verificação de modelo.
Não é um livro sobre algoritmos, mas demonstra lindamente como usar técnicas de design de algoritmos para resolver problemas reais. Pode ser um bom começo se você tiver algum conhecimento prévio sobre programação.
fonte