Daftar buku TCS intro untuk mereka yang tidak tahu banyak tentang TCS [ditutup]

10

Jika Anda harus merekomendasikan buku untuk seseorang yang ingin mempelajari lebih lanjut tentang TCS di tingkat pengantar seperti teori automata, algoritme, teori kompleksitas, dll., Buku apa yang akan Anda rekomendasikan untuk mereka yang tertarik dan ingin mempelajari lebih lanjut tentang TCS TCS, tetapi tidak memiliki eksposur ke sana?

Ken Li
sumber
2
Saya pikir ini harus menjadi pertanyaan CW.
Gigili
1
Lihat diskusi meta ini tentang bagaimana mengelola pertanyaan ini.
Raphael
3
cstheory.SE memiliki daftar canggih juga
uli
1
@Gigili Tidak, wiki komunitas bukan alasan untuk membiarkan pertanyaan yang tidak cocok masuk .
Gilles 'SANGAT berhenti menjadi jahat'
2
@Gigili No. Daftar buku yang dulunya CW, tapi itu tidak lagi dilakukan. Harap baca posting blog yang saya tautkan.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

9

Jika Anda ingin memiliki pengantar umum tanpa masuk ke rincian teknis, saya sarankan Algoritma David Harel : The Spirit of Computing . Setelah itu, ini daftar favorit saya:

  • Pengantar Michael Sipser untuk Teori Komputasi : pengantar terbaik untuk teori automata, komputabilitas dan kompleksitas.
  • Algoritma oleh S. Dasgupta, CH Papadimitriou, dan UV Vazirani: pengantar paling intuitif untuk algoritma dengan fokus yang lebih kuat pada intuisi daripada bukti teknis.
  • Pemrograman Mutiara karya Jon Bentley : ini bukan buku teks tentang algoritma, tetapi ini menunjukkan dengan indah bagaimana menggunakan teknik desain algoritma untuk memecahkan masalah nyata yang membuat programmer marah. :-) Ini mungkin awal yang baik jika Anda memiliki pengetahuan awal tentang pemrograman.
Dai
sumber
DPV belum dicetak; apakah itu diketahui secara umum?
Raphael
Karena skor jawaban ini, saya memasukkan jawaban dalam jawaban agregat . Harap pertimbangkan untuk menghapus jawaban Anda demi kejelasan.
Raphael
@Raphael DPV telah dicetak selama beberapa tahun, tetapi masih tersedia secara online. Saya mencoba untuk tidak menautkan ke situs web komersial seperti amazon.
Dai
@Dai: Begitu. Halaman yang Anda tautkan dengan mengatakan "Ini adalah draft kedua dari buku teks kami yang akan segera muncul.", Oleh karena itu kebingungan saya.
Raphael
7
  • Pengantar Algoritma oleh Cormen, Leiserson, Rivest, Stein adalah pilihan yang populer, judul berbicara untuk dirinya sendiri.
  • Penyusun: Prinsip, Teknik, Dan Alat oleh Aho, Ulman dan Sethi adalah buku yang bagus tentang penyusun, memiliki beberapa bahan pengantar tentang teori automata juga.
  • Prinsip Memeriksa Model adalah buku besar yang dapat digunakan sebagai pengantar untuk pengecekan model
Daniil
sumber
Saya menemukan buku Clarke agak terlalu berat untuk seseorang tanpa latar belakang TCS. Saya tahu (secara langsung) mahasiswa PhD yang menemukan buku itu sulit untuk dipahami.
Dai
@ Hai, Anda mungkin benar, saya telah mengubahnya ke Prinsip Memeriksa Model Baier
Daniil
Bisakah seseorang memahami pengecekan model tanpa dasar-dasar dalam logika dan / atau automata?
Raphael
1
Buku Naga tentu saja merupakan referensi yang bagus; apakah ini cukup teoretis? (Jujur saya tidak tahu)
Raphael
@Raphael "Prinsip" agak memberikan pengantar logika (setidaknya beberapa pengetahuan yang diperlukan) dan automata. Ini buku yang cukup besar juga, ~ 980 halaman. Sedangkan untuk The Dragon Book, saya pikir kompiler adalah area yang agak teoretis, bukan?
Daniil
6

Untuk matematika yang diperlukan dalam analisis algoritma, saya merekomendasikan satu-satunya GKP:

Matematika Beton oleh Graham, Knuth, Patashnik
Perlakuan yang komprehensif dan berkualitas tinggi dari hampir semua matematika yang Anda perlukan dalam algoritme (dasar). Ini adalah bacaan yang menghibur dan mencakup banyak latihan (dan solusi).

Raphael
sumber
Saya mencoba membaca buku ini, tetapi saya tidak menyukainya, karena semuanya terasa sangat ... canggung dan bergerombol. Aku hanya tidak merasakan keindahan matematika di sana. Bandingkan dengan garis besar teori automata Sipsers atau buku-buku Smullyan tentang logika atau bahkan Aljabar Abstrak Dummit & Foote. Mungkin itu hanya aku, tho.
Daniil
Aku yang kedua Daniil. Ini adalah koleksi alat yang sangat baik untuk para ahli teori. Tetapi terlalu kering dan teknis untuk menyenangkan bagi pemula. Saya sangat suka buku-buku yang saya sebutkan di atas karena mereka tampaknya memiliki jiwa mereka sendiri. Mereka membaca seolah-olah seseorang sedang bercerita kepada Anda, yang menarik.
Dai
Sayangnya, itu tidak mencakup induksi struktural, coinduction, teori domain, dan semua hal yang diperlukan untuk Teori B-style TCS.
Dave Clarke
@DaveClarke: Benar. Saya tidak yakin saya akan mengharapkan buku matematika-matematika mengandung semua itu. Tapi kemudian, GKP seharusnya menjadi buku cs-matematika. Ini tidak mengandung logika, jadi saya harus ulangi sedikit.
Raphael
2
@DaveClarke dapatkah Anda merekomendasikan kami beberapa buku tentang matematika Theory B?
Daniil
5

Algoritma 4. Edisi R. Sedgewick

Pengantar Analisis Algoritma P. Flajolet, R. Sedgewick

Pengantar Teori Automata, Bahasa, dan Komputasi JE Hopcroft, JD Ullman, (R. Motwani)
Edisi pertama 1979 memiliki lebih banyak hasil teoritis yang hilang dalam Edisi kedua 2001. Belum melihat Ed ketiga.

Pengantar teori bahasa formal MA Harrison Berasal
dari tahun 1978 tetapi saya masih ingin melihatnya dalam daftar.

Logicomix: Pencarian Epik untuk Kebenaran A. Doxiadis, CH Papadimitriou
Karena itu benar-benar luar biasa!

Sekali lagi 1979
Garey dan Johnson's Computers and Intractability: A Guide to Theory of NP-Completeness

Saya ingin memasukkan TAoCP dalam daftar, tetapi saya khawatir, bahwa pendekatan Don Knuth yang teliti bukanlah apa-apa yang dapat dianggap sebagai "pengantar". Dengan sedih...

uli
sumber
Logicomix jelas merupakan permata, tidak mengatakan bahwa yang lain tidak.
Dave Clarke
Saya tidak begitu suka cara Logicomix menggambarkan Logicians sebagai jenis orang "gila". Ide-ide dalam logika ketika dijelaskan dengan cara yang benar sangat sederhana dan sederhana, dan tidak benar-benar "gila".
Dai
1
@Dai Lihatlah kehidupan orang-orang luar biasa seperti misalnya Gödel, Wittgenstein, Nash, dll. Mereka ... sangat luar biasa.
uli
Yang mana dari mereka yang benar-benar pemula?
Raphael
@ Raphael IMHO mereka semua, kalau tidak saya tidak akan mempostingnya di sini. Beberapa mungkin memiliki kurva belajar yang curam tetapi saya pikir tidak apa-apa.
uli
4

Jika Anda sepenuhnya baru di bidang TCS maka Pengantar Sipser untuk Teori Komputasi jelas merupakan buku terbaik untuk Anda mulai. Saya telah membaca buku-buku pengantar lainnya, dan tidak satu pun dari mereka, menurut pendapat saya, mendekati cara Sipser membawa masalah ini.

Buku-buku teori lain yang lebih spesifik dan bagus adalah:

codd
sumber
Sudah disebutkan di atas.
Dave Clarke
@DaveClarke saya berencana untuk menambahkan lebih banyak sumber daya ke dalam daftar seperti yang saya lakukan dengan hasil edit saya sekarang, tetapi saya juga ingin menekankan betapa hebatnya buku Sipser dengan menyebutkannya lagi! :-)
codd
1
Buku Pierce adalah permata. Saya berharap itu sudah ada ketika saya melakukan PhD (dalam tipe).
Dave Clarke
@DaveClarke Saat ini saya menggunakannya untuk tesis sarjana saya dengan rekomendasi dari penasihat saya dan saya juga sangat terkesan dengan itu!
codd
1
Terima kasih untuk referensi, saya akan memeriksanya nanti hari ini. Saya melihat bahwa Anda adalah seorang profesor di KUL, saya datang ke sana tahun depan untuk mempelajari Secure Software (perangkat lunak Veilige). Dunia yang kecil.
codd
3

Beberapa buku bagus yang meliput Teori B bagian dari TCS:

  • Logika dalam CS : Logika dalam Ilmu Komputer: Pemodelan dan Penalaran tentang Sistem Oleh Michael Huth dan Mark Ryan.
    Cakupan luas berbagai penggunaan logika dalam ilmu komputer. Tentang tingkat sarjana tahun ke-3.

  • The Lambda Calculus : Lambda-Calculus and Combinators. Pengantar oleh J. Roger Hindley dan Jonathan P. Seldin.
    Memperkenalkan kalkulus lambda, yang merupakan unsur penting dalam dasar bahasa pemrograman. Tentang tingkat sarjana tahun ke-3.

  • Mengarah ke teori domain : Pengantar Lattices and Order (edisi kedua) oleh Davey, BA dan Priestley, HA Cambridge University Press. (2002).
    Mencakup topik yang sangat berguna, terutama jika Anda berencana untuk bekerja dengan semantik. Ini sedikit lebih matematis daripada topik lainnya, tetapi bab-bab awal tentu saja pada tingkat sarjana lanjutan.

  • Semantik : Semantik dengan Aplikasi: An Appetizer oleh Hanne Riis Nielson dan Flemming Nielson.
    Pengantar yang sangat bagus untuk semantik bahasa pemrograman. Alih-alih masuk ke formalisme tertentu, ia memberikan presentasi yang luas dan mencakup aplikasi yang umumnya tidak dipertimbangkan dalam buku-buku lain tentang semantik. Mungkin berguna untuk mahasiswa tahun ke-2.

Dave Clarke
sumber
Saya tidak tahu satu pun dari mereka bahkan oleh reputasi, jadi saya tidak bisa mengatakan apakah mereka baik (meskipun saya cenderung mengambil kata-kata Anda untuk itu). : /
Raphael
1
Saya telah menambahkan deskripsi setiap buku. Semuanya baik.
Dave Clarke
3

Ini adalah jawaban agregat yang berisi buku-buku dari jawaban dengan skor setidaknya lima. Tolong diskusikan isinya dalam obrolan .

Algoritma & Struktur Data

  • Pengantar Algoritma oleh Cormen, Leiserson, Rivest, Stein (edisi ke-3 2009)
    Perawatan komprehensif dari algoritma dasar dan struktur data dan analisis mereka tanpa menggali terlalu dalam.
  • Algoritma oleh Dasgupta, Papadimitriou, Vazirani (2006)
    Pengantar paling intuitif untuk algoritma dengan fokus yang lebih kuat pada intuisi daripada bukti teknis.

Komputasi & Kompleksitas

  • Pengantar Teori Komputasi oleh Sipser (edisi 2 2005)
    Pengantar terbaik untuk teori automata, komputabilitas dan kompleksitas.

Bahasa Resmi & Automata

Teori Terapan

  • Principles of Model Checking oleh Baier, Katoen (2008)
    Buku masif yang dapat digunakan sebagai pengantar komprehensif untuk pengecekan model.
  • Pemrograman Mutiara oleh Jon Bentley (2nd ed 1999)
    Bukan buku teks tentang algoritma tetapi menunjukkan dengan indah bagaimana menggunakan teknik desain algoritma untuk memecahkan masalah nyata. Mungkin awal yang baik jika Anda memiliki pengetahuan awal tentang pemrograman.
Raphael
sumber
Ini tidak menjawab pertanyaan, atau jika memang dimaksudkan, itu bukan jawaban yang baik. Apakah maksud Anda seseorang yang memulai TCS perlu membaca semua buku ini? Jika tidak, bagaimana mereka memilih? Ingatlah bahwa menurut aturan Anda, jawaban ini kemungkinan akan bertambah berisi ratusan buku
Gilles 'SO- stop being evil'
@ Raphael Apakah Anda sopan untuk meminta orang lain untuk menghapus jawabannya sendiri? Biasanya si penanya sendiri dapat melakukan agregasi jawaban favoritnya dengan memodifikasi teks pertanyaannya sendiri, tetapi saya belum pernah melihat orang yang memaksa orang lain untuk menghapus posnya sendiri untuk membuat jawaban sendiri. Cs stackexchange ini semakin aneh dengan perilaku narsis ini.
Dai
@Raphael: Menjadikannya sebagai CW tidak berarti meminta seseorang untuk menghapus jawabannya sendiri. Ini seperti mengatakan saya akan menulis buku / makalah survei (yang akan saya terbitkan online secara gratis), jadi saya berkeliling dan bertanya kepada semua penulis yang makalahnya saya kutip untuk mencatat makalah mereka sendiri untuk menghindari kebingungan.
Dai
@Raphael Saya tidak melihat di mana dalam lisensi CC mengatakan bahwa pekerjaan saya pada akhirnya akan diminta diambil oleh orang lain Saya tidak tahu jenis fantasi apa yang Anda miliki dengan SE, tapi itu pasti bukan Wikipedia. Saya tahu Anda bekerja keras untuk "memoderasi" situs web ini, tetapi harap juga hormati kebebasan berbicara dan privasi orang lain, dan cukup biarkan suara naik / turun mengurus sisanya. Saya pikir tujuan cs SE adalah untuk menyediakan forum yang lebih ramah daripada cstheory SE untuk pemula, tetapi tingkat mikro manajemen yang Anda ajukan di sini membuatnya jauh lebih buruk.
Dai