Algorithm engineering
एल्गोरिदम इंजीनियरिंग कंप्यूटर एल्गोरिदम के डिजाइन, विश्लेषण, कार्यान्वयन, अनुकूलन, प्रोफाइलिंग और प्रयोगात्मक मूल्यांकन पर केंद्रित है, जो सॉफ्टवेयर इंजीनियरिंग में एल्गोरिदम सिद्धांत और एल्गोरिदम के व्यावहारिक अनुप्रयोगों के बीच की खाई को पाटता है। यह एल्गोरिदमिक अनुसंधान के लिए एक सामान्य पद्धति है। 1995 में, एक एन. एस. एफ.-प्रायोजित कार्यशाला की एक रिपोर्ट "कम्प्यूटिंग के सिद्धांत (टी. ओ. सी.) समुदाय के वर्तमान लक्ष्यों और दिशाओं का आकलन करने के उद्देश्य से" ने चिकित्सकों द्वारा सैद्धांतिक अंतर्दृष्टि को अपनाने की धीमी गति को एक महत्वपूर्ण मुद्दे के रूप में पहचाना और चिकित्सकों द्वारा अनिश्चितता को कम करने के उपायों का सुझाव दिया कि क्या एक निश्चित सैद्धांतिक सफलता उनके काम के क्षेत्र में व्यावहारिक लाभ में बदल जाएगी, और उपयोग के लिए तैयार एल्गोरिदम पुस्तकालयों की कमी से निपटा जाएगी, जो एल्गोरिदमिक समस्याओं के लिए स्थिर, बग-मुक्त और अच्छी तरह से परीक्षण किए गए कार्यान्वयन प्रदान करते हैं और पुस्तकालय उपभोक्ताओं के लिए उपयोग में आसान इंटरफेस को उजागर करते हैं। लेकिन साथ ही, गणितीय विश्लेषण में कठिनाइयों के कारण आशाजनक एल्गोरिथमिक दृष्टिकोणों की उपेक्षा की गई है। "एल्गोरिथम इंजीनियरिंग" शब्द का उपयोग पहली बार 1997 में विशिष्टता के साथ किया गया था, जिसमें एल्गोरिथम इंजीनियरिंग (डब्ल्यू. ए. ई. 97) पर पहली कार्यशाला का आयोजन ग्यूसेप एफ. इटालियानो द्वारा किया गया था। एल्गोरिदम सिद्धांत से अंतर एल्गोरिदम इंजीनियरिंग का इरादा एल्गोरिदम सिद्धांत को बदलने या प्रतिस्पर्धा करने का नहीं है, बल्कि प्रयोगात्मक एल्गोरिदमिक्स (जिसे अनुभवजन्य एल्गोरिदमिक्स भी कहा जाता है) के साथ अपने औपचारिक दृष्टिकोणों को समृद्ध, परिष्कृत और सुदृढ़ करने का प्रयास करता है। इस तरह यह उन मामलों में एल्गोरिदम की दक्षता और प्रदर्शन में नई अंतर्दृष्टि प्रदान कर सकता है जहां हाथ में एल्गोरिदम सैद्धांतिक विश्लेषण के लिए कम अनुकूल है, औपचारिक विश्लेषण निराशावादी रूप से ऐसी सीमाओं का सुझाव देता है जो व्यावहारिक रुचि के इनपुट पर दिखाई देने की संभावना नहीं है, एल्गोरिदम आधुनिक हार्डवेयर वास्तुकला की पेचीदगियों पर निर्भर करता है जैसे कि डेटा स्थान, शाखा भविष्यवाणी, निर्देश स्टॉल, निर्देश विलंबता जो एल्गोरिदम सिद्धांत में उपयोग किया जाने वाला मशीन मॉडल आवश्यक विवरण में पकड़ने में असमर्थ है, विभिन्न स्थिर लागतों और एसिम्प्टोटिक व्यवहारों के साथ प्रतिस्पर्धी एल्गोरिदम के बीच क्रॉसओवर को निर्धारित करने की आवश्यकता है। कार्यप्रणाली कुछ शोधकर्ता एल्गोरिथ्म इंजीनियरिंग की कार्यप्रणाली को एक चक्र के रूप में वर्णित करते हैं जिसमें एल्गोरिथ्म डिजाइन, विश्लेषण, कार्यान्वयन और प्रयोगात्मक मूल्यांकन शामिल होते हैं, जो मशीन मॉडल या यथार्थवादी इनपुट जैसे आगे के पहलुओं से जुड़े होते हैं। उनका तर्क है कि एल्गोरिथ्म इंजीनियरिंग को प्रायोगिक एल्गोरिथ्म के साथ तुलना करना बहुत सीमित है, क्योंकि डिजाइन और विश्लेषण, कार्यान्वयन और प्रयोग को अलग-अलग गतिविधियों के रूप में देखना एल्गोरिथ्म इंजीनियरिंग के उन तत्वों के बीच महत्वपूर्ण प्रतिक्रिया लूप की अनदेखी करता है। जबकि विशिष्ट अनुप्रयोग एल्गोरिथ्म इंजीनियरिंग की कार्यप्रणाली से बाहर हैं, वे समस्या और अंतर्निहित मशीन के यथार्थवादी मॉडल को आकार देने में महत्वपूर्ण भूमिका निभाते हैं, और प्रयोगों के लिए वास्तविक इनपुट और अन्य डिजाइन मापदंडों की आपूर्ति करते हैं। एल्गोरिदम सिद्धांत की तुलना में, जो आमतौर पर एल्गोरिदम के एसिम्प्टोटिक व्यवहार पर केंद्रित होता है, एल्गोरिदम इंजीनियरों को आगे की आवश्यकताओं को ध्यान में रखने की आवश्यकता होती हैः एल्गोरिदम की सरलता, वास्तविक हार्डवेयर पर प्रोग्रामिंग भाषाओं में कार्यान्वयन क्षमता, और कोड के पुनः उपयोग की अनुमति। इसके अतिरिक्त, एल्गोरिदम के स्थिर कारकों का वास्तविक दुनिया के निवेश पर इतना प्रभाव पड़ता है कि कभी-कभी खराब एसिम्प्टोटिक व्यवहार वाला एल्गोरिदम कम स्थिर कारकों के कारण व्यवहार में बेहतर प्रदर्शन करता है। विश्लेषण कुछ समस्याओं को नियतात्मक एल्गोरिदम की तुलना में सरल और अधिक कुशल तरीके से शोध और यादृच्छिक एल्गोरिदम के साथ हल किया जा सकता है। दुर्भाग्य से, इससे सरल यादृच्छिक एल्गोरिदम का विश्लेषण करना भी मुश्किल हो जाता है क्योंकि इसमें सूक्ष्म निर्भरताओं को ध्यान में रखा जाना चाहिए। कार्यान्वयन सैद्धांतिक अंतर्दृष्टि, तैयार किए गए एल्गोरिदम, प्रोग्रामिंग भाषाओं और हार्डवेयर के बीच विशाल शब्दार्थ अंतराल भी सरल एल्गोरिदम के कुशल कार्यान्वयन के लिए एक चुनौती पेश करते हैं, क्योंकि छोटे कार्यान्वयन विवरण निष्पादन व्यवहार पर लहरदार प्रभाव डाल सकते हैं। एक एल्गोरिथ्म के कई कार्यान्वयनों की तुलना करने का एकमात्र विश्वसनीय तरीका ट्यूनिंग और प्रोफाइलिंग पर काफी समय बिताना, उन एल्गोरिदम को कई आर्किटेक्चर पर चलाना और उत्पन्न मशीन कोड को देखना है। प्रयोग देखें प्रायोगिक एल्गोरिदम अनुप्रयोग इंजीनियरिंग प्रयोगों के लिए उपयोग किए जाने वाले एल्गोरिदम के कार्यान्वयन अनुप्रयोगों में उपयोग करने योग्य कोड से महत्वपूर्ण तरीकों से भिन्न होते हैं। जबकि पहला प्रयोगों के दौरान माप के लिए तेज प्रोटोटाइपिंग, प्रदर्शन और उपकरण को प्राथमिकता देता है, बाद वाले को निवेश के विशेष वर्गों के लिए गहन परीक्षण, रखरखाव, सरलता और ट्यूनिंग की आवश्यकता होती है। एल्गोरिदम पुस्तकालय एल. ई. डी. ए. जैसे स्थिर, अच्छी तरह से परीक्षण किए गए एल्गोरिदम पुस्तकालय अनुप्रयोगों में नए एल्गोरिदम को अपनाने में तेजी लाकर प्रौद्योगिकी हस्तांतरण में महत्वपूर्ण भूमिका निभाते हैं। इस तरह के पुस्तकालय व्यवसायियों के लिए आवश्यक निवेश और जोखिम को कम करते हैं, क्योंकि यह अकादमिक अनुसंधान के परिणामों को समझने और लागू करने के बोझ को दूर करता है। एल्गोरिदम इंजीनियरिंग पर दो मुख्य सम्मेलन प्रतिवर्ष आयोजित किए जाते हैं, अर्थात्ः प्रायोगिक एल्गोरिदम (एस. ई. ए.) पर संगोष्ठी, जिसकी स्थापना 1997 में की गई थी (जिसे पहले डब्ल्यू. ई. ए. के नाम से जाना जाता था)। एल्गोरिदम इंजीनियरिंग और प्रयोगों पर एस. आई. ए. एम. बैठक (ए. एल. ई. एन. ई. एक्स.), 1999 में स्थापित। एल्गोरिथम इंजीनियरिंग (डब्ल्यू. ए. ई. '97) पर 1997 की कार्यशाला सितंबर 11-13,1997 को वेनिस (इटली) में आयोजित की गई थी। एल्गोरिथम इंजीनियरिंग पर तीसरी अंतर्राष्ट्रीय कार्यशाला (डब्ल्यू. ए. ई. '99) जुलाई 1999 में लंदन, यू. के. में आयोजित की गई थी। एल्गोरिथम इंजीनियरिंग एंड एक्सपेरिमेंटेशन (ALENEX99) पर पहली कार्यशाला बाल्टीमोर, मैरीलैंड में जनवरी 15-16,1999 में आयोजित की गई थी। इसे डी. आई. एम. ए. सी. एस., सेंटर फॉर डिस्क्रीट मैथमेटिक्स एंड थ्योरिटिकल कंप्यूटर साइंस (रटगर्स विश्वविद्यालय में), एस. आई. जी. ए. सी. टी., एल्गोरिदम एंड कम्प्यूटेशन थ्योरी पर ए. सी. एम. स्पेशल इंटरेस्ट ग्रुप, और एस. आई. ए. एम., सोसाइटी फॉर इंडस्ट्रियल एंड एप्लाइड मैथमेटिक्स के अतिरिक्त समर्थन के साथ प्रायोजित किया गया था। संदर्भ एल्गोरिदम सैद्धांतिक कंप्यूटर विज्ञान