एल्गोरिदम के सेट की कार्डिनैलिटी


15

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

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

एल्गोरिदम के सेट की कार्डिनैलिटी क्या है?


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

जवाबों:


28

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

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

पूर्ण क्रेडिट के लिए, आपको चिंतित होना चाहिए कि कुछ प्राकृतिक संख्याएं मान्य कार्यक्रमों को कोड नहीं कर सकती हैं, इसलिए प्राकृतिक संख्याओं की तुलना में कम एल्गोरिदम हो सकते हैं। (बोनस ऋण के लिए, आप भी अगर यह संभव है कि दो अलग अलग प्राकृतिक संख्या एक ही एल्गोरिथ्म का प्रतिनिधित्व उत्सुक हों।) हालांकि, print 1, print 2, print 3और इतने पर सभी एल्गोरिदम और सभी भिन्न हैं, इसलिए वहां कम से कम गणनीय असीम कई एल्गोरिदम हैं।

इसलिए हम निष्कर्ष निकालते हैं कि एल्गोरिदम का सेट अनगिनत अनंत है।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
गिलेस एसओ- बुराई को रोकना '

10

एल्गोरिदम का सेट अनगिनत अनंत है। ऐसा इसलिए है क्योंकि प्रत्येक एल्गोरिथ्म में एक बारीक वर्णन है, ट्यूरिंग मशीन के रूप में कहें।

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


7

किसी विशिष्ट समस्या से निपटने के लिए रणनीतियों की कम से कम निरंतर संख्या

"कॉन्टिनम" शायद वास्तविक संख्याओं का अर्थ माना जाता है ... उस शब्द के साथ "कम से कम" का उपयोग करना शीर्ष पर बेतुका है। थोड़ा-सा जीभ-मुंह होना: अनगिनत अनंत बहुत बड़ा है, लेकिन बेशुमार अनंत है ... बड़े से बड़ा। बेहद ज्यादा। Unfathomably।

तो चलो खिड़की से बाहर फेंक देते हैं। यह देखने के लिए कि हम किस प्रकार की अनन्तता के साथ काम कर रहे हैं, वह मृत सरल (और सहज) है, भले ही आपके मित्र ने किसी सैद्धांतिक विज्ञान विज्ञान के बारे में कभी नहीं सुना हो:

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

विशिष्ट समस्या ट्रेडिंग रणनीतियाँ थीं (एल्गोरिदम नहीं बल्कि रणनीतियाँ)

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


3
पुन: "'कंटिन्यू' का अर्थ संभवतः वास्तविक संख्याओं से है ... कम से कम 'का उपयोग करते हुए उस शब्द के साथ मिलकर शीर्ष पर बेतुका है": इसके बारे में "शीर्ष पर" कुछ भी नहीं है, अकेले "बेतुके" से । वास्तविक संख्याओं की तुलना में वास्तविक संख्याओं के अधिक समूह हैं, इसलिए उन सेटों के बारे में बात करना बिल्कुल सामान्य है जो सातत्य से बड़े हैं।
बरबाद

6

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

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

मुझे उम्मीद है कि यह कुछ अंतर्ज्ञान देता है कि एल्गोरिदम को किसी भी फ़ंक्शन की तुलना में "कम शक्तिशाली" क्यों होना है, इस प्रकार गणना करने योग्य (चलो यहां सातत्य परिकल्पना को अनदेखा करें)।


2

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

b

a


0

यदि हम बाइनरी * में लिखे कंप्यूटर प्रोग्राम के रूप में एल्गोरिदम की कल्पना करते हैं, तो एल्गोरिदम की संख्या (पूर्णांक) बाइनरी नंबर की संख्या है। इस प्रकार एल्गोरिदम की कार्डिनैलिटी पूर्णांकों की कार्डिनैलिटी है।

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


1
यह मौजूदा उत्तरों में क्या जोड़ता है?
डेविड रिचेर्बी

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

@DavidRicherby यह संक्षिप्तता जोड़ता है।
user558317

1
@ जॉनकॉमन बिना सबूत के, बिना किसी सबूत के असंभवता का आरोप लगाते हुए? मेरा मतलब था कि a) ओपी शायद परवाह नहीं करेगा, क्योंकि ख) यह परिभाषा की बात है। प्रश्न में यह धारणा सम्‍मिलित है: "चूंकि ट्यूरिंग मशीनें वर्णमाला के एक सीमित सेट के साथ काम करती हैं और टेप को इस प्रकार अनुक्रमित करना पड़ता है कि गणना करने योग्य हो, लेकिन एल्गोरिदम की बेशुमार संख्या होना असंभव है।"
user558317

0

अन्य उत्तरों ने पहले ही समझाया है कि गणना के मानक मॉडल (ट्यूरिंग मशीन, लैम्ब्डा कैलकुलस, आदि) में एल्गोरिदम का सेट अनगिनत अनंत है।

हालांकि, गणना के अन्य सैद्धांतिक मॉडल हैं जिनमें एल्गोरिदम का सेट बेशुमार अनंत है। उदाहरण के लिए, ब्लम-शुब-स्मेल मशीनों में एक बेशुमार अनंत निर्देश सेट 1 है , इसलिए उनके एल्गोरिदम का सेट भी बेशुमार अनंत है।


1 सटीक होने के लिए, अनुदेश सेट खुद ही परिमित है, लेकिन इसे एक अनजाने अनंत सेट (तर्कसंगत कार्यों) का उपयोग करके मानकीकृत किया जाता है।


तर्कसंगत कार्य गिनने योग्य नहीं हैं?
बेन मिलवुड

@BenMillwood आपको संक्षेप में कर सकते हैं स्केच क्यों ऐसा मामला है का एक सबूत?
मार्क सी

x0Rf:xx0

ओह, मैं यह मान रहा था कि स्थिरांक को भी तर्कसंगत होना चाहिए। तो कोई बात नहीं।
बेन मिलवुड

-1

चूंकि ट्यूरिंग मशीनें वर्णमाला के एक सीमित सेट के साथ काम करती हैं और टेप को इस प्रकार अनुक्रमित करना पड़ता है

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

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


n

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

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

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