क्या एल्गोरिदम कंप्यूटर आर्किटेक्चर पर निर्भर करते हैं?


22

मैं कहीं पढ़ता हूं (यह भूल गए कि कौन सी पुस्तक है) कि एल्गोरिदम कंप्यूटर आर्किटेक्चर से स्वतंत्र हैं। कुछ तो यह भी कहते हैं कि एल्गोरिदम स्वयं अभिकलन (मशीनें?) हैं।

दूसरी ओर, समानांतर प्रोग्रामिंग की पुस्तकों में समानांतर एल्गोरिदम पर अध्याय हैं। ऐसा लगता है कि समानांतर एल्गोरिदम समानांतर आर्किटेक्चर पर निर्भर हैं?

मुझे लगता है कि मुझे कुछ बड़ी तस्वीरें याद हैं? धन्यवाद।


quicksort बेहतर है तो मर्ज करें?
AK_

समानांतर एल्गोरिदम एकल-थ्रेडेड आर्किटेक्चर पर चल सकते हैं। टाइम स्लाइसिंग उन अधिकांश आर्किटेक्चर द्वारा समर्थित है, और जो कहते हैं कि समानांतर कार्यों को समवर्ती रूप से चलना चाहिए? यदि A और B समांतर हैं, तो आप A को B क्यों नहीं चला सकते? या अगर कोई दूसरे पर भरोसा करता है (लेकिन यह आम तौर पर एक बुरा विचार है) तो उन्हें इंटरलेव करें।

3
एल्गोरिथ्म एक सार मशीन के खिलाफ निर्दिष्ट हैं । एक विशिष्ट जो आज के मल्टी-कोर पर्सनल कंप्यूटर का एक आदर्शीकरण है , उसे PRAM (पैरेलल रैंडम एक्सेस मशीन , कभी-कभी EREW (एक्सक्लूसिव मेमोरी रीड / राइट) या CRCW (समवर्ती मेमोरी रीड / राइट) में
वर्गीकृत किया जाता है

@rwong: तो कंप्यूटर आर्किटेक्चर से पूरी तरह से स्वतंत्र मशीन हैं, अगर एल्गोरिदम हैं?
टिम

2
एल्गोरिदम (और डेटा संरचनाएं) विशेष आर्किटेक्चर के लिए अनुकूलित किया जा सकता है - जैसे कि बी + ट्री आर्किटेक्चर के लिए अनुकूलित एक एसोसिएटिव डेटा संरचना है जहां डेटा का एक बड़ा ब्लॉक पढ़ना कई छोटे ब्लॉकों को पढ़ने की तुलना में सस्ता है।
user253751

जवाबों:


20

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

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


13

एल्गोरिदम कंप्यूटर वास्तुकला से स्वतंत्र हैं। ऐसा इसलिए है क्योंकि एल्गोरिदम प्रक्रियाओं की एक श्रृंखला को परिभाषित करता है जो एक समस्या को हल करता है। आर्किटेक्चर के बावजूद, एल्गोरिदम को छांटना हमेशा सॉर्ट करेगा। यह अचानक कुछ आर्किटेक्चर पर 3D चित्र प्रस्तुत नहीं करेगा।

यदि आप इसके बारे में सोचते हैं, तो यह वास्तव में सहज है। Google Chrome (जो केवल एल्गोरिदम का एक संग्रह है) किसी भी वास्तुकला के लिए संकलित होने पर एक वेब ब्राउज़र है। यह अचानक कुछ आर्किटेक्चर पर डिवाइस ड्राइवर नहीं बन जाएगा।

लेकिन एल्गोरिदम जिस गति से चलता है वह आर्किटेक्चर पर निर्भर करता है। और कुछ एल्गोरिदम आर्किटेक्चर के आधार पर दूसरों की तुलना में तेजी से काम करते हैं।

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

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

लेकिन वे एल्गोरिदम अभी भी वही काम करते हैं। वास्तुकला वे क्या करते हैं बदल नहीं है।


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

4

"ऐसा लगता है कि समानांतर एल्गोरिदम समानांतर आर्किटेक्चर पर निर्भर हैं?"

मेरी राय में जवाब बस है: नहीं। सामान्य मैं केवल गुण प्राप्त करता हूं

  • समानता
  • शब्द का आकार (निहित संसाधन सीमा)

जब हार्डवेयर आर्किटेक्चर के बारे में सोचना।

समानता का हवाला देते हुए आप किसी भी समानांतर एल्गोरिदम को बैच परिकलित कर सकते हैं और धारावाहिक को काम करने के लिए किसी भी समानांतर मेहराब हो सकते हैं ताकि एल्गोरिथ्म उस पर निर्भर न हो। शब्द आकार संख्यात्मक स्थिरता के लिए एक मुद्दा हो सकता है लेकिन एल्गोरिथ्म के लिए ही नहीं। 64 बिट जैसी संसाधन सीमाएं केवल 2 ^ का वर्णन कर सकती हैं 64 विभिन्न संख्याएं एक समस्या हो सकती हैं, लेकिन वैसे भी तत्व सीमित हैं।

बेशक कुछ एल्गोरिदम हो सकते हैं जो कुछ विस्तारित निर्देश सेटों पर निर्भर करते हैं, लेकिन कम से कम सब कुछ बुनियादी गणित के साथ वर्णित किया जा सकता है।

उदाहरण के लिए क्वांटम कंप्यूटिंग के साथ कुछ बिग-ओ मान बदल सकते हैं और फिर मैं कहूंगा कि

"एल्गोरिदम कंप्यूटर आर्किटेक्चर से स्वतंत्र हैं"

अब सच नहीं है।


4

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

समवर्ती एल्गोरिदम से हमारा तात्पर्य यह है कि एल्गोरिथ्म अच्छी तरह से चलता है या मशीन में संगामिति का लाभ उठा सकता है, हो सकता है क्योंकि इसमें कम लॉकिंग की आवश्यकता होती है अन्यथा एल्गोरिदम द्वारा आवश्यक होता जो विशेष रूप से समवर्ती मशीन के लिए डिज़ाइन नहीं किया गया हो या हो सकता है क्योंकि एल्गोरिथ्म मशीन के पूर्ण शक्ति का उपयोग करने के लिए विभाजित और प्रभावी रूप से जीत का उपयोग करता है। एक गैर समवर्ती मशीन में एल्गोरिथ्म चलाना अभी भी संभव होगा लेकिन उतना कुशल नहीं हो सकता है या इसे सही ढंग से प्रदर्शन करने के लिए अतिरिक्त लॉकिंग की आवश्यकता हो सकती है।

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


3

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

व्यवहार में ऐसे एल्गोरिदम हैं जो कैश हार्डवेयर और सिंक्रनाइज़ेशन प्राइमेटिव के उपयोग को अनुकूलित करके उसी "ओ" जटिलता के लिए बेहतर रनटाइम प्राप्त करने का प्रयास करते हैं।


3

हां और ना। यह उन बाधाओं पर निर्भर करता है जिन्हें आप पूरा करना चाहते हैं और आपके एल्गोरिथ्म को चलाने के लिए आवश्यक पूर्व शर्त

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

इस प्रकार, आदर्श रूप से, एक एल्गोरिथ्म किसी भी हार्डवेयर का लेखा-जोखा किए बिना जितना संभव हो उतना सार होना चाहिए।

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

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

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

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

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

अंत में, हम कह सकते हैं कि एक एल्गोरिथ्म उतना ही अमूर्त है जितना कि उसका लक्ष्य है, और जैसा कि उसके पूर्व शर्त (आर्किटेक्चर) की जरूरत है । आपके एल्गोरिथ्म का लक्ष्य जितना अधिक विशिष्ट होगा, उतना ही यह संभवतः हार्डवेयर आर्किटेक्चर पर निर्भर करेगा।

कुछ संबंधित कीवर्ड जो आपको रुचि दे सकते हैं:


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

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

2

आपको गणितीय या कंप्यूटिंग एल्गोरिदम के साथ सामान्य रूप से एक एल्गोरिथ्म को भ्रमित नहीं करना चाहिए। यदि आप कंप्यूटिंग एल्गोरिदम का मतलब है, हाँ, वे मशीन वास्तुकला से स्वतंत्र हैं।

एल्गोरिथ्म की विकिपीडिया से परिभाषा:

गणित और कंप्यूटर विज्ञान में , एक एल्गोरिथ्म एक स्व-निहित कदम-दर-चरण सेट किया जाना है। एल्गोरिदम मौजूद हैं जो गणना , डेटा प्रोसेसिंग और स्वचालित तर्क करते हैं।

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

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

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

यह प्रश्न और उत्तर एल्गोरिदम पर एक व्यापक दृष्टिकोण प्राप्त करने के लिए भी दिलचस्प है।


1

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

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

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


1

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

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

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


1

एल्गोरिदम चरणों का एक क्रम है। वे उन पर निर्भर नहीं हैं जो उन्हें निष्पादित कर रहा है (या नहीं)।

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


0

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

एक एल्गोरिथ्म का निर्माण करें जो मल्टीकोर उपलब्ध होने पर भार को कई कोर में वितरित करेगा।

अब आप सोच सकते हैं कि आपका एल्गोरिथ्म वास्तुकला पर निर्भर करेगा या नहीं? बेशक हाँ

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