Liste de livres d'introduction au TCS pour ceux qui ne connaissent pas grand-chose au TCS [fermé]

10

Si vous devez recommander des livres pour quelqu'un qui veut en savoir plus sur TCS au niveau d'introduction, comme la théorie des automates, l'algorithmique, la théorie de la complexité, etc., quel livre recommanderiez-vous à ceux qui sont intéressés et veulent en savoir plus sur TCS, mais n'y avez pas été exposé?

Ken Li
la source
2
Je pense que cela devrait être une question CW.
Gigili
1
Voir cette méta-discussion sur la façon de gérer cette question.
Raphael
3
cstheory.SE a une liste avancée trop
uli
1
@Gigili Non, le wiki communautaire n'est pas une excuse pour laisser entrer des questions inappropriées .
Gilles 'SO- arrête d'être méchant'
2
@Gigili Non. Les listes de livres étaient auparavant CW, mais ce n'est plus le cas. Veuillez lire le billet de blog que j'ai lié.
Gilles 'SO- arrête d'être méchant'

Réponses:

9

Si vous souhaitez avoir une introduction générale sans entrer dans les détails techniques, je suggère Algorithmics: The Spirit of Computing de David Harel . Après cela, voici ma liste préférée:

  • Introduction de Michael Sipser à la théorie du calcul : la meilleure introduction à la théorie, la calculabilité et la complexité des automates.
  • Algorithmes de S. Dasgupta, CH Papadimitriou et UV Vazirani: l'introduction la plus intuitive aux algorithmes avec un accent sur l'intuition plus fort que les preuves techniques.
  • Programming Pearls de Jon Bentley : ce n'est pas un manuel sur les algorithmes, mais il montre à merveille comment utiliser des techniques de conception d'algorithmes pour résoudre de vrais problèmes qui irritaient les vrais programmeurs. :-) Cela pourrait être un bon début si vous avez des connaissances préalables en programmation.
Dai
la source
DPV n'est pas encore imprimé; est-il généralement connu?
Raphael
En raison du score de cette réponse, j'ai inclus les réponses dans une réponse globale . Veuillez envisager de supprimer votre réponse pour plus de clarté.
Raphael
@Raphael DPV est imprimé depuis plusieurs années, mais il est toujours bien disponible en ligne. J'ai essayé de ne pas créer de lien vers un site Web commercial comme Amazon.
Dai
@Dai: Je vois. La page vers laquelle vous liez indique "Ceci est un avant-dernier projet de notre manuel qui paraîtra bientôt.", D'où ma confusion.
Raphael
7
Daniil
la source
Je trouve le livre de Clarke un peu trop lourd pour quelqu'un sans expérience TCS. Je connais (en personne) des doctorants qui trouvent le livre difficile à comprendre.
Dai
@Dai, vous avez probablement raison, je l'ai changé en Principes de Baier pour la vérification des modèles
Daniil
Peut-on comprendre la vérification des modèles sans les bases des logiques et / ou des automates?
Raphael
1
Le Dragon Book est certainement une bonne référence; est-ce pourtant assez théorique? (Honnêtement, je ne sais pas)
Raphael
@Raphael "Principles" donne un peu une introduction à la logique (au moins quelques connaissances nécessaires) et aux automates. C'est aussi un gros livre, ~ 980 pages. Quant au Dragon Book, je pensais que les compilateurs étaient un domaine plutôt théorique, n'est-ce pas?
Daniil
6

Pour les mathématiques nécessaires à l'analyse d'algorithmes, je recommande le seul et unique GKP:

Concrete Mathematics par Graham, Knuth, Patashnik
Un traitement complet et de haute qualité de pratiquement toutes les mathématiques dont vous aurez besoin en algorithmique (de base). C'est une lecture divertissante et comprend une multitude d'exercices (et de solutions).

Raphael
la source
J'ai essayé de lire ce livre, mais je ne l'aimais pas, car tout cela semblait très ... maladroit et groupé. Je ne ressentais tout simplement pas la beauté des mathématiques là-bas. Comparez cela avec le plan de Sipsers sur la théorie des automates ou les livres de Smullyan sur la logique ou même l'algèbre abstraite de Dummit & Foote. Peut-être que c'est juste moi, tho.
Daniil
J'appuie Daniil. C'est une collection d' excellents outils pour les théoriciens. Mais il est trop sec et technique pour être agréable aux débutants. J'aime vraiment les livres que j'ai mentionnés ci-dessus car ils semblent avoir leur propre âme. Ils lisent comme si quelqu'un vous racontait des histoires intéressantes.
Dai
Malheureusement, il ne couvre pas l'induction structurelle, la coinduction, la théorie des domaines et tout ce qui est nécessaire pour le TCS de style B théorique.
Dave Clarke
@DaveClarke: correct. Je ne suis pas sûr que je m'attendrais à ce qu'un livre de mathématiques-mathématiques contienne tout cela. Mais alors, GKP est censé être un livre cs-math. Il ne contient aucune logique non plus, donc je devrais reformuler un peu.
Raphael
2
@DaveClarke pouvez-vous nous recommander quelques livres sur les mathématiques de la théorie B?
Daniil
5

Algorithmes 4. Édition R. Sedgewick

Une introduction à l'analyse des algorithmes P. Flajolet, R. Sedgewick

Introduction à la théorie, aux langages et au calcul des automates JE Hopcroft, JD Ullman, (R. Motwani)
La première édition de 1979 contient plus de résultats théoriques qui manquent dans la deuxième édition de 2001. Je n'ai pas encore regardé le troisième Ed.

Introduction à la théorie du langage formel MA Harrison
Il date de 1978 mais j'aimerais quand même le voir sur la liste.

Logicomix: une recherche épique de la vérité A. Doxiadis, CH Papadimitriou
Parce que c'est totalement génial!

À nouveau 1979
Les ordinateurs et l'intractabilité de Garey et Johnson : un guide pour la théorie de la NP-complétude

J'adorerais avoir TAoCP sur la liste mais je crains que l'approche méticuleuse de Don Knuth ne soit rien qui puisse être considéré comme «introductif». Tristement...

uli
la source
Logicomix est certainement un joyau, ne disant pas que les autres ne le sont pas.
Dave Clarke
Je n'aime pas vraiment la façon dont Logicomix a décrit les logiciens comme des gens "fous". Les idées en logique, lorsqu'elles sont expliquées de la bonne manière, sont très terre à terre et simples, et pas vraiment «folles».
Dai
1
@Dai Jetez un œil à la vie de gens extraordinaires comme par exemple Gödel, Wittgenstein, Nash, etc. ils étaient ... bien extraordinaires.
uli
Quels sont ceux qui sont vraiment à l'épreuve des débutants?
Raphael
@Raphael IMHO tous, sinon je ne les aurais pas postés ici. Certains peuvent avoir une courbe d'apprentissage abrupte, mais je pense que ça va.
uli
4

Si vous êtes entièrement nouveau dans le domaine du TCS, l' introduction de Sipser à la théorie du calcul est certainement le meilleur livre pour vous aider à démarrer. J'ai lu d'autres livres d'introduction, et aucun d'entre eux, à mon avis, ne se rapproche de la manière dont Sipser a abordé la question.

D'autres bons livres théoriques, plus spécifiques, sont:

codd
la source
Déjà mentionné ci-dessus.
Dave Clarke
@DaveClarke Je comptais ajouter plus de ressources à la liste comme je l'ai fait avec ma modification maintenant, mais je voulais aussi souligner à quel point le livre de Sipser est génial en le mentionnant à nouveau! :-)
codd
1
Le livre de Pierce est un joyau. J'aurais aimé que ça soit là quand j'ai fait mon doctorat (en types).
Dave Clarke
@DaveClarke Je l'utilise actuellement pour ma thèse de baccalauréat sur recommandation de mon conseiller et j'en suis également très impressionné!
codd
1
Merci pour la référence, je vais y jeter un œil plus tard dans la journée. Je vois que vous êtes professeur à la KUL, j'y vais l'année prochaine pour étudier le Secure Software (logiciel Veilige). Que le monde est petit.
codd
3

Quelques bons livres couvrant la partie théorie B du TCS:

  • Logic in CS : Logic in Computer Science: Modeling and Reasoning about Systems Par Michael Huth et Mark Ryan.
    Large couverture des diverses utilisations de la logique en informatique. Environ 3ème année de premier cycle.

  • Le Lambda Calculus : Lambda-Calculus and Combinators. Une introduction de J. Roger Hindley et Jonathan P. Seldin.
    Présente le lambda calcul, qui est un ingrédient essentiel dans les fondements des langages de programmation. Environ 3ème année de premier cycle.

  • Lead in to domain theory : Introduction to Lattices and Order (2e éd.) Par Davey, BA et Priestley, HA Cambridge University Press. (2002).
    Couvre un sujet très utile, surtout si vous prévoyez de travailler avec la sémantique. C'est un peu plus mathématique que les autres sujets, mais les premiers chapitres sont certainement à un niveau avancé de premier cycle.

  • Sémantique : Sémantique avec applications: un apéritif par Hanne Riis Nielson et Flemming Nielson.
    Une très belle introduction à la sémantique du langage de programmation. Plutôt que d'aller au fond d'un formalisme particulier, il donne une présentation large et inclut des applications généralement non prises en compte dans d'autres livres sur la sémantique. Pourrait peut-être être utile pour les étudiants de 2e année.

Dave Clarke
la source
Je ne connais aucun de ceux-là même par réputation, donc je ne peux pas dire s'ils sont bons (même si j'ai tendance à vous croire sur parole). : /
Raphael
1
J'ai ajouté une description de chaque livre. Tout est bien.
Dave Clarke
3

Il s'agit d'une réponse globale qui contient des livres de réponses avec un score d'au moins cinq. Veuillez discuter de son contenu dans le chat .

Algorithmes et structures de données

  • Introduction to Algorithms by Cormen, Leiserson, Rivest, Stein (3rd ed 2009)
    Un traitement complet des algorithmes de base et des structures de données et de leur analyse sans creuser trop profondément.
  • Algorithms by Dasgupta, Papadimitriou, Vazirani (2006)
    L'introduction la plus intuitive aux algorithmes avec un accent plus fort sur l'intuition que les preuves techniques.

Calculabilité et complexité

Langages formels et automates

Théorie appliquée

  • Principes de vérification des modèles par Baier, Katoen (2008)
    Ouvrage massif qui peut être utilisé comme une introduction complète à la vérification des modèles.
  • Programming Pearls par Jon Bentley (2nd ed 1999)
    Pas un manuel sur les algorithmes mais montre magnifiquement comment utiliser des techniques de conception d'algorithmes pour résoudre des problèmes réels. Cela pourrait être un bon début si vous avez des connaissances préalables en programmation.
Raphael
la source
Cela ne répond pas à la question, ou si c'est censé le faire, ce n'est pas une bonne réponse. Voulez-vous dire que quelqu'un qui commence le TCS doit lire tous ces livres? Sinon, comment choisiraient-ils? Gardez à l'esprit que selon votre règle, cette réponse est susceptible de contenir des centaines de livres
Gilles 'SO- arrêtez d'être mauvais'
@Raphael Êtes-vous poli de demander à quelqu'un de retirer sa propre réponse? Habituellement, le demandeur lui-même peut faire le travail d'agrégation de ses réponses préférées en modifiant son propre texte de question, mais je n'ai jamais vu personne forcer une autre personne à supprimer son propre message pour créer sa propre réponse. Cet échange de pile cs devient bizarre avec ces comportements narcissiques.
Dai
@Raphael: En faire un CW ne permet pas de demander à quelqu'un de supprimer sa propre réponse. C'est comme dire que je vais écrire un livre / article d'enquête (que je publierai en ligne gratuitement), alors je vais faire le tour et demander à tous les auteurs dont je cite les articles de retirer leurs propres articles pour éviter toute confusion.
Dai
@Raphael Je ne vois nulle part dans les licences CC dire que mon travail sera finalement demandé par quelqu'un d'autre. Je ne sais pas quel genre de fantaisie vous avez avec SE, mais ce n'est certainement pas Wikipedia. Je sais que vous travaillez dur pour "modérer" ce site Web, mais veuillez également respecter la liberté d'expression et de confidentialité de quelqu'un d'autre, et laissez simplement les votes haut / bas s'occuper du reste. Je pense que le but de cs SE est de fournir un forum plus convivial que cstheory SE aux débutants, mais le niveau de gestion micro que vous avez proposé ici l'a rendu bien pire.
Dai