ฉันคิดว่าหลักสูตรเกี่ยวกับการออกแบบอัลกอริทึมและความซับซ้อนในการคำนวณนั้นเป็นสิ่งที่ท้าทายสำหรับนักเรียนที่ไม่คุ้นเคยกับวิชาเหล่านี้เพราะพวกเขาต้องการวุฒิภาวะทางคณิตศาสตร์และทักษะการแก้ปัญหาในระดับหนึ่ง ในหลักสูตรระดับบัณฑิตศึกษาครั้งแรกของฉันใน "ความซับซ้อนในการคำนวณ" เพื่อนของฉันที่มีปริญญาคณิตศาสตร์บริสุทธิ์ของฉันบอกฉันว่าเขาประหลาดใจโดยข้อเท็จจริงที่ว่าแม้ว่าหลักสูตรนั้นไม่ต้องการพื้นหลังคณิตศาสตร์มาก (อย่างน้อยนั่นคือสิ่งที่บอก โครงร่างหลักสูตร) จริง ๆ แล้วมันต้องใช้ทักษะเกือบทั้งหมดที่เขาได้รับจากคณิตศาสตร์บริสุทธิ์ทั้งหมดของเขาในระดับปริญญาตรี!
ฉันพบว่าฉันได้รู้เกี่ยวกับ "ทาง" มากที่สุด (เมื่อครั้งแรกที่ผมเริ่มต้นการศึกษาระดับบัณฑิตศึกษาของฉัน) โดยการอ่านและการทำแบบฝึกหัดจากหนังสือ Sipser ของ ตรวจสอบให้แน่ใจว่าคุณทำแบบฝึกหัดเพราะทักษะการแก้ปัญหาและวุฒิภาวะทางคณิตศาสตร์เป็นสิ่งที่คุณต้องการเรียนรู้ไม่ใช่แค่ข้อเท็จจริงหรือคำจำกัดความ
อย่างไรก็ตามหนังสือของ Sipser นั้นเหมาะสำหรับความซับซ้อนและสิ่งของที่มีความสมบูรณ์แบบสมบูรณ์เท่านั้นจึงไม่เพียงพอที่จะทดแทนหนังสือ CLRS ปัญหาเดียวของหนังสือ CLRS คือข้อดีของการครอบคลุมที่ครอบคลุมอาจกลายเป็นจุดอ่อนเนื่องจากหนังสืออาจดูน่ากลัวหรือล้นหลามสำหรับนักเรียน ดังนั้นคำแนะนำของฉันคือคุณควรไปที่ห้องสมุดและค้นหาหนังสือเกี่ยวกับอัลกอริทึมตรวจสอบทีละรายการและเลือกหนังสือที่เหมาะสมกับรูปแบบการคิดของคุณมากที่สุด และอย่าลืมทำแบบฝึกหัดอีกครั้ง!
สำหรับอัลกอริทึมส่วนตัวแนะนำหนังสือต่อไปนี้ (นอกเหนือจากที่แนะนำโดย Sadeq และ JeffE):
- อัลกอริทึมหนังสือที่อ่านง่ายและสวยงามโดย S. Dasgupta, CH Papadimitriou และ UV Vazirani
- นักฆ่าโน้ต (หรือร่างหนังสือ) โดย Jeff Erickson (เนื่องจาก JeffE นั้นถ่อมตัวเกินไปที่จะแนะนำบันทึกของเขาเองฉันจึงต้องทำเอง)
โดยทั่วไปเมื่อใดก็ตามที่คุณศึกษาอัลกอริทึมหรือโครงสร้างข้อมูลบางอย่างหากการอธิบายในตำราเรียนของคุณไม่ชัดเจนเพียงพอสำหรับคุณวิธีที่ดีที่สุดคือการค้นหาบันทึกการบรรยายในหัวข้อนั้นใน google ในบางกรณีคำอธิบายที่แตกต่างกันของสิ่งเดียวกันในที่สุดก็ให้ภาพที่สมบูรณ์ อย่างน้อยนั่นก็เป็นวิธีการทำงานสำหรับฉัน