आप कौन हैं, प्रोफेसर डोनाल्ड नुथ? प्रोग्रामिंग की कला पौराणिक पुस्तक श्रृंखला का एक सिंहावलोकन है।

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

] लेखक: नॉट डोनाल्ड एर्विन (डोनाल्ड एर्विन नुथ)। वैज्ञानिक प्रकाशन। आर.एम. द्वारा अंग्रेजी से अनुवाद कुज़्नेत्स, ओ.ए. महोवाया, एन.वी. त्रेताकोव, यू.वी. ट्यूमेंटसेव, आईए द्वारा संपादित। मखोवा। कलाकार आई.आई. कुलिकोव।
(मॉस्को: मीर पब्लिशिंग हाउस, एक्ट पब्लिशिंग हाउस, 2003। - सीरीज़ "लाइब्रेरी ऑफ़ पब्लिशिंग टेक्नोलॉजीज")
स्कैन, प्रोसेसिंग, डीजेवी प्रारूप: ???, द्वारा प्रदान किया गया: मिखाइल, 2016

  • सारांश:
    अनुवाद संपादक द्वारा प्राक्कथन (5)।
    प्रस्तावना (11)।
    सूत्रों के लिंक (16)।
    अध्याय 1. कंप्यूटर टाइपोग्राफी (19)।
    अध्याय 2. गणितीय टाइपोग्राफी (36)।
    अध्याय 3. पैराग्राफ का लेआउट (79)।
    अध्याय 4
    अध्याय 5. व्यंजनों और अंश (187)।
    अध्याय 6. TEX सिस्टम लोगो विभिन्न फोंट (192) में।
    अध्याय 7 पसंदीदा पृष्ठ बनाना (194)।
    अध्याय 8. जिल (196) के लिए लिखे गए मैक्रोज़।
    अध्याय 9
    अध्याय 10. टीईएक्स के लिए अभ्यास: कार्यक्रम (207)।
    अध्याय 11 स्व-दस्तावेजीकरण कार्यक्रमों के लिए मिनी-इंडेक्स (235)।
    अध्याय 12. वर्चुअल फोंट। वास्तविक स्वामी के लिए मनोरंजन (256)।
    अध्याय 13
    अध्याय 14. भारतीय लेखन से मेरा पहला परिचय (293)।
    अध्याय 15
    अध्याय 16
    अध्याय 17. एएमएस यूलर - एक नया गणितीय फ़ॉन्ट (344)।
    अध्याय 18
    अध्याय 19. METAFONT "e (381) पर प्रोग्रामिंग सिखाने के अनुभव से।
    अध्याय 20. पंक मेटाफॉन्ट (393)।
    अध्याय 21. अलग हाफ़टोन के लिए फ़ॉन्ट्स (415)।
    अध्याय 22
    अध्याय 23
    अध्याय 24
    अध्याय 25
    अध्याय 26
    अध्याय 27. TEX "a और METAFONT" a (552) के लिए पिक्टोग्राम।
    अध्याय 28
    अध्याय 29
    अध्याय 30
    अध्याय 31. प्रश्न और उत्तर, मैं (578)।
    अध्याय 32. प्रश्न और उत्तर, II (604)।
    अध्याय 33. प्रश्न और उत्तर, III (625)।
    अध्याय 34
    विषय सूचकांक (659)।

प्रकाशक की टिप्पणी:विश्व प्रसिद्ध टीईएक्स और मेटाफॉन्ट सिस्टम के निर्माण पर उनके काम के दौरान उनके द्वारा लिखे गए डी। नुथ के कार्यों का एक संग्रह, जिसमें इस विषय पर हाल के वर्षों के लेख भी शामिल हैं। पुस्तक में 34 अध्याय हैं, जिन्हें परंपरागत रूप से तीन भागों में विभाजित किया गया है: TEX और संबंधित विषय; मेटाफॉन्ट और संबंधित मामले; एक ऐतिहासिक पहलू में TEX और मेटाफॉन्ट। एक समृद्ध उदाहरणात्मक सामग्री प्रस्तुत की गई है और कार्यक्रम की सूची दी गई है।
डी. नुथ की सभी पुस्तकों की तरह, बहुत गंभीर मुद्दों को सरल और आकर्षक तरीके से प्रस्तुत किया जाता है, जो पुस्तक के अंतःविषय उन्मुखीकरण को देखते हुए विज्ञान के विभिन्न क्षेत्रों के विशेषज्ञों के लिए इसे सुलभ बनाता है।
यह पुस्तक उन सभी विशिष्टताओं के वैज्ञानिकों के लिए रूचिकर है जो स्वतंत्र रूप से प्रकाशन के लिए अपने पेपर तैयार करते हैं, कंप्यूटर विज्ञान और प्रकाशन प्रणालियों के क्षेत्र के विशेषज्ञों के साथ-साथ गैर-मानक अनुप्रयोगों में रुचि रखने वाले गणितज्ञों के लिए भी।

नाम:प्रोग्रामिंग की कला - खंड 1।

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

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

मुफ्त डाउनलोड ई-पुस्तकएक सुविधाजनक प्रारूप में, देखें और पढ़ें:
The Art of Programming - Volume 1 - Knut D. E. - fileskachat.com पुस्तक डाउनलोड करें, तेज और मुफ्त डाउनलोड।

डीजेवीयू डाउनलोड करें
आप इस किताब को नीचे खरीद सकते हैं सबसे अच्छी कीमतपूरे रूस में डिलीवरी के साथ छूट पर।

पुस्तक लेखन परियोजना लेखक द्वारा पर शुरू की गई थी। प्रारंभ में, इसे एक मात्रा में जारी करने की योजना बनाई गई थी, लेकिन सामग्री की मात्रा इतनी बड़ी निकली कि मात्राओं की संख्या बढ़कर सात हो गई। पहले तीन खंडों को काफी जल्दी प्रकाशित किया गया था: 1968 में खंड 1, 1969 में खंड 2, और 1973 में खंड 3, इसके बाद फरवरी 2005 तक एक विराम था, जिसमें लेखक ने चौथे खंड का पहला भाग प्रकाशित किया। चौथे खंड के शेष हिस्सों को साल में लगभग दो बार अलग-अलग मुद्दों में जारी करने का निर्णय लिया गया, जिसके बाद पूरे चौथे खंड को आधिकारिक तौर पर प्रकाशित किया जाएगा। अंक 0, 1, 2, 3 और 4 को 2005-2009 के दौरान प्रकाशित किया गया था, और 2011 में वॉल्यूम 4ए जारी किया गया था, जिसमें इन मुद्दों की जानकारी शामिल थी। इसके अलावा 2005 में, अंक 1 "एमएमआईएक्स - ए आरआईएससी कंप्यूटर फॉर द न्यू मिलेनियम" जारी किया गया था, जिसकी जानकारी पहले खंड के नए, चौथे संस्करण में शामिल की जाएगी। अंक 6 2015 में प्रकाशित हुआ था संतुष्टि, भविष्य के वॉल्यूम 4B के मध्य तीसरे का प्रतिनिधित्व करता है।

चूँकि नुथ ने हमेशा द आर्ट ऑफ़ प्रोग्रामिंग को अपने जीवन की मुख्य परियोजना माना था, वह 1993 में लापता भागों को लिखने और मौजूदा लोगों को ठीक करने पर पूरी तरह से ध्यान केंद्रित करने के इरादे से सेवानिवृत्त हुए। उनका मानना ​​था कि काम पूरा होने में 20 साल लगेंगे।

विश्वकोश यूट्यूब

  • 1 / 5

    संकलक डिजाइन पर एक मान्यता प्राप्त विशेषज्ञ के रूप में, 1962 में नुथ ने संकलक डिजाइन पर एक पुस्तक लिखना शुरू किया। उन्होंने जल्द ही महसूस किया कि सामग्री का दायरा बहुत व्यापक होना चाहिए। जून 1965 में, उन्होंने बारह खंडों की एक पुस्तक में जो मूल रूप से प्रकाशित करना चाहते थे, उसका पहला संस्करण लिखना समाप्त कर दिया। हस्तलिखित पाठ का आयतन 3000 पृष्ठों का था। नुथ की गणना के अनुसार, यह खंड 600 मुद्रित पृष्ठों में फिट होना चाहिए था, लेकिन, जैसा कि उनके प्रकाशक ने उन्हें सूचित किया, वास्तविक मात्रा 2000 पृष्ठों की होगी। इस संबंध में, पुस्तक की संरचना को कई खंडों के पक्ष में संशोधित किया गया, प्रत्येक 1-2 खंड। तब से, सामग्री की निरंतर वृद्धि के कारण, यह निर्णय लिया गया कि चौथे खंड को भी अलग-अलग पुस्तकों में विभाजित किया जाएगा: 4ए, 4बी, 4सी, और संभवतः 4डी। लेकिन जाहिर तौर पर यह विभाजन भी अंतिम नहीं होगा, क्योंकि खंड 7.1 और 7.2.1 पहले से ही कुल मिलाकर 650 से अधिक पृष्ठों पर कब्जा कर चुके हैं।

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

    नुथ की अन्य पुस्तकों की तरह, द आर्ट ऑफ़ प्रोग्रामिंग को उनके "ब्रांड नाम" द्वारा चिह्नित किया गया है: पाठ में पाई गई प्रत्येक त्रुटि के लिए, लेखक एक हेक्साडेसिमल डॉलर का भुगतान करता है, जो कि $ 2.56 (0x100 सेंट, आधार  16 में) है। पुस्तक की एक और विशिष्ट विशेषता आत्म-पूर्ति के लिए अभ्यासों की प्रचुरता है, जटिलता की अलग-अलग डिग्री, सरल समस्याओं से लेकर "वार्मिंग अप" और समाप्त होने तक खुले मुदे. प्रत्येक अभ्यास की कठिनाई को 0 से 50 तक संख्यात्मक पैमाने पर आंका गया है। इसलिए, शुरुआती संस्करणों में, संख्या 50 को ग्रेट  प्रमेय फार्म के साथ चिह्नित किया गया था, लेकिन तीसरे संस्करण में यह स्कोर "अवमूल्यन" कर 45 कर दिया गया था, क्योंकि द्वारा उस समय इसका प्रमाण पहले ही एक खुली समस्या नहीं रह गया था।

    वॉल्यूम तीन, 1978 "छँटाई और खोज" के लिए सम्मेलनों का सारांश (बाएँ - मूल्यांकन, दाएँ - संक्षिप्त विवरण)

    • काला त्रिभुज - अनुशंसित
    • एम - गणितीय पूर्वाग्रह के साथ
    • वीएम - "उच्च गणित" के ज्ञान की आवश्यकता है
    • 00 - तत्काल प्रतिक्रिया की आवश्यकता है
    • 10 - सरल (1 मिनट के लिए)
    • 20 - मध्यम कठिनाई (15 मिनट के लिए)
    • 30- कठिनाई बढे़गी
    • 40 - "मतप्राकृतिकुम" के लिए
    • 50 - शोध समस्या

    किताब लिखने की मूल योजना ने सामग्री के निम्नलिखित टूटने का सुझाव दिया।

    • वॉल्यूम 1. बुनियादी एल्गोरिदम।
      • अध्याय 1. बुनियादी अवधारणाएँ।
      • अध्याय 2. सूचना संरचनाएं।
    • वॉल्यूम 2. व्युत्पन्न एल्गोरिदम।
      • अध्याय 3. यादृच्छिक संख्याएँ।
      • अध्याय 4. अंकगणित।
    • वॉल्यूम 3. छँटाई और खोज।
      • अध्याय 5. छँटाई।
      • अध्याय 6
    • वॉल्यूम 4. कॉम्बिनेटरियल एल्गोरिदम।
      • अध्याय 7. मिश्रित खोज।
      • अध्याय 8. पुनरावर्तन।
    • वॉल्यूम 5. सिंटैक्टिक एल्गोरिदम।
      • अध्याय 9. कोश संबंधी खोज।
      • अध्याय 10. वाक्यात्मक खोज।
    • खंड 6. भाषाओं का सिद्धांत।
    • वॉल्यूम 7. कंपाइलर्स।

    वास्तव में, यह योजना तीसरे खंड सहित और तक लागू की गई थी।

    वॉल्यूम 4ए अब प्रकाशित किया गया है, जिसमें अध्याय 7 के पहले खंड शामिल हैं। नए खंडों को शुरू में अलग-अलग मुद्दों (लगभग 128 पृष्ठों) में प्रकाशित करने की योजना है, प्रति वर्ष लगभग दो अंक (अंक 0, 1, 2, 3 और 4 समान रूप से वॉल्यूम 4ए के रिलीज से पहले प्रकाशित किए गए थे)।

    मशीन उन्मुख उदाहरण भाषा

    पुस्तक में उदाहरण कार्यक्रम एक काल्पनिक मिक्स कंप्यूटर पर चलने के लिए डिज़ाइन किए गए "मिक्स असेम्बलर" का उपयोग करते हैं। तीसरे संस्करण में, अप्रचलित मिक्स को एमएमआईएक्स द्वारा प्रतिस्थापित किया गया था, जिसमें एक पूर्ण विकसित आरआईएससी वास्तुकला है। ऐसा सॉफ्टवेयर है जो मानक आईबीएम-संगत कंप्यूटरों पर (एम) मिक्स मशीन का अनुकरण प्रदान करता है। GNU कंपाइलर संग्रह में लक्ष्य MMIX आर्किटेक्चर के लिए C/C++ कोड संकलित करने की क्षमता है।

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

    आलोचना

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

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

    संस्करणों

    मूल

    तीसरा (वर्तमान)

    मात्रा संख्या के आरोही क्रम में:

    • खंड 1: मौलिक एल्गोरिदम. तीसरा संस्करण (पढ़ना, मैसाचुसेट्स: एडिसन-वेस्ली, 1997), xx+650पीपी। आईएसबीएन 0-201-89683-4
    • वॉल्यूम 1, फॉलिकल 1: एमएमआईएक्स - न्यू मिलेनियम के लिए एक आरआईएससी कंप्यूटर. (एडिसन-वेस्ले, फरवरी 14, 2005) ISBN 0-201-85392-2 (वॉल्यूम 1 के चौथे संस्करण में होगा)
    • वॉल्यूम 2: सेमिन्यूमेरिकल एल्गोरिदम. तीसरा संस्करण (रीडिंग, मैसाचुसेट्स: एडिसन-वेस्ले, 1997), xiv+762pp। आईएसबीएन 0-201-89684-2
    • वॉल्यूम 3: सॉर्टिंग और सर्चिंग. दूसरा संस्करण (रीडिंग, मैसाचुसेट्स: एडिसन-वेस्ली, 1998), xiv+780pp.+foldout। आईएसबीएन 0-201-89685-0
    • वॉल्यूम 4ए: कॉम्बिनेटोरियल एल्गोरिदम, भाग 1(अपर सैडल रिवर, न्यू जर्सी: एडिसन-वेस्ले, 2011), xvi+883pp। आईएसबीएन 0-201-03804-8
    • वॉल्यूम 4, फ़ॉस्किकल 6: संतुष्टि. (एडिसन-वेस्ले प्रोफेशनल, 2015), xiii+310pp। ISBN 978-0-13-439760-3

    पहले का

    प्रकाशन तिथि के अनुसार:

    • वॉल्यूम 1, पहला संस्करण, 1968. 634पीपी। आईएसबीएन 0-201-03801-3।
    • खंड 2, पहला संस्करण, 1969, xi+624pp, ISBN 0-201-03802-1 .
    • खंड 3, पहला संस्करण, 1973, xi+723pp+centerfold, ISBN 0-201-03803-X
    • वॉल्यूम 1, दूसरा संस्करण, 1973, xiii+634pp, ISBN 0-201-03809-9 ।
    • खंड 2, दूसरा संस्करण, 1981, xiii+ 688पीपी। आईएसबीएन 0-201-03822-6।
    • वॉल्यूम 4, फॉलिकल 2: सभी टुपल्स और क्रमपरिवर्तन उत्पन्न करना, (एडिसन-वेस्ली, 14 फरवरी 2005) v+127pp, ISBN 0-201-85393-0
    • वॉल्यूम 4, फॉलिकल 3: सभी संयोजन और विभाजन उत्पन्न करना. (एडिसन-वेस्ले, 26 जुलाई 2005) vi+150pp, ISBN 0-201-85394-9
    • वॉल्यूम 4, फॉलिकल 4: जनरेटिंग ऑल ट्रीज़ - हिस्ट्री ऑफ़ कॉम्बिनेटोरियल जेनरेशन, (एडिसन-वेस्ले, फरवरी 6, 2006) vi+120pp, ISBN 0-321-33570-8
    • वॉल्यूम 4, फ़ॉस्किकल 0: कॉम्बिनेटरियल एल्गोरिदम और बूलियन फ़ंक्शन का परिचय, (एडिसन-वेस्ले प्रोफेशनल, 28 अप्रैल, 2008) vi+240pp, ISBN 0-321-53496-4
    • वॉल्यूम 4, फॉलिकल 1: बिटवाइज़ ट्रिक्स और तकनीकें; द्विआधारी निर्णय आरेख(एडिसन-वेस्ली प्रोफेशनल, 27 मार्च 2009) viii+260pp,

    वैश्विक कंप्यूटर साहित्य बाजार में, बुनियादी एल्गोरिदम सिखाने और प्रोग्रामिंग में उपयोग करने के लिए डिज़ाइन की गई कई पुस्तकें हैं। उनमें से काफी कुछ हैं, और वे काफी हद तक एक दूसरे के साथ प्रतिस्पर्धा करते हैं। हालाँकि, उनमें से एक विशेष पुस्तक है। यह डी. ई. नुथ का तीन-खंडों वाला "प्रोग्रामिंग की कला" है, जो सभी प्रतियोगिता से अलग है, कंप्यूटर विज्ञान पर विश्व साहित्य के स्वर्ण कोष में शामिल है और प्रोग्रामिंग से जुड़े लगभग सभी लोगों के लिए एक संदर्भ पुस्तक है।

    प्रकाशकों के रूप में, हम पुस्तक के मूल्य को देखते हैं कि इसका उद्देश्य प्रोग्रामिंग तकनीकों को पढ़ाना नहीं है, बल्कि यदि संभव हो तो प्रोग्रामिंग की "कला" सिखाने के लिए, कार्यक्रमों में सुधार के लिए बहुत सारे व्यंजनों की पेशकश करता है, और, सबसे महत्वपूर्ण , आपको सिखाता है कि इन व्यंजनों को स्वयं कैसे खोजना है।

    यह कोई रहस्य नहीं है कि हमारे प्रोग्रामर दुनिया के सबसे उच्च योग्य विशेषज्ञों में से हैं। वे विदेशों में प्रोग्रामिंग और कंप्यूटर विज्ञान के राष्ट्रीय स्कूल का पर्याप्त रूप से प्रतिनिधित्व करते हैं, जिसने कंप्यूटर विज्ञान की मूलभूत नींव के निर्माण में महत्वपूर्ण योगदान दिया है। इस स्तर को बनाए रखने और आगे बढ़ने के लिए, इस क्षेत्र में मुख्य विश्व उपलब्धियों को दर्शाने वाली रूसी में पुस्तकों को समय पर प्रकाशित करना आवश्यक है। डी. ई. नुथ की तीन खंड वाली "द आर्ट ऑफ प्रोग्रामिंग" ऐसी ही एक किताब है।

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

    - विक्टर श्टोंडा, गेन्नेडी पेट्रीकोवेट्स, एलेक्सी ओरलोविच, प्रकाशक

    प्रोग्रामिंग की कला के बारे में

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

    इस पुस्तक के संयुक्त राज्य अमेरिका में 1972 में पहले संस्करण के बाद से लगभग 30 वर्ष बीत चुके हैं। इसका रूसी सहित दुनिया की अधिकांश भाषाओं में अनुवाद किया गया है। आज तक, सीआईएस देशों के क्षेत्र में, डी. ई. नुथ की तीन-खंड वाली पुस्तक ग्रंथ सूची दुर्लभ हो गई है। 1998 में, द आर्ट ऑफ़ प्रोग्रामिंग का तीसरा संस्करण संयुक्त राज्य अमेरिका में प्रकाशित हुआ था। इसने पिछले संस्करणों की सामग्री की प्रस्तुति के अनुक्रम को बरकरार रखा, लेकिन संदर्भों की सूची में काफी विस्तार किया, जिसमें नवीनतम और सबसे महत्वपूर्ण परिणाम शामिल हैं, नए अभ्यास जोड़े गए और टिप्पणियाँ, और अशुद्धियों को समाप्त कर दिया। द आर्ट ऑफ प्रोग्रामिंग की विश्वव्यापी लोकप्रियता को देखते हुए, हमें रूसी में एक नए अनुवादित संस्करण की उम्मीद करनी चाहिए थी, जिसे आप लंबे समय से अपने हाथों में पकड़े हुए हैं।

    डी. ई. नुथ की "द आर्ट ऑफ़ प्रोग्रामिंग" की सफलता क्या है?

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

    दूसरे, पुस्तक में शामिल सावधानी से चयनित सामग्री में एल्गोरिदम के मुख्य मौलिक वर्ग शामिल हैं, जो एक या दूसरे रूप में प्रोग्रामिंग अभ्यास में सबसे अधिक बार सामना किए जाते हैं।

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

    चौथा, प्रस्तुति की महारत पर ध्यान दिया जाना चाहिए। पुस्तक पाठकों की एक विस्तृत श्रृंखला के लिए अभिप्रेत है - नौसिखिए छात्रों से लेकर पेशेवर प्रोग्रामर तक। हर कोई अपने स्तर पर कंप्यूटर एल्गोरिदम सीखने में दिलचस्पी लेगा। सामग्री पर्याप्त है। विधियों के सार को समझने के लिए गणित के विशेष वर्गों या विशेष प्रोग्रामिंग तकनीकों के ज्ञान की आवश्यकता नहीं है। प्लॉट निर्माण की एक निश्चित "संगीतमय" रचना का पता लगाया जा सकता है (घर पर, डी। ई। नुथ का एक छोटा सा अंग है, जिस पर वह खेलता है)।

    प्रोग्रामिंग की कला की सफलता के लिए अवयवों की सूची को आसानी से जारी रखा जा सकता है।

    इन पंक्तियों के लेखक ने स्टैनफोर्ड विश्वविद्यालय में एक इंटर्नशिप के दौरान 1976-1977 में प्रोफेसर नुथ द्वारा प्रस्तुत "द आर्ट ऑफ़ प्रोग्रामिंग" पाठ्यक्रम में भाग लिया। तब प्रोग्रामिंग तकनीकों का एल्गोरिथम आधार बनाया गया था, जिसके मूल में डी। ई। नुथ थे। कई चर्चाएँ, सेमिनार, रचनात्मक विचार थे।

    महत्वपूर्ण पुस्तकें हमेशा लेखक के भाग्य से जुड़ी होती हैं। डोनाल्ड इरविन नुथ ने 1962 में द आर्ट ऑफ़ प्रोग्रामिंग पर काम शुरू किया। यह आज भी जारी है। उसकी कई योजनाएँ हैं। "प्रोग्रामिंग की कला" के नए संस्करणों से आगे, जिसका पाठक बेसब्री से इंतजार कर रहे हैं।

    - प्रोफेसर अनातोली अनीसिमोव

    अनुवाद संपादक से

    डी.ई. नुथ द्वारा द आर्ट ऑफ़ प्रोग्रामिंग के पहले संस्करण को लगभग 25 वर्ष बीत चुके हैं। फिर भी, पुस्तक न केवल पुरानी हो गई है, बल्कि अभी भी प्रोग्रामिंग कला का मुख्य मार्गदर्शक बनी हुई है, एक ऐसी पुस्तक जिससे कोई इस कला के सार और विशेषताओं को समझना सीखता है।

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

    अध्याय 3 में काफी बदलाव किया गया है, विशेष रूप से खंड 3.5 और 3.6, साथ ही खंड 4.5.2, 4.7, 5.1.4, 5.3, 5.4.9, 6.2.2, 6.4, 6.5, आदि।

    स्वाभाविक रूप से, पुस्तक के एक नए संस्करण की आवश्यकता थी।

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

    अनुवाद करते समय, हमने लेखक की शैली, पदनाम और सामग्री प्रस्तुत करने के तरीके को संरक्षित करने का प्रयास किया। ज्यादातर मामलों में, रूसी में वैज्ञानिक साहित्य में अपनाई गई शर्तों का उपयोग किया गया था। बशर्ते, यदि आवश्यक हो, अंग्रेजी समकक्ष. कई कारणों से, विशेष रूप से कुछ वर्गों की जटिलता के कारण, द आर्ट ऑफ़ प्रोग्रामिंग को पढ़ना आसान नहीं है। पुस्तक को समझना कठिन बनाने वाले कारणों में से एक यह है कि लेखक इसे किस प्रकार प्रस्तुत करता है; एक बार जब आपको इसकी आदत हो जाती है, तो आप इसे पढ़ने में बहुत आसान बना सकते हैं।

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

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

    - प्रोफेसर यू वी कोजाचेंको

    प्रस्तावना

    प्रिय पाठकों! आप एक किताब पकड़े हुए हैं

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

    अब, एक शक की छाया के बिना, हम कह सकते हैं कि यदि आप निर्देशों का पालन करते हैं, तो हर व्यंजन आपके लिए वैसा ही निकलेगा जैसा हमारे लिए, भले ही आपने पहले कभी नहीं पकाया हो।
    - द मैक्कल कुकबुक (1963)

    डिजिटल कंप्यूटर के लिए प्रोग्राम तैयार करने की प्रक्रिया एक बहुत ही रोमांचक गतिविधि है। और बात केवल यह नहीं है कि यह आर्थिक रूप से खुद को सही ठहराती है और वैज्ञानिक बिंदुदृष्टि; यह संगीत या कविता लिखते समय रचनात्मक लोगों द्वारा अनुभव किए गए अनुभव के समान सौंदर्य संबंधी अनुभव भी पैदा कर सकता है। आप अपने हाथों में एक बहु-मात्रा संस्करण का पहला खंड धारण कर रहे हैं, जिसका उद्देश्य पाठक को विभिन्न प्रकार के ज्ञान और कौशल प्रदान करना है जो प्रोग्रामर के शिल्प को बनाते हैं।

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

    a) एक डिजिटल कंप्यूटर एक संग्रहीत प्रोग्राम के साथ कैसे काम करता है, इसकी कुछ समझ; साथ ही, इलेक्ट्रॉनिक्स को समझना जरूरी नहीं है, मुख्य बात यह समझना है कि कमांड को कंप्यूटर की मेमोरी में कैसे संग्रहीत किया जा सकता है और फिर अनुक्रमिक रूप से निष्पादित किया जा सकता है;

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

    सी) सबसे बुनियादी कंप्यूटर तकनीकों का ज्ञान, जैसे लूपिंग (निर्देशों का एक सेट दोहराना), साथ ही सूचकांकों के साथ सबरूटीन्स और चर का उपयोग;

    घ) "मेमोरी", "रजिस्टर", "बिट्स", "फ्लोटिंग पॉइंट", "ओवरफ्लो", "सॉफ्टवेयर" जैसे सामान्य कंप्यूटर शब्दों का ज्ञान; पाठ में परिभाषित नहीं किए गए अधिकांश शब्दों को प्रत्येक खंड के अंत में वर्णानुक्रमिक अनुक्रमणिका में समझाया गया है।

    इन चार स्थितियों को संभवतः एक आवश्यकता में जोड़ा जा सकता है: पाठक को कम से कम एक कंप्यूटर के लिए कम से कम चार प्रोग्राम लिखने और डीबग करने का अनुभव होना चाहिए।

    मैंने इन किताबों को इस तरह लिखने की कोशिश की है कि ये कई अलग-अलग उद्देश्यों की पूर्ति कर सकें। सबसे पहले, वे एक संदर्भ मार्गदर्शिका हैं जो विज्ञान के कई महत्वपूर्ण क्षेत्रों से ज्ञान को एक साथ लाती हैं। दूसरे, उनका उपयोग विश्वविद्यालयों के लिए स्व-शिक्षा सहायता और प्रोग्रामिंग या कंप्यूटर विज्ञान की पाठ्यपुस्तकों के रूप में किया जा सकता है। इस वजह से मैंने शामिल किया है एक बड़ी संख्या कीअभ्यास किया और उनमें से अधिकांश के उत्तर प्रदान किए। इसके अलावा, मैंने "पानी गिराने" के बजाय तथ्यों पर ध्यान केंद्रित करने और सामान्य तर्क में संलग्न होने की कोशिश की।

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

    इन पुस्तकों का विषय निम्नानुसार तैयार किया जा सकता है: "गैर-संख्यात्मक विश्लेषण"। कंप्यूटर आमतौर पर संख्यात्मक समस्याओं को हल करने से जुड़े होते हैं, जैसे कि एक समीकरण की जड़ों को खोजना, संख्यात्मक प्रक्षेप, एकीकरण, आदि। संख्यात्मक कंप्यूटर प्रोग्रामिंग एक अत्यंत रोचक और तेजी से विकसित होने वाला क्षेत्र है;

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

    गैर-संख्यात्मक विश्लेषण के क्षेत्र में शोध के परिणाम कई तकनीकी पत्रिकाओं में बिखरे हुए हैं। मेरा लक्ष्य इस विशाल मात्रा की जानकारी से केवल मूलभूत तरीकों को निकालना था जो कि विभिन्न प्रकार की प्रोग्रामिंग स्थितियों पर लागू किया जा सकता है। मैंने चयनित जानकारी को सामान्यीकृत करने की कोशिश की है ताकि कम या ज्यादा "सिद्धांत" कहा जा सके, और यह भी दिखाया जा सके कि इस सिद्धांत को विभिन्न व्यावहारिक समस्याओं पर कैसे लागू किया जाए।

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

    प्रोग्रामिंग की कला नामक पुस्तकों का पूरा सेट, निम्नलिखित मूल संरचना है।

    वॉल्यूम 1. मूल एल्गोरिदम

    अध्याय 1. बुनियादी अवधारणाएँ अध्याय 2. सूचना संरचनाएँ

    वॉल्यूम 2. व्युत्पन्न एल्गोरिदम

    अध्याय 3 यादृच्छिक संख्याएँ अध्याय 4 अंकगणित

    वॉल्यूम 3. छँटाई और खोज

    अध्याय 5 छँटाई अध्याय 6 खोज

    वॉल्यूम 4. कॉम्बिनेटरियल एल्गोरिदम

    अध्याय 7 मिश्रित खोज अध्याय 8 पुनरावर्तन

    वॉल्यूम 5 सिंटैक्टिक एल्गोरिदम

    अध्याय 9 लेक्सिकोग्राफिक खोज अध्याय 10 पार्सिंग

    वॉल्यूम 4 में एक बहुत बड़ा विषय शामिल है, इसलिए इसमें वास्तव में तीन अलग-अलग पुस्तकें (वॉल्यूम 4ए, 4बी और 4सी) शामिल हैं। अधिक विशिष्ट विषयों पर दो अतिरिक्त संस्करणों को जारी करने की भी योजना है: खंड 6, भाषाओं का सिद्धांत (अध्याय 11), और खंड 7, संकलनकर्ता (अध्याय 12)।

    मैंने यह काम 1962 में सूचीबद्ध सभी अध्यायों वाली एक पुस्तक लिखने के इरादे से शुरू किया था, लेकिन मुझे जल्द ही एहसास हुआ कि चुने हुए विषयों में गहराई से जाना आवश्यक था, न कि केवल "सतह पर फिसलना"। नतीजा इतनी लंबाई का पाठ था कि प्रत्येक अध्याय की सामग्री एक विश्वविद्यालय सेमेस्टर के दौरान अध्ययन करने के लिए पर्याप्त थी। और यह स्पष्ट हो गया कि सामग्री को कई अलग-अलग खंडों में विभाजित करना आवश्यक था। मुझे पता है कि केवल एक या दो अध्यायों वाली पुस्तक अजीब लगती है, लेकिन मैंने क्रॉस-रेफरेंस को सरल बनाने के लिए मूल अध्याय नंबरिंग रखने का फैसला किया। वॉल्यूम 1-5 के एक संक्षिप्त संस्करण को अधिक सामान्य संदर्भ और/या छात्र पाठ्यपुस्तक के रूप में उपयोग करने की योजना बनाई गई है; इसमें इन खंडों में बड़ी मात्रा में सामग्री शामिल होगी, जिसमें अधिक विशिष्ट जानकारी छोड़ी जाएगी। संक्षिप्त संस्करण पूर्ण संस्करण के समान अध्याय क्रमांकन बनाए रखेगा।

    वॉल्यूम 1 को अध्यायों के पूरे सेट के "क्रॉसओवर" के रूप में देखा जा सकता है, इस अर्थ में कि इसमें मूलभूत जानकारी शामिल है जो अन्य सभी पुस्तकों में उपयोग की जाती है। दूसरी ओर, खंड 2-5 को एक दूसरे से स्वतंत्र रूप से पढ़ा जा सकता है। खंड 1 केवल अन्य खंडों को पढ़ते समय एक मार्गदर्शक के रूप में उपयोग किया जाने वाला संदर्भ नहीं है; यह डेटा संरचना (अध्याय 2 पर ध्यान केंद्रित) या असतत गणित (अनुभाग 1.1, 1.2, 1.3.3 और 2.3.4 पर ध्यान केंद्रित) या मशीन भाषा में प्रोग्रामिंग (ध्यान केंद्रित) पर विश्वविद्यालय की पाठ्यपुस्तक या स्व-अध्ययन मार्गदर्शिका के रूप में भी काम कर सकता है। खंड 1.3 और 1.4)।

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

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

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

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

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

    अधिकांश मुश्किल निर्णयइन पुस्तकों को तैयार करने में मुझे अपनाना था जिस तरह से विभिन्न विधियों को प्रस्तुत किया गया था। फ्लोचार्ट्स और एल्गोरिदम के चरण-दर-चरण विवरण के फायदे सर्वविदित हैं; इन मुद्दों पर एसीएम कम्युनिकेशंस, वॉल्यूम में "कंप्यूटर-ड्रॉन फ़्लोचार्ट्स" लेख में चर्चा की गई है। 6 (सितंबर 1963), पृष्ठ 555-563। किसी भी कंप्यूटर एल्गोरिथ्म का वर्णन करने के लिए एक औपचारिक और सटीक भाषा की भी आवश्यकता होती है। इसलिए मुझे यह तय करना था कि किस भाषा का उपयोग करना है: एक बीजगणितीय जैसे ALGOL या FORTRAN, या एक मशीन-उन्मुख। संभवतः आज के कई कंप्यूटर वैज्ञानिक मशीन-उन्मुख भाषा के उपयोग के मेरे निर्णय से असहमत होंगे, लेकिन मैंने यह सुनिश्चित किया कि यह सही पसंद. इसके निम्नलिखित कारण हैं।

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

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

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

    घ) जो कोई भी कंप्यूटर में गंभीरता से रूचि रखता है उसे मशीन भाषा का अच्छा ज्ञान होना चाहिए, क्योंकि यह कंप्यूटर के संचालन को रेखांकित करता है।

    ई) कई उदाहरणों में दिए गए प्रोग्राम के आउटपुट को समझने के लिए किसी भी मामले में मशीन भाषा का कुछ ज्ञान आवश्यक है।

    f) नई बीजगणितीय भाषाएं हर पांच साल में फैशन में आती और जाती हैं, जबकि मैं "शाश्वत सत्य" के बारे में बात करने की कोशिश करता हूं।

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

    और यदि आप मशीन-उन्मुख भाषा का उपयोग करने का निर्णय लेते हैं, तो कौन सी भाषा को प्राथमिकता दी जानी चाहिए? मैं एक विशेष मशीन X के लिए एक भाषा चुन सकता था, लेकिन तब जो लोग एक अलग कंप्यूटर का उपयोग करते हैं, वे सोचेंगे कि यह पुस्तक केवल कंप्यूटर X को ध्यान में रखकर लिखी गई है। इसके अलावा, मशीन X में संभवतः कई विशेषताएं हैं जिनके लिए यह पूरी तरह से अनुपयुक्त है। यह पुस्तक, लेकिन इसे अभी भी प्रस्तुत करने की आवश्यकता है। और अंत में, दो वर्षों में, मशीन X का निर्माता मशीन X+1 या 10X का उत्पादन करेगा, और कंप्यूटर X अब किसी के लिए दिलचस्प नहीं होगा।

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

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

    SACM - कम्प्यूटिंग मशीनरी के लिए एसोसिएशन का संचार

    JACM - कम्प्यूटिंग मशीनरी के लिए एसोसिएशन का जर्नल

    संबंद्ध करना जे - कंप्यूटर जर्नल (ब्रिटिश कंप्यूटर सोसायटी)

    गणित। संबंद्ध करना - संगणना का गणित

    एएमएम - अमेरिकी गणितीय मासिक

    SICOMP - कंप्यूटिंग पर SIAM जर्नल

    कंप्यूटर विज्ञान की नींव पर FOCS - IEEE संगोष्ठी

    सोडा - असतत एल्गोरिदम पर एसीएम-सियाम संगोष्ठी

    एसटीओसी - कम्प्यूटिंग के सिद्धांत पर एसीएम संगोष्ठी

    क्रेले - जर्नल फर डाई राइन एंड एंगवंडते मैथमेटिक्स

    उदाहरण के लिए, "CACM 6 (1963), 555-563" का अर्थ इस प्रस्तावना के पिछले अनुच्छेदों में से किसी एक में उल्लिखित जर्नल का संदर्भ है। मैंने ठोस गणित को संदर्भित करने के लिए "CMatA" संक्षिप्त नाम का भी उपयोग किया है, जिसे खंड 1.2 के परिचय में संदर्भित किया गया है।

    इन पुस्तकों में अधिकांश तकनीकी सामग्री अभ्यासों में है। यदि गैर-तुच्छ अभ्यास का विचार मेरा नहीं था, तो मैंने इसके लेखक का उल्लेख करने का प्रयास किया। साहित्य के संदर्भ आमतौर पर अनुभाग के पाठ में या अभ्यास के उत्तर में दिए जाते हैं। लेकिन कई मामलों में, अभ्यास अप्रकाशित सामग्री पर आधारित होते हैं जिन्हें संदर्भित नहीं किया जा सकता।

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

    तीसरे संस्करण के लिए प्रस्तावना

    METAFONT और TEX टाइपिंग सिस्टम विकसित करने में दस साल बिताने के बाद, अब मैं एक किताब टाइप करने के लिए इन सिस्टमों का उपयोग करने के अपने सपने को पूरा कर सकता हूँ। प्रोग्रामिंग की कला. अंत में, मैं इस पुस्तक का पूरा पाठ एक व्यक्तिगत कंप्यूटर में स्थानांतरित करने में सक्षम था और इस प्रकार इसका इलेक्ट्रॉनिक संस्करण प्राप्त कर सका, जो भविष्य में मुद्रण और प्रदर्शन प्रौद्योगिकी में किसी भी बदलाव की अनुमति देगा। काम करने के इस तरीके ने मुझे वस्तुतः हजारों सुधार करने का अवसर दिया है; मैंने वह हासिल कर लिया है जिसका मैंने इतने लंबे समय से सपना देखा था।

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

    इस प्रकार, "द आर्ट ऑफ़ प्रोग्रामिंग" पुस्तक पर काम जारी है। इसीलिए इस पुस्तक के कुछ भाग "निर्माण की प्रक्रिया में" आइकन से शुरू होते हैं (यह इस तथ्य के लिए एक प्रकार की क्षमायाचना है कि प्रदान की गई जानकारी नवीनतम डेटा नहीं है)। मेरे फोल्डर महत्वपूर्ण सामग्री से भरे हुए हैं जिन्हें मैं वॉल्यूम 1 के अंतिम, शानदार चौथे संस्करण में शामिल करने की योजना बना रहा हूं; यह शायद 15 साल में सामने आएगा। लेकिन पहले मुझे खंड 4 और 5 को पूरा करना है। मैं चाहता हूं कि वे छपाई के लिए तैयार होते ही प्रकाशित हो जाएं।

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

    * इस प्रकाशन के मूल को संदर्भित करता है। - लगभग। ईडी।
    ** रूसी संस्करण की तैयारी के समय ज्ञात त्रुटियों को ठीक कर लिया गया है। -लगभग। ईडी।

    डी.ई.के.
    स्टैनफोर्ड, कैलिफोर्निया
    अप्रैल 1997

    पिछले बीस वर्षों में दुनिया बदल गई है।
    - बिल गेट्स (1995)


    अध्याय 1. बुनियादी अवधारणाएं ........................................ ................... ... 27
    1.1। एल्गोरिदम ………………………………………। ........... 27
    1.2। गणितीय परिचय................................................... 37
    1.2.1। गणितीय आगमन................................................... 38
    1.2.2। संख्याएं, शक्तियां और लघुगणक................................... 49
    1.2.3। रकम और उत्पाद ................................................ 56
    1.2.4। पूर्णांक कार्य और प्राथमिक संख्या सिद्धांत ........... 68
    1.2.5। क्रमचय और भाज्य................................... 75
    1.2.6। द्विपद गुणांक................................... 82
    1.2.7। हार्मोनिक नंबर ……………………………………… 105
    1.2.8। फाइबोनैचि संख्याएं........................................... 109
    1.2.9। जनरेटिंग फंक्शन्स........................................... 118
    1.2.10। एल्गोरिथम विश्लेषण........................................... 127
    *1.2.11. स्पर्शोन्मुख अभ्यावेदन ........................... 138
    *1.2.11.1। प्रतीक के बारे में .......................................... 138
    *1.2.11.2. यूलर का योग सूत्र................... 143
    *1.2.11.3. स्पर्शोन्मुख सूत्रों का अनुप्रयोग ................. 148
    1.3। मिक्स ………………………………………… ........... 156
    1.3.1। मिक्स का विवरण ........................... 156
    1.3.2। कंप्यूटर असेम्बली लैंग्वेज मिक्स ………………………… 178
    1.3.3। क्रमचय के लिए आवेदन......................... 198
    1.4। कुछ मूलभूत प्रोग्रामिंग तकनीकें......................... 221
    1.4.1। सबरूटीन्स ................................................ 221
    1.4.2। कोरूटीन्स................................................................ .. 229
    1.4.3। दुभाषिया कार्यक्रम ………………………………………। ... 237
    1.4.3.1। मिक्स सिम्युलेटर ................................... 239
    *1.4.3.2. रूटिंग प्रोग्राम्स........................... 248
    1.4.4। इनपुट और आउटपुट ............................................... ............ 251
    1.4.5। इतिहास और ग्रंथ सूची ................................... 266

    अध्याय 2. सूचना संरचना ........................................ 271
    2.1। परिचय ................................................. .... 271
    2.2। रैखिक सूचियाँ ………………………………………। .... 277
    2.2.1। ढेर, कतारें, और डेक................................... 277
    2.2.2। अनुक्रमिक वितरण........................... 283
    2.2.3। संबंधित वितरण................................... 295
    2.2.4। चक्रीय सूची ................................................ 315
    2.2.5। दोगुनी लिंक्ड सूचियां................................... 322
    2.2.6। ऐरे और ऑर्थोगोनल सूचियां................................... 341
    2.3। पेड़................................................. ..... 352
    2.3.1। बाइनरी ट्री को पार करना........................... 362
    2.3.2। वृक्षों का द्विआधारी वृक्षों के रूप में प्रतिनिधित्व........ 380
    2.3.3। वृक्षों के अन्य निरूपण........................... 395
    2.3.4। पेड़ों के बुनियादी गणितीय गुण ...................... 410
    2.3.4.1। मुफ्त पेड़........................... 410
    2.3.4.2। ओरिएंटेड ट्री .............................. 420
    *2.3.4.3. अनंत वृक्ष प्रमेयिका................... 431
    *2.3.4.4. वृक्षों की गणना........................... 435
    2.3.4.5। पथ की लंबाई ……………………………… 449
    *2.3.4.6. इतिहास और ग्रंथ सूची ........................... 456
    2.3.5। सूचियाँ और कचरा संग्रह ........................................ 459
    2.4। बहुसंबद्ध संरचनाएं ........................................ 476
    2.5। डायनामिक मेमोरी एलोकेशन ........................................................ .. 488
    2.6। इतिहास और ग्रंथ सूची ........................................ 512

    अभ्यासों के उत्तर ........................................................ ...................... 521

    परिशिष्ट ए। कुछ स्थिरांक के मूल्यों की तालिकाएँ ................................... 683
    ए.आई. मूल स्थिरांक (दशमलव) ........................................... 683
    ए.2. मूल स्थिरांक (ऑक्टल) ................................................ 684
    ए.जेड. हार्मोनिक संख्या, बर्नौली संख्या और फाइबोनैचि संख्या के मान...... 685

    परिशिष्ट बी। मुख्य प्रतीक ........................................ ................. 687

    अनुक्रमणिका ................................................. ................................ 692

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

    इस रिलीज़ में द आर्ट ऑफ़ प्रोग्रामिंग के 3 खंड शामिल हैं:

    प्रोग्रामिंग की कला। वॉल्यूम 1. बुनियादी एल्गोरिदम।
    प्रोग्रामिंग की कला। वॉल्यूम 2. व्युत्पन्न एल्गोरिदम।
    प्रोग्रामिंग की कला। वॉल्यूम 3. छँटाई और खोज।

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

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

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

परियोजना का समर्थन करें - लिंक साझा करें, धन्यवाद!
यह भी पढ़ें
रूसी-तातार पूर्ण शैक्षिक शब्दकोश रूसी-तातार पूर्ण शैक्षिक शब्दकोश कार्ड, नंबर और हाथ पर शादी के लिए अटकल कार्ड, नंबर और हाथ पर शादी के लिए अटकल भावी पति के लिए अनुमान लगाने के सर्वोत्तम तरीके: बैठक कब और कहाँ होगी, विवाह कैसा होगा भावी पति के लिए अनुमान लगाने के सर्वोत्तम तरीके: बैठक कब और कहाँ होगी, विवाह कैसा होगा