एल्गोरिदम को समझना: प्रोग्रामर और जिज्ञासुओं के लिए एक चित्रित मार्गदर्शिका

एल्गोरिदम को समझना: प्रोग्रामर और जिज्ञासुओं के लिए एक चित्रित मार्गदर्शिका
Aditya Bhargava
श्रेणियाँ: प्रोग्रामिंग
प्रकाशन वर्ष: 2017
पढ़ाई का वर्ष: 2020
मेरा मूल्यांकन: उच्चतम
पढ़ने की संख्या: 1
कुल पृष्ठ: 290
सारांश (पृष्ठ): 5
प्रकाशन की मूल भाषा: अंग्रेजी
अन्य भाषाओं में अनुवाद: रूसी, स्पेनिश, पुर्तगाली

अवलोकन

इस पुस्तक में 11 अध्याय हैं, हालांकि पहला अध्याय एक परिचय की तरह है (इसका शीर्षक है "एल्गोरिदम से परिचय"), और अंतिम अध्याय उन विषयों के बारे में है जिन्हें आगे पढ़ा जा सकता है (और आदर्श रूप से पढ़ना चाहिए), साथ ही उन विषयों के बारे में जिन्हें यह पुस्तक पूरी तरह से कवर नहीं करती (जैसे MapReduce, ब्लूम फिल्टर, SHA आदि)। तो यह पुस्तक क्या कवर करती है? आइए संक्षेप में जानते हैं।

सबसे पहले, पुस्तक में एल्गोरिदम की जटिलता और तथाकथित "बिग ओ नोटेशन" के बारे में बताया गया है। और विश्वास कीजिए, प्रोग्रामिंग के अधिकांश पाठ्यक्रम बहुत विशिष्ट कौशल सिखाते हैं, लेकिन एल्गोरिदम के निष्पादन समय की जटिलता या कोड ऑप्टिमाइजेशन के बारे में बहुत कम बताते हैं।

जिन विषयों को कवर किया गया है, उनके बारे में इस पैराग्राफ में संक्षेप में बताऊंगा।

पुस्तक की शुरुआत ऐरे और लिंक्ड लिस्ट के बारे में एक अध्याय से होती है, जो बताता है कि उनके साथ कैसे काम किया जाए (सॉर्टिंग और खोज के संदर्भ में)। यह लिस्ट के फायदे और नुकसान बताता है (पढ़ने/लिखने की गति और सूचना संग्रहण के दृष्टिकोण से)।

इसके बाद रिकर्सन पर एक छोटा अध्याय आता है, जो कॉल स्टैक और उसके काम करने के तरीके को समझाता है।

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

अगला भाग एक नए डेटा प्रकार - हैश टेबल्स - को पेश करता है। यह उन स्थितियों को बताता है जहां उनका उपयोग किया जाना चाहिए (जैसे डुप्लीकेट हटाना, कैशिंग, ऑब्जेक्ट्स के बीच संबंध मॉडलिंग)। टकराव के मामलों पर भी चर्चा की गई है।

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

पुस्तक के अंत में क्लासिक और दैनिक प्रोग्रामिंग में कम उपयोग किए जाने वाले कार्य और एल्गोरिदम आते हैं। उदाहरण के लिए, "ग्रीडी एल्गोरिदम" को समझाया गया है और उन असंभव कार्यों के बारे में बताया गया है जिनका कोई त्वरित एल्गोरिदमिक समाधान नहीं है (NP-पूर्ण समस्याएं), डायनामिक प्रोग्रामिंग - जटिल समस्याओं को उप-समस्याओं में विभाजित करने की विधि, और k-निकटतम पड़ोसी एल्गोरिदम, जिसका उपयोग मशीन लर्निंग में किया जाता है।

विशेषताएं

पुस्तक में चित्र हैं जो जानकारी को समझने, पूरक करने और दृश्य रूप देने में मदद करते हैं। साथ ही प्रत्येक अध्याय में 5-7 व्यावहारिक प्रश्न मिलते हैं। मूल रूप से ये कोड के बिना प्रश्न हैं (हालांकि कुछ मामलों में कोड सहित), पुस्तक के अंत में स्व-जांच के लिए उत्तर दिए गए हैं। प्रत्येक अध्याय के अंत में एक "चीट शीट" होती है - 4-5 वाक्यों में अध्याय का सारांश।

पुस्तक का आयतन लगभग 300 पृष्ठों का है, साथ ही अध्याय बहुत बड़े नहीं हैं, इसलिए संभावना अधिक है कि जो भी इसे खोलेगा, वह अंत तक पढ़ेगा। पढ़ने में आसान और तेज है।

निष्कर्ष

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

Вверх