मैं एल्गोरिदम और डेटा संरचना कैसे सीख सकता हूं? [बन्द है]


38

यह मेरे पिछले प्रश्न के लिए जारी है जहां मैंने पूछा कि एल्गोरिदम और डेटा संरचनाओं को सीखना आवश्यक है। मुझे लगता है हाँ यह है।

अब मैं ऐसे वातावरण में काम करता हूँ जहाँ मुझे कभी प्रयोग या व्यावहारिक रूप से या किसी असाइनमेंट में इसे सीखने का मौका नहीं मिलेगा। सही किताबें, सही तरह की समस्याएं, सही तरह के संसाधन जैसे कि मैं छह महीने या एक या दो साल के लिए एल्गोरिदम और डेटा संरचनाएं सीखने के लिए किस माध्यम से जा सकता हूं? और मेरे दिमाग को इस तरह से भी ढालना कि यह समस्याओं को डेटा संरचनाओं और एल्गोरिदम से संबंधित कर सके।


3
कॉर्मेन आपका दोस्त है :)
Lukasz Madon

1
@ लुकास: अभी भी इसे समाप्त नहीं किया है, फिर भी वहां कुछ गणित है कि मैं इसके साथ सहज नहीं हूं। यह एल्गोरिदम, डेटा संरचनाओं और उनके विश्लेषण के मेरे ज्ञान के लिए बहुत कुछ किया, कि किसी भी अन्य एकल स्रोत :) हालांकि
Matthieu M.

आप मेरी परियोजना को भी आजमा सकते हैं, जो कि विकिपीडिया की तुलना में लोकप्रिय एल्गोरिदम और डेटा संरचनाओं को अधिक सरलता
malejpavouk

जवाबों:


40

पढ़ें।

नहीं, वास्तव में, पढ़ें।

एल्गोरिथ्म और डिजाइन के बारे में सब कुछ पढ़ें जो आपको मिल सकता है। वहाँ अभूतपूर्व किताबें हैं। सेडग्विक एल्गोरिथ्म की किताबें अच्छी हैं। स्कीना द्वारा एल्गोरिथ्म डिज़ाइन मैनुअल अच्छा है। साथ में ये किताबें मेरे द्वारा जाने वाले हर काम में द मैथली मैन-मंथ के साथ हर बुकशेल्फ़ पर मुझे फॉलो करती हैं।

फिर पूछें।

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

अगला, करते हैं।

सामान बनाएँ। सामान का निर्माण करें जिसका आप कभी उपयोग नहीं करेंगे। ऐसे सामान का निर्माण करें जिसकी आपको कभी आवश्यकता नहीं होगी। एक प्रोग्राम लिखें जो एक सुडोकू पहेली को हल करता है। अब फिर से करते हैं। और फिर। इसे 5 पूरी तरह से अलग तरीके से बनाएं। एक कार्यक्रम बनाएं जो सुडोकू पहेली उत्पन्न करता है और इसे सॉल्वर में खिलाता है। खोजें कि कौन सा सॉल्वर सबसे तेज है। और तब...

जानिये क्यों।

"क्या" लगभग महत्वपूर्ण नहीं है। मेरा मतलब है, हाँ, यह परियोजना को खत्म करने के लिए महत्वपूर्ण है, लेकिन अंत में यदि आप "क्यों" को "क्यों" जाने बिना जानते हैं, तो आप इसे पहले स्थान पर कभी नहीं कर सकते हैं। आपके रिज्यूम पर आपको बुलेट पॉइंट मिला। जाओ एक कुकी लाओ और खुद को बधाई दो। "क्यों" "क्या" की तुलना में बहुत अधिक महत्वपूर्ण है।

और रिकॉर्ड के लिए सुडोकू एक उदाहरण था। मैंने बहुत सारा खाली समय उस अभ्यास से गुज़रने में लगा दिया, जो कॉनग्रेगेट पर तर्क पहेली के एक टन के साथ था और रास्ते में बहुत कुछ सीखा।

http://www.amazon.com/Bundle-Al एल्गोरिदम- Parts- 1-5- Fundamentals / dp / 020172684X / http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/


वास्तव में अच्छा जवाब! मैं जिस तरह से आप अपनी सलाह को व्यक्त किया पसंद है!
paxRoman

मैं हर जगह अपने साथ सेडगेविक और स्कोएना की किताबें भी ले जाता हूँ! शायद यही कारण है कि मुझे आपका जवाब पसंद आया!
paxRoman

और मिश्रण को कोरमेन करें।
AruniRC

1
इंटरनेट पर जानकारी के लिए एक बढ़ती ड्राइव की उम्र में, यह जोड़ना महत्वपूर्ण है: किताबें पढ़ें (विशेष रूप से, बिल्कुल नहीं)। एक सुसंगत, सुसंगत परिचय एक मामले में जो 2-3 विज्ञापन-पृथक HTML पृष्ठों से अधिक लंबा है, एक अच्छा बात है ™ ! इसे कम मत समझो (और हां, बेशक ईबुक ठीक हैं)।
जोकिम सॉर

1
माना। संगति प्रमुख है। जब आप एक या दो अलग-अलग स्रोतों से एक या दो प्राप्त कर रहे हों, तो डेटा संरचनाओं को बनाना मुश्किल है। पुस्तकों में बेहतर आरेख भी होते हैं (कुछ ब्लॉग / ऑनलाइन स्रोत करते हैं, लेकिन सामान्यीकरण के रूप में किताबें बेहतर होती हैं)। कोड और विवरण का पालन करने के लिए सरल, आरेख पुस्तकों में विशेष रूप से आरेखों का अच्छा मिश्रण होता है।
हौंसशेल

10

एल्गोरिदम

जब मैं बारह साल का था, तब मैंने एक समूह की स्थापना में जादू का सबक लिया। जादूगर का नाम जो कारोटा था। उसने एक बार एक तरकीब की और मैंने शरमाते हुए कहा, "तुमने ऐसा कैसे किया?" उसने उस दिन कुछ कहा जो तब से मेरे साथ है।

जो की प्रतिक्रिया, "माइकल, यदि आप वास्तव में जानना चाहते हैं कि यह चाल कैसे की जाती है तो आपको यह पता लगाना होगा कि आप इसे कैसे करेंगे।"

बेशक यह वही है जो मैं सुनना नहीं चाहता था लेकिन इसने मेरे दिमाग को समस्या हल करने पर केंद्रित कर दिया। यह मेरे दृष्टिकोण से समस्या का समाधान था। यदि समस्या को हल करने का मेरा पहला प्रयास सत्रह कदम उठा और वास्तव में कलंकी था, तो अच्छी खबर यह थी कि मैंने इस समस्या को हल कर दिया।

फिर मैंने जो समाधान विकसित किया था, उसे देखकर और उस समाधान को परिष्कृत करने के तरीकों की तलाश में मैं सीखूंगा कि अंतिम परिणाम को कैसे व्यवस्थित किया जाए। बाद में अपने कंप्यूटर प्रोग्रामिंग जीवन में मुझे पता चला कि इस प्रक्रिया को "स्टेपवाइज शोधन" कहा जाता था। मुझे लगता है कि आज वे इसे रिफैक्टरिंग कहते हैं।

यह काम किया तो यह अब भी काम करता है।


9

यहाँ निम्न लिंक आपको MIT द्वारा सबसे सफल DS और अल्गोरिथम वर्गों में से एक में पुनर्निर्देशित करता है जिसका मैंने कभी अनुसरण किया है।

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

आशा है कि आप इस वीडियो श्रृंखला का आनंद लेंगे। सौभाग्य !!!


2

देखें कि क्या आप ऑनलाइन कोर्स कर सकते हैं या ट्यूट कर सकते हैं। असफल, यह एक त्वरित Google खोज में पॉप अप हुआ। मैंने बस इस पिछले वसंत पर एक क्लास ली (पहली बार, मैं ईई से सॉफ्टवेयर में स्थानांतरित हुआ) और अगर आप पॉइंटर्स को अच्छी तरह से समझते हैं तो इसे उठाना बहुत मुश्किल नहीं था ।


2

यदि आप इस पर एक कोर्स नहीं कर पा रहे हैं, तो मैं एलगोरिदम डिजाइन मैनुअल की सिफारिश करूंगा। यहाँ एक मुफ़्त पीडीएफ है , लेकिन यदि आप पेशेवर रूप से प्रोग्रामिंग करते हैं तो यह वास्तविक पुस्तक प्राप्त करने के लायक है।


समाधान यहाँ हैं। मुझे लगता है कि उन्हें अपने दम पर सीखते हुए बहुत अच्छा लगता है: www2.algorithm.cs.sunysb.edu:8080/mediawiki/index.php/…
डेविड

1

डेटा संरचनाओं और एल्गोरिदम में एक स्नातक स्तर के पाठ्यक्रम में दाखिला लेने की कोशिश करें, इन अवधारणाओं को हमेशा दूसरों के साथ सीखना अच्छा है।


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

वापस जाओ और एक पुनश्चर्या पाठ्यक्रम ले लो :-)
मार्टिजेन वर्बर्ग

1

उदाहरण के लिए ऑनलाइन पर शास्त्रीय समस्याओं को हल करने पर काम करना शुरू करें , साइट शायद यह नहीं देख सकती है कि फैंसी लेकिन लड़का, ये शास्त्रीय प्रोग्रामिंग समस्याएं हैं जिनके लिए आज कई महत्वपूर्ण डेटा संरचनाओं और एल्गोरिदम की आवश्यकता होती है।

समाधान C / C ++ से जावास्क्रिप्ट, लिस्प, स्मॉलटाक, असेंबलर + कुछ 40 और अधिक प्रोग्रामिंग भाषाओं में प्रस्तुत किए जा सकते हैं। इसलिए आप जिस भी प्रोग्रामिंग लैंग्वेज के साथ सहज महसूस करते हैं, उस समस्या को सुलझाने में पूरी तरह से ध्यान केंद्रित कर सकते हैं।


1

CLRS

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


0

आप हमेशा कुछ इस तरह की कोशिश कर सकते हैं: http://codekata.pragprog.com/

मैंने हमेशा इसे पढ़ने के विपरीत सोचकर बेहतर सीखा। हालाँकि, आपके पास उत्तर देखने के लिए दस्तावेज / पठन सामग्री उपलब्ध होनी चाहिए।


0

यह पुस्तक खरीदें , यह ऋण लें या इसे चोरी करें! बाकी का पालन करेंगे :)

रिवरेस्ट और कॉर्मेन द्वारा एल्गोरिदम का परिचय। शुरू में एक बार जब आप मार्जेसॉर्ट की व्याख्या से परिचित हो जाएंगे, तो शुरू में पालन करना बहुत कठिन होगा। सब कुछ खूबसूरती से आपके सामने आता है।

साथ ही आप किताब में दी गई समस्याओं को हल करेंगे तो आप और बेहतर हो जाएंगे। मैं वास्तव में स्नातक स्कूल से स्नातक होने के बाद भी किताब के साथ भाग नहीं लेना चाहता था। यह अच्छा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.