ฉันจะเรียนรู้อัลกอริทึมและโครงสร้างข้อมูลได้อย่างไร [ปิด]


38

นี่คือความต่อเนื่องของคำถามก่อนหน้าของฉันที่ฉันถามมันจำเป็นต้องเรียนรู้อัลกอริทึมและโครงสร้างข้อมูล ฉันรู้สึกว่าใช่

ตอนนี้ฉันทำงานในสภาพแวดล้อมที่ฉันจะไม่ได้รับโอกาสที่จะเรียนรู้มันโดยการทดลองหรือปฏิบัติหรือในการมอบหมายใด ๆ อะไรคือแนวทางที่ถูกต้องเช่นหนังสือที่ถูกต้องปัญหาที่เหมาะสมประเภทของทรัพยากรที่ฉันสามารถผ่านเพื่อให้เวลาหกเดือนหรือหนึ่งปีหรือสองปีเพื่อเรียนรู้อัลกอริทึมและโครงสร้างข้อมูล และสร้างความคิดของฉันในแบบที่มันสามารถเชื่อมโยงปัญหากับโครงสร้างข้อมูลและอัลกอริทึม


3
Cormen เป็นเพื่อนของคุณ :)
Lukasz Madon

1
@lukas: ยังไม่จบ แต่ก็มีคณิตศาสตร์อยู่สองสามอย่างที่ฉันไม่คุ้นเคย มันทำให้ฉันมีความรู้เกี่ยวกับอัลกอริทึมโครงสร้างข้อมูลและการวิเคราะห์ของพวกเขามากว่าแหล่งข้อมูลอื่นใดก็ตาม :)
Matthieu M.

คุณอาจลองโครงการของฉันซึ่งอธิบายอัลกอริทึมยอดนิยมและโครงสร้างข้อมูลตรงไปตรงมามากกว่าวิกิพีเดียและมีรหัส souce เกือบทุกบทความ (โครงสร้างวิธีการอัลกอริทึม) ... en.algoritmy.net
malejpavouk

คำตอบ:


40

อ่าน.

ไม่อ่านจริงๆ

อ่านทุกอย่างเกี่ยวกับอัลกอริทึมและการออกแบบที่คุณสามารถหาได้ มีหนังสือปรากฎการณ์อยู่ที่นั่น หนังสืออัลกอริทึม Sedgewick ดีมาก คู่มือการออกแบบอัลกอริทึมโดย Skiena ก็ดีเช่นกัน รวมหนังสือเหล่านี้ติดตามฉันในทุกชั้นวางหนังสือในทุกงานที่ฉันไปพร้อมกับ The Mythical Man-Month

จากนั้นถาม

พูดคุยกับคนที่คุณเคารพ ถามพวกเขาว่าพวกเขามีจุดตัดสินใจอะไรและทำไมพวกเขาถึงตัดสินใจตามนั้น คนดีจะสามารถบอกคุณได้เสมอว่า "ฉันเลือกที่จะทำ X เพราะมันดีกว่า A, B ด้วยวิธีเหล่านี้ฉันสามารถไปกับ C ได้ แต่ฉันรู้สึกว่านี่เป็นตัวเลือกที่ดีกว่าเพราะสิ่งนี้"

ถัดไปทำ

สร้างสิ่งต่าง ๆ สร้างสิ่งที่คุณไม่เคยใช้ สร้างสิ่งที่คุณไม่ต้องการ ไปเขียนโปรแกรมที่ช่วยไขปริศนา Sudoku ตอนนี้ไปทำมันอีกครั้ง และอีกครั้ง. สร้าง 5 วิธีที่แตกต่างอย่างสิ้นเชิง สร้างโปรแกรมที่สร้างตัวต่อซูโดกุและป้อนเข้าไปในตัวแก้ปัญหา ค้นหาตัวแก้ปัญหาที่เร็วที่สุด แล้ว ...

ค้นหาสาเหตุ

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

และสำหรับบันทึกของ Sudoku ก็เป็นตัวอย่าง ฉันใช้เวลาว่างมากในการออกกำลังกายนั้นด้วยปริศนาตรรกะจำนวนมากใน Kongregate และเรียนรู้มากมายระหว่างทาง

http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/ http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/


คำตอบที่ดีจริงๆ! ฉันชอบวิธีที่คุณใช้คำแนะนำของคุณ!
paxRoman

ฉันยังใช้หนังสือ Sedgewick และ Skienna กับฉันทุกที่! นั่นอาจเป็นอีกเหตุผลหนึ่งที่ฉันชอบคำตอบของคุณ!
paxRoman

และ Cormen เพื่อผสมโปรด
AruniRC

1
ในยุคที่การเพิ่มขึ้นของข้อมูลบนอินเทอร์เน็ตเป็นสิ่งสำคัญที่คุณต้องเพิ่ม: อ่านหนังสือ (ไม่เฉพาะเจาะจง) การแนะนำที่สอดคล้องและสอดคล้องกันในเรื่องที่ยาวกว่า 2-3 หน้า HTML ที่คั่นด้วยโฆษณาคือA Good Thing ™ ! อย่าดูถูกดูแคลน (และแน่นอนว่า ebooks เป็นเรื่องปกติ)
Joachim Sauer

1
ตกลง ความสอดคล้องเป็นกุญแจสำคัญ มันยากที่จะคลานโครงสร้างข้อมูลเมื่อคุณได้รับหนึ่งหรือสองจากแหล่งที่แตกต่างกันโหล หนังสือมีแนวโน้มที่จะมีไดอะแกรมที่ดีขึ้น (บางบล็อก / แหล่งข้อมูลออนไลน์มี แต่หนังสือทั่วไปนั้นดีกว่า) หนังสือ Sedgewick มีการผสมผสานที่ดีโดยเฉพาะอย่างยิ่งของแผนภาพง่ายต่อการปฏิบัติตามรหัสและคำอธิบาย
Hounshell

10

อัลกอริทึม

ฉันเรียนวิชามายากลเป็นกลุ่มเมื่อฉันอายุสิบสองปี ชื่อของนักมายากลคือ Joe Carota ครั้งหนึ่งเขาทำกลอุบายและฉันโพล่งออกมาว่า "คุณทำอย่างนั้นได้อย่างไร" เขาพูดอะไรบางอย่างในวันนั้นที่ติดอยู่กับฉันนับตั้งแต่

คำตอบของโจ "ไมเคิลถ้าคุณอยากรู้ว่าเคล็ดลับนั้นทำอย่างไรคุณจะต้องหาวิธีที่คุณจะทำด้วยตัวเอง"

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

จากนั้นเมื่อมองไปที่วิธีแก้ปัญหาที่ฉันได้พัฒนาและมองหาวิธีในการปรับแต่งโซลูชันนั้นฉันจะได้เรียนรู้วิธีปรับปรุงผลลัพธ์ที่ได้ ต่อมาในชีวิตการเขียนโปรแกรมคอมพิวเตอร์ของฉันฉันพบว่ากระบวนการนี้เรียกว่า "การปรับแต่งแบบขั้นตอน" ฉันคิดว่าวันนี้พวกเขาเรียกมันว่าการสร้างใหม่

มันทำงานแล้วมันยังคงใช้งานได้ในขณะนี้


9

ที่นี่ลิงค์ต่อไปนี้จะนำคุณไปสู่หนึ่งในคลาส DS และอัลกอริทึมที่ประสบความสำเร็จมากที่สุดโดย MIT ที่ฉันเคยติดตาม

http://academicearth.org/courses/introduction-to-algorithms

หวังว่าคุณจะสนุกกับวิดีโอชุดนี้ โชคดี !!!


2

ดูว่าคุณสามารถเรียนหลักสูตรออนไลน์หรือรับการสอน ความล้มเหลวนี้เกิดขึ้นในการค้นหา google อย่างรวดเร็ว ฉันเพิ่งเข้าห้องเรียนเมื่อฤดูใบไม้ผลิที่ผ่านมา (ครั้งแรกฉันย้ายจาก EE ไปยังซอฟต์แวร์) และมันก็ไม่ยากเกินกว่าที่จะรับได้ถ้าคุณเข้าใจตัวชี้ได้ดี


2

หากคุณไม่สามารถเรียนหลักสูตรนี้ได้ฉันขอแนะนำคู่มือการออกแบบอัลกอริทึม มี PDF ฟรีที่นี่แต่คุ้มค่าที่จะได้รับหนังสือจริงถ้าคุณวางแผนที่จะเขียนโปรแกรมอย่างมืออาชีพ


การแก้ปัญหาอยู่ที่นี่ ฉันพบว่ามันยอดเยี่ยมที่มีพวกเขาเมื่อเรียนรู้ด้วยตัวคุณเอง: www2.algorithm.cs.sunysb.edu:8080/mediawiki/index.php/ …
David Rinck

1

ลองลงทะเบียนในหลักสูตรระดับปริญญาตรีในโครงสร้างข้อมูลและอัลกอริธึมมันเป็นเรื่องดีเสมอที่จะเรียนรู้แนวคิดเหล่านี้ควบคู่ไปกับคนอื่น ๆ


ฉันสำเร็จการศึกษาด้านวิทยาการคอมพิวเตอร์และหลังจากนั้นหกปี ฉันไม่เคยจดจ่อกับเรื่องเหล่านี้นั่นคือเว็บการใช้งานเซิร์ฟเวอร์ลูกค้าที่ดึงดูดฉันและฉันกำลังทำงานในสาขาเหล่านี้เท่านั้น แต่ตอนนี้ฉันรู้สึกว่าฉันควรเรียนรู้พวกเขาเช่นกัน คุณคิดอย่างไร.
sushil bharwani

กลับไปใช้หลักสูตรทบทวน :-)
Martijn Verburg

1

เริ่มทำงานกับการแก้ปัญหาแบบดั้งเดิมในตัวอย่างเช่นทรงกลมออนไลน์ไซต์อาจดูไม่น่าสนใจ แต่เด็กผู้ชายเหล่านี้เป็นปัญหาการเขียนโปรแกรมแบบคลาสสิกที่ต้องการโครงสร้างข้อมูลและอัลกอริทึมที่สำคัญจำนวนมากที่ใช้อยู่ในปัจจุบัน

สามารถส่งโซลูชั่นในภาษาการเขียนโปรแกรมหลากหลายตั้งแต่ C / C ++ ถึง JavaScript, Lisp, Smalltalk, Assembler และอีก 40 รายการ ดังนั้นคุณสามารถมุ่งเน้นไปที่การแก้ปัญหาด้วยภาษาโปรแกรมที่คุณรู้สึกสบายใจ


1

CLRS

นี่คือทรัพยากรที่ฉันโปรดปราน ฉันใช้มันในหลักสูตรวิทยาศาสตร์คอมพิวเตอร์ระดับปริญญาตรีและจบลงด้วยการซื้อหนังสือ 4 ปีต่อมาเพื่ออ่านด้วยตัวเองเพื่อเตรียมสำหรับหลักสูตร MS Comp Sci ของฉัน มันไม่ง่ายเลยในการอ่าน แต่ถ้าคุณพยายามทำความเข้าใจกับคณิตศาสตร์ / บทพิสูจน์ที่นำเสนอแล้วใช้โค้ดหลอกในภาษาที่คุณชื่นชอบมันก็คุ้มค่ากับป้ายราคาที่ค่อนข้างแรง คู่มือการออกแบบอัลกอริทึมที่คนอื่นพูดถึงเป็นแหล่งข้อมูลที่ดีสำหรับการเรียนรู้ปัญหา แต่ฉันพบว่า CLRS นั้นดีกว่าสำหรับรายละเอียดที่แท้จริง


0

คุณสามารถลองสิ่งนี้ได้ตลอดเวลา: http://codekata.pragprog.com/

ฉันมักจะเรียนรู้ได้ดีขึ้นโดยคิดนอกคอกการอ่าน อย่างไรก็ตามคุณควรมีเอกสาร / วัสดุการอ่านเพื่อค้นหาคำตอบ


0

ซื้อหนังสือเล่มนี้ยืมนี่หรือขโมยเลย! ส่วนที่เหลือจะติดตาม :)

รู้เบื้องต้นเกี่ยวกับอัลกอริทึมโดย Rivest และ Cormen มันจะยากมากที่จะติดตามในตอนแรกเมื่อคุณผ่านการอธิบายของการรวมกิจการในการแนะนำ ทุกอย่างแผ่ไปถึงคุณอย่างสวยงาม

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

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