รายการหนังสือแนะนำ TCS สำหรับผู้ที่ไม่ค่อยรู้อะไรเกี่ยวกับ TCS [ปิด]


10

หากคุณต้องแนะนำหนังสือสำหรับคนที่ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ TCS ในระดับเบื้องต้นเช่นทฤษฎีออโตมาตะอัลกอริทึมทฤษฎีความซับซ้อน ฯลฯ หนังสือเล่มไหนที่คุณอยากแนะนำสำหรับผู้ที่สนใจและต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ TCS แต่ไม่มีการสัมผัสกับมัน?


2
ฉันคิดว่านี่น่าจะเป็นคำถาม CW
Gigili

1
ดูการอภิปรายเมตานี้เกี่ยวกับวิธีจัดการคำถามนี้
Raphael

3
cstheory.SE มีรายการขั้นสูงเช่นกัน
ul

1
@Gigili ไม่มี, วิกิพีเดียชุมชนไม่ได้เป็นข้ออ้างที่จะปล่อยให้คำถามที่ไม่เหมาะสมใน
Gilles 'หยุดความชั่วร้าย'

2
@Gigili No. รายชื่อหนังสือที่เคยเป็น CW แต่ไม่ได้ทำอีกต่อไป โปรดอ่านโพสต์บล็อกที่ฉันเชื่อมโยง
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


9

หากคุณต้องการที่จะมีการแนะนำทั่วไปโดยไม่ได้รับที่จะลึกลงไปในรายละเอียดทางเทคนิคผมขอแนะนำให้เดวิดฮาเรลของAlgorithmics: วิญญาณของคอมพิวเตอร์ หลังจากนั้นนี่คือรายการโปรดของฉัน:

  • Michael Sipser บทนำสู่ทฤษฎีการคำนวณ : เป็นการแนะนำที่ดีที่สุดเกี่ยวกับทฤษฎีออโตมาตะการคำนวณและความซับซ้อน
  • อัลกอริธึมโดย S. Dasgupta, CH Papadimitriou และ UV Vazirani: การแนะนำขั้นตอนวิธีที่ใช้งานง่ายที่สุดโดยเน้นการใช้สัญชาตญาณมากกว่าการพิสูจน์ทางเทคนิค
  • Programming Pearlsของ Jon Bentley : นี่ไม่ใช่ตำราเรียนเกี่ยวกับอัลกอริธึม แต่มันแสดงให้เห็นถึงวิธีการใช้เทคนิคการออกแบบอัลกอริทึมที่สวยงามในการแก้ปัญหาจริงที่ทำให้โปรแกรมเมอร์ตัวจริงหงุดหงิด :-) นี่อาจเป็นการเริ่มต้นที่ดีถ้าคุณมีความรู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรม

DPV ยังไม่ได้พิมพ์ เป็นที่รู้จักกันโดยทั่วไป?
Raphael

เนื่องจากคะแนนของคำตอบนี้ผมรวมคำตอบในนั้นคำตอบรวม โปรดพิจารณาลบคำตอบของคุณเพื่อความชัดเจน
Raphael

@ ราฟาเอล DPV ได้รับการตีพิมพ์เป็นเวลาหลายปี แต่ก็ยังคงออนไลน์อยู่ ฉันพยายามที่จะไม่เชื่อมโยงกับเว็บไซต์เชิงพาณิชย์อย่าง amazon
ได

@ ได: ฉันเห็น หน้าที่คุณลิงก์ไปยังบอกว่า "นี่เป็นฉบับร่างสุดท้ายของหนังสือเรียนของเราในไม่ช้า" ดังนั้นความสับสนของฉัน
Raphael

7

ฉันพบว่าหนังสือของ Clarke ค่อนข้างหนักเกินไปสำหรับคนที่ไม่มีพื้นฐาน TCS ฉันรู้ว่านักศึกษาปริญญาเอก (ด้วยตนเอง) ที่พบว่าหนังสือเล่มนี้เข้าใจยาก
Dai

@ ไดคุณคงถูกต้องฉันเปลี่ยนเป็นหลักการตรวจสอบต้นแบบของไบเออร์
Daniil

หนึ่งสามารถเข้าใจการตรวจสอบรูปแบบโดยไม่มีพื้นฐานใน logics และ / หรือออโตมาตะได้หรือไม่?
Raphael

1
หนังสือมังกรเป็นหนังสืออ้างอิงที่ดีอย่างแน่นอน มันมีเหตุผลเพียงพอหรือไม่ (ฉันไม่รู้จริง ๆ )
ราฟาเอล

@ ราฟาเอล "หลักการ" ค่อนข้างให้ความรู้เบื้องต้นเกี่ยวกับตรรกะ (อย่างน้อยมีความรู้ที่จำเป็น) และออโตมาตา มันเป็นหนังสือเล่มใหญ่ที่น่ารักเหมือนกัน ~ หน้า 980 สำหรับหนังสือมังกรฉันคิดว่าคอมไพเลอร์เป็นพื้นที่ทางทฤษฎีมากกว่าใช่ไหม?
Daniil

6

สำหรับคณิตศาสตร์ที่จำเป็นในการวิเคราะห์อัลกอริทึมฉันแนะนำ GKP หนึ่งตัวเท่านั้น:

คณิตศาสตร์คอนกรีตโดย Graham, Knuth, Patashnik
การรักษาที่ครอบคลุมและมีคุณภาพสูงของคณิตศาสตร์ทั้งหมดที่คุณต้องการในอัลกอริทึม (พื้นฐาน) มันเป็นความบันเทิงที่อ่านและรวมถึงความมั่งคั่งของการออกกำลังกาย (และการแก้ปัญหา)


ฉันพยายามอ่านหนังสือเล่มนี้ แต่ฉันไม่ชอบเพราะทุกคนรู้สึกว่า ... เงอะงะและเป็นกลุ่ม ฉันแค่ไม่รู้สึกถึงความงามของคณิตศาสตร์ที่นั่น เปรียบเทียบกับโครงร่างของทฤษฎีออโตมาตาหรือหนังสือของสมัลลันเรื่องตรรกะหรือแม้แต่พีชคณิตนามธรรมของ Dummit & Foote บางทีนั่นอาจเป็นฉันเพียงคนเดียว
Daniil

ฉันสอง Daniil มันเป็นชุดของเครื่องมือที่ยอดเยี่ยมสำหรับนักทฤษฎี แต่มันแห้งเกินไปและเป็นเทคนิคที่สนุกสำหรับผู้เริ่มต้น ฉันชอบหนังสือที่ฉันพูดถึงข้างต้นเพราะพวกเขาดูเหมือนจะมีวิญญาณของตัวเอง พวกเขาอ่านราวกับว่ามีคนเล่าเรื่องของคุณให้คนที่น่าสนใจ
Dai

น่าเสียดายที่มันไม่ครอบคลุมถึงการเหนี่ยวนำเชิงโครงสร้างการทำเหรียญทฤษฎีโดเมนและทุกสิ่งที่จำเป็นสำหรับ TCS แบบทฤษฎีของ B
Dave Clarke

@DaveClarke: ถูกต้อง ฉันไม่แน่ใจว่าฉันจะคาดหวังว่าหนังสือคณิตศาสตร์คณิตศาสตร์ใด ๆ แต่แล้ว GKP ควรจะเป็นหนังสือ cs-math มันไม่มี logics ด้วยดังนั้นฉันควรเรียบเรียงใหม่
Raphael

2
@DaveClarke คุณช่วยแนะนำหนังสือเกี่ยวกับคณิตศาสตร์ Theory B ได้ไหม?
Daniil

5

อัลกอริทึม 4. Edition R. Sedgewick

บทนำเกี่ยวกับการวิเคราะห์อัลกอริทึม P. Flajolet, R. Sedgewick

รู้เบื้องต้นเกี่ยวกับทฤษฎีภาษาและการคำนวณอัตโนมัติ JE Hopcroft, JD Ullman, (R. Motwani)
ฉบับพิมพ์ครั้งแรกในปี 1979 มีผลทางทฤษฎีมากกว่าที่หายไปในรุ่นที่สอง 2001 ยังไม่ได้ดูเอ็ดที่สามเลย

ความรู้เบื้องต้นเกี่ยวกับทฤษฎีภาษาอย่างเป็นทางการ MA Harrison
มาจากปี 1978 แต่ฉันก็ยังอยากจะเห็นมันในรายการ

Logicomix: การค้นหามหากาพย์แห่งความจริง A. Doxiadis, CH Papadimitriou
เพราะมันยอดเยี่ยมมาก!

2522 อีกครั้งคอมพิวเตอร์
ของ Garey และ Johnson และ Intractability: คำแนะนำเกี่ยวกับทฤษฎีความสมบูรณ์แบบของ NP

ฉันชอบที่จะมี TAoCP ในรายการ แต่ฉันกลัวว่าวิธีการที่พิถีพิถันของ Don Knuth คืออะไรที่อาจถือได้ว่าเป็น "เกริ่นนำ" เศร้า...


Logicomix เป็นอัญมณีแน่นอนไม่ได้บอกว่าคนอื่นไม่ได้
Dave Clarke

ฉันไม่ชอบวิธีที่ Logicomix แสดงให้เห็นว่า Logicians เป็นคนที่ "บ้า" แนวคิดในเชิงตรรกะเมื่ออธิบายอย่างถูกต้องจะลงสู่พื้นดินและเรียบง่ายและไม่ใช่ "บ้า" จริง ๆ
Dai

1
@Dai ลองมาดูชีวิตของผู้คนที่ไม่ธรรมดาเช่นGödel, Wittgenstein, Nash และอื่น ๆ พวกเขา ... เป็นคนที่พิเศษมาก
uli

ข้อใดเป็นหลักฐานเริ่มต้นจริง ๆ
Raphael

@ ราฟาเอล IMHO ทุกคนไม่เช่นนั้นฉันจะไม่โพสต์ที่นี่ บางคนอาจมีช่วงการเรียนรู้ที่สูงชัน แต่ฉันคิดว่าไม่เป็นไร
uli

4

หากคุณยังไม่คุ้นเคยกับสาขา TCS การแนะนำทฤษฎีการคำนวณของ Sipser เป็นหนังสือที่ดีที่สุดที่จะเริ่มต้น ฉันได้อ่านหนังสือแนะนำตัวอื่น ๆ แล้วในความคิดของฉันไม่มีพวกเขาเข้ามาใกล้กับแนวทางของ Sipser ในการนำเรื่องนี้

อื่น ๆ หนังสือทางทฤษฎีที่ดีกว่านี้คือ:


กล่าวมาแล้วข้างต้น
Dave Clarke

@DaveClarke ฉันวางแผนที่จะเพิ่มแหล่งข้อมูลเพิ่มเติมในรายการเช่นเดียวกับที่ฉันทำตอนนี้ แต่ฉันต้องการที่จะเน้นว่าหนังสือของ Sipser นั้นยอดเยี่ยมแค่ไหนด้วยการกล่าวถึงมันอีกครั้ง! :-)
codd

1
หนังสือของเพียร์ซเป็นอัญมณี ฉันหวังว่ามันจะเป็นรอบเมื่อฉันทำปริญญาเอกของฉัน (ในประเภท)
Dave Clarke

@DaveClarke ตอนนี้ฉันใช้มันสำหรับวิทยานิพนธ์ปริญญาตรีของฉันโดยการแนะนำจากที่ปรึกษาของฉันและฉันก็ประทับใจมาก!
codd

1
ขอบคุณสำหรับการอ้างอิงฉันจะดูในภายหลังวันนี้ ฉันเห็นว่าคุณเป็นอาจารย์ที่ KUL ฉันจะมาที่นั่นในปีหน้าเพื่อศึกษาซอฟต์แวร์รักษาความปลอดภัย (ซอฟต์แวร์ Veilige) โลกใบนี้ช่างเล็กเหลือเกิน
codd

3

หนังสือที่ดีบางเล่มครอบคลุมส่วนทฤษฎี B ของ TCS:

  • ตรรกะใน CS : ตรรกะในวิทยาการคอมพิวเตอร์: การสร้างแบบจำลองและการใช้เหตุผลเกี่ยวกับระบบโดย Michael Huth และ Mark Ryan
    ครอบคลุมการใช้ตรรกะในสาขาวิทยาศาสตร์คอมพิวเตอร์อย่างกว้างขวาง ประมาณระดับปริญญาตรีปีที่ 3

  • แลมบ์ดาแคลคูลัส : แลมบ์ดาแคลคูลัสและ Combinators การแนะนำโดย J. Roger Hindley และ Jonathan P. Seldin
    แนะนำแคลคูลัสแลมบ์ดาซึ่งเป็นส่วนประกอบสำคัญในพื้นฐานของภาษาโปรแกรม ประมาณระดับปริญญาตรีปีที่ 3

  • นำไปสู่ทฤษฎีโดเมน : รู้เบื้องต้นเกี่ยวกับโปรยและการสั่งซื้อ (2nd ed.)โดย Davey, BA และ Priestley, HA Cambridge University Press (2002)
    ครอบคลุมหัวข้อที่มีประโยชน์มากโดยเฉพาะถ้าคุณวางแผนที่จะทำงานกับซีแมนทิกส์ มันเป็นคณิตศาสตร์มากกว่าหัวข้ออื่น ๆ เล็กน้อย แต่บทแรก ๆ นั้นอยู่ในระดับปริญญาตรีขั้นสูงอย่างแน่นอน

  • อรรถศาสตร์ : อรรถศาสตร์กับแอปพลิเคชั่น: อาหารว่างโดย Hanne Riis Nielson และ Flemming Nielson
    การแนะนำที่ดีมากเกี่ยวกับความหมายของภาษาโปรแกรม มันจะให้การนำเสนอที่ครอบคลุมและรวมถึงแอพพลิเคชั่นโดยทั่วไปที่ไม่ได้พิจารณาในหนังสืออื่น ๆ เกี่ยวกับความหมาย อาจเป็นประโยชน์สำหรับนักศึกษาระดับปริญญาตรีปีที่สอง


ฉันไม่รู้จักใครเลยแม้แต่คนที่มีชื่อเสียงดังนั้นฉันจึงไม่สามารถพูดได้ว่าพวกเขาเป็นคนดี (แม้ว่าฉันจะเอาคำพูดของคุณไปใช้) : /
Raphael

1
ฉันได้เพิ่มคำอธิบายของหนังสือแต่ละเล่มแล้ว ทุกอย่างดี
Dave Clarke

3

นี่คือคำตอบรวมที่มีหนังสือจากคำตอบที่มีคะแนนอย่างน้อยห้าข้อ กรุณาหารือเกี่ยวกับเนื้อหาในการแชท

อัลกอริทึมและโครงสร้างข้อมูล

  • รู้เบื้องต้นเกี่ยวกับอัลกอริทึมโดย Cormen, Leiserson, Rivest, Stein (3rd ed 2009)
    การรักษาที่ครอบคลุมของอัลกอริทึมพื้นฐานและโครงสร้างข้อมูลและการวิเคราะห์โดยไม่ต้องขุดลึกเกินไป
  • อัลกอริทึมของ Dasgupta, Papadimitriou, Vazirani (2006)
    การแนะนำขั้นตอนวิธีที่ใช้งานง่ายที่สุดโดยมุ่งเน้นไปที่สัญชาตญาณมากกว่าการพิสูจน์ทางเทคนิค

การคำนวณและความซับซ้อน

ภาษาที่เป็นทางการและ Automata

ทฤษฎีประยุกต์

  • หลักการตรวจสอบแบบจำลองโดย Baier, Katoen (2008)
    หนังสือเล่มใหญ่ที่นำมาใช้เป็นบทนำในการตรวจสอบแบบจำลองอย่างครอบคลุม
  • Programming Pearlsโดย Jon Bentley (2nd ed 1999)
    ไม่ใช่หนังสือเกี่ยวกับอัลกอริธึม แต่สาธิตวิธีการใช้เทคนิคการออกแบบอัลกอริทึมเพื่อแก้ปัญหาจริง อาจเป็นการเริ่มต้นที่ดีถ้าคุณมีความรู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรม

นี่ไม่ได้ตอบคำถามหรือถ้ามันตั้งใจก็ไม่ใช่คำตอบที่ดี คุณหมายถึงคนที่เริ่ม TCS ต้องอ่านหนังสือเหล่านี้ทั้งหมดหรือไม่ ถ้าไม่พวกเขาจะเลือกอย่างไร โปรดจำไว้ว่าตามกฎของคุณคำตอบนี้มีแนวโน้มที่จะมีหนังสือหลายร้อยเล่ม
Gilles 'ดังนั้นหยุดความชั่วร้าย'

@ ราฟาเอลคุณมีความสุภาพที่จะขอให้คนอื่นเอาคำตอบของเขา / เธอออกหรือเปล่า? โดยปกติผู้ถามด้วยตนเองสามารถทำงานโดยรวมคำตอบที่เขาโปรดปรานโดยแก้ไขข้อความคำถามของตนเอง แต่ฉันไม่เคยเห็นใครบังคับให้บุคคลอื่นลบโพสต์ของตนเพื่อสร้างคำตอบของเขาเอง stackschange cs นี้เริ่มประหลาดกับพฤติกรรมหลงตัวเองเหล่านี้
ได

@ ราฟาเอล: ทำให้มันเป็น CW ไม่ได้ทำให้มันถูกต้องที่จะถามใครสักคนที่จะลบคำตอบของเขา / เธอ มันเหมือนกับว่าฉันจะเขียนหนังสือ / แบบสำรวจ (ซึ่งฉันจะจัดพิมพ์ออนไลน์ฟรี) ดังนั้นฉันจึงไปรอบ ๆ และขอให้ผู้เขียนทุกคนที่มีเอกสารที่ฉันอ้างถึงเพื่อจดกระดาษของตนเองเพื่อหลีกเลี่ยงความสับสน
ได

@ ราฟาเอลฉันไม่เห็นว่าที่ไหนในใบอนุญาต CC ที่บอกว่าในที่สุดงานของฉันจะถูกร้องขอโดยคนอื่น ฉันไม่รู้ว่าคุณมีจินตนาการแบบ SE แต่มันไม่ใช่วิกิพีเดีย ฉันรู้ว่าคุณทำงานอย่างหนักเพื่อ "กลั่นกรอง" เว็บไซต์นี้ แต่โปรดเคารพเสรีภาพในการพูดและความเป็นส่วนตัวของบุคคลอื่นและให้การลงคะแนนเสียงขึ้น / ลงดูแลส่วนที่เหลือ ฉันคิดว่าเป้าหมายของ cs SE คือการให้ฟอรัมที่เป็นมิตรมากกว่า cstheory SE สำหรับผู้เริ่มต้น แต่การจัดการระดับเล็กที่คุณเสนอที่นี่ทำให้แย่ลงมาก
ได

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.