2010-10-13 19 views
11

के लिए एल्गोरिदम सीखने के लिए संसाधन मुझे एल्गोरिदम सीखने के लिए संसाधन (ऑनलाइन, पुस्तक या ट्यूटोरियल) की सिफारिश करने के लिए कहा गया है (गैर-एल्गोरिदम के लिए एमआईटी परिचय के अर्थ में) गैर- सीएस या मैथ प्रमुख। जाहिर है कि एमआईटी पुस्तक बहुत व्यस्त है और कुछ हल्के उपचार (जैसे संक्षेप में ओर्ली के एल्गोरिदम) अभी भी ऐसा लगता है कि आपको एल्गोरिदमिक विश्लेषण में कुछ पृष्ठभूमि की आवश्यकता होगी। क्या कोई संसाधन है जो सामग्री को इस तरह प्रस्तुत करता है कि डेवलपर्स जिनके पास सैद्धांतिक कंप्यूटर विज्ञान में पृष्ठभूमि नहीं है, उपयोगी पाएंगे?गैर-सीएस/गणित डिग्री

उत्तर

6

मुझे लगता है कि एल्गोरिदम सीखने का सबसे अच्छा तरीका विभिन्न प्रतिस्पर्धा साइटों के माध्यम से है।

  • USACO - मेरी निजी पसंदीदा है, यह सामग्री
  • TopCoder के माध्यम से एक स्पष्ट पथ देता है के रूप में - पहले ही उल्लेख किया
  • Sphere Online Judge - महान यदि आप C/C++/जावा
  • के अलावा अन्य किसी अन्य भाषा में काम करना चाहते हैं

जहां तक ​​किताबें, गैर-गणित विशेषज्ञ के लिए मैंने देखा है सबसे अच्छा एकल परिचय Data Structures and Algorithms है। यह आपको लाइन द्वारा एल्गोरिदम लाइन के माध्यम से ले जाता है और आपको दिखाता है कि यह गणितीय रूप से कैसे विघटित होता है, कुछ सीएलआरएस अन्यथा उत्कृष्ट विश्लेषण अनुभाग थोड़ा कम स्पष्ट है।

स्कीनिया Algorithm Design Manual भी उत्कृष्ट है, जैसा कि उनके Programming Challenges है, जो वलाडोलिड ऑनलाइन न्यायाधीश के माध्यम से अनिवार्य रूप से एक ट्यूटोरियल है।

ईमानदारी से, हालांकि, मुझे लगता है कि एक शुरुआती चीज जो शुरुआती चीज कर सकती है वह विभिन्न एल्गोरिदम लागू करने के लिए है - मिक्स सॉर्ट करें, कहें, क्विक्सोर्ट के बाद - और उन्हें विभिन्न आकार के इनपुट के खिलाफ समय दें। एक ग्राफ के साथ एक स्प्रेडशीट बनाएं जो समय के साथ उनकी वृद्धि दिखाती है। बहुत कम गैर-विशेषज्ञों के पास धैर्य या ज्ञान होगा कि पुनरावृत्ति संबंध स्थापित किया जाए और इसके माध्यम से अपना रास्ता हल किया जाए। लेकिन आपको समय के साथ ओ एन^2 वृद्धि के प्रभाव को समझना चाहिए, और इसके मेमोरी स्टैक के माध्यम से अपना खुद का प्रोग्राम उड़ाने के बजाय इसे सीखने का कोई बेहतर तरीका नहीं है। :)

मैं इसे एक गैर-सीएस, गैर-गणित प्रोग्रामर के रूप में कहता हूं जिसने एल्गोरिदमिक विश्लेषण के आसपास अपने दिमाग को लपेटने के लिए कुछ अच्छे महीने बिताए हैं।

+0

यहां प्रतिस्पर्धा नहीं है, केवल सहयोगी – none

+2

@ नहीं - मैं उन्हें "प्रतिस्पर्धा साइटों" कहता हूं क्योंकि वे विशेष रूप से विभिन्न एल्गोरिदमिक प्रतियोगिताओं के लिए ट्रेन करने की अनुमति देने के लिए सेट अप किए जाते हैं। वे उत्कृष्ट शिक्षण उपकरण हैं। – rtperson

0

मुझे यकीन नहीं है कि आप कौन सी एमआईटी पुस्तक का जिक्र कर रहे हैं, लेकिन कैननिकल टेक्स्ट CLRS. है मुझे नहीं लगता कि यह वास्तव में हाई स्कूल गणित के अलावा किसी भी पृष्ठभूमि को मानता है।

व्यक्तिगत रूप से, मैंने पिछले कुछ वर्षों के दौरान एल्गोरिदम प्रतियोगिताओं को सामान्य एल्गोरिदम सीखने और उन्हें अभ्यास में रखने का सबसे अच्छा तरीका होने के लिए पाया। शायद आपको वही कोशिश करनी चाहिए। जो कुछ भी आप करते हैं, मैं सुझाव देता हूं कि आप सिर-इन-बुक समय की तुलना में सीखने वाली चीजों को लागू करने के लिए बहुत अधिक समय-समय पर कीबोर्ड खर्च करते हैं, क्योंकि यह वास्तव में विभिन्न तकनीकों को आंतरिक बनाने का तरीका है।

+1

हाँ मैं सीएलआरएस के बारे में बात कर रहा हूं। आप सही हैं कि यह एक प्रारंभिक पाठ है, हालांकि, इसके लिखित आकार और अकादमिक तरीके से कई लोगों को डराया जाएगा .... – ennuikiller

+3

@ennuikiller - जब आपने पहले Knuth की कोशिश की है तो सीएलआरएस बहुत कम डरावना है। मुझे पता है कि दर्दनाक अनुभव के माध्यम से ... – rtperson

1

मैं स्टीवन स्कीनिया द्वारा Algorithm Design Manual के लिए जाऊंगा। यह बहुत पठनीय है और बुनियादी बातों के साथ आसानी से समझने के तरीके से शुरू होता है। उदाहरण के लिए, यह बड़े-ओ नोटेशन को बहुत अच्छी तरह से बताता है। व्यावहारिक अनुप्रयोग पर जोर दिया जाता है, जो गैर-सैद्धांतिक क्षेत्र से आने वाले शुरुआती लोगों के लिए एक बड़ा बोनस है।

पुस्तक का दूसरा भाग सामान्य एल्गोरिदम समस्याओं और उनके समाधानों के व्यावहारिक दृष्टिकोण का संदर्भ है। मैंने इसे एक सीखने की सहायता के रूप में अमूल्य पाया, और अब एक संदर्भ के रूप में।

+0

सिफारिश के लिए धन्यवाद! – ennuikiller

संबंधित मुद्दे