एक एल्गोरिथ्म, एक भाषा और एक समस्या के बीच क्या अंतर है?


40

ऐसा लगता है कि इस साइट पर, लोग अक्सर "एल्गोरिदम" और "समस्याओं" को भ्रमित करने के लिए दूसरों को सही करेंगे। इनमें क्या अंतर हैं? मुझे कैसे पता चलेगा कि मुझे एल्गोरिदम पर विचार करना चाहिए और समस्याओं पर विचार करना चाहिए? और ये औपचारिक भाषा के सिद्धांत में भाषा की अवधारणा से कैसे संबंधित हैं?


एक एल्गोरिथ्म एक समस्या को हल करने का एक तरीका है।
रीइनियरियरपोस्ट

जवाबों:


53

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

भाषा : एक भाषा बस तार का एक सेट है। यदि आपके पास एक वर्णमाला है, जैसे कि , तो सभी शब्दों का समूह है जिसमें केवल प्रतीकों में । उदाहरण के लिए, किसी भी लंबाई के सभी बाइनरी अनुक्रमों का सेट है। एक वर्णमाला को द्विआधारी होने की आवश्यकता नहीं है, यद्यपि। यह एकात्मक, टर्नरी आदि हो सकता है।Σ * Σ { 0 , 1 } *ΣΣΣ{0,1}

एक वर्णमाला पर एक भाषा का कोई सबसेट है ।Σ *ΣΣ

समस्या : एक समस्या कुछ इनपुट के बारे में कुछ प्रश्न है जिसका हम उत्तर देना चाहते हैं। विशेष रूप से, एक निर्णय समस्या एक सवाल है जो पूछता है, "क्या हमारा दिया गया इनपुट संपत्ति को पूरा करता है ?X

एक भाषा किसी समस्या का औपचारिक बोध है। जब हम निर्णय समस्या के बारे में सैद्धांतिक रूप से तर्क करना चाहते हैं, तो हम अक्सर संबंधित भाषा की जांच करते हैं। एक समस्या , संबंधित भाषा है:X

वाई एक्स वाई एक्स }L={ww एक इनपुट की एन्कोडिंग है समस्या के लिए , और इनपुट का जवाब समस्या के लिए है "हाँ" yXyX}

यह निर्धारित करना कि किसी निर्णय समस्या के इनपुट का उत्तर "हां" है, यह निर्धारित करने के बराबर है कि वर्णमाला के ऊपर उस इनपुट का एन्कोडिंग संबंधित भाषा में है या नहीं।

एल्गोरिथ्म : एक एल्गोरिथ्म एक कदम-दर-चरण एक समस्या को हल करने के लिए है। ध्यान दें कि एक एल्गोरिथ्म कई मायनों और कई भाषाओं में व्यक्त किया जा सकता है, और यह कि किसी भी समस्या को हल करने वाले कई अलग-अलग एल्गोरिदम हैं।

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

डब्ल्यू }L(M)={wM इनपुट पर एक स्वीकृत स्थिति में ।w}

(ट्यूरिंग मशीनों के बीच एक सूक्ष्म अंतर है जो सभी इनपुटों पर रुक जाता है और हां इनपुट्स पर रुक जाता है, जो जटिलता कक्षाओं और बीच अंतर को परिभाषित करता है ।)आर RRE

भाषाओं और ट्यूरिंग मशीनों के बीच संबंध इस प्रकार है

  1. हर ट्यूरिंग मशीन बिल्कुल एक भाषा को स्वीकार करती है

  2. एक से अधिक ट्यूरिंग मशीन हो सकती हैं जो किसी भाषा को स्वीकार करती हैं

  3. कोई ट्यूरिंग मशीन नहीं हो सकती है जो किसी दी गई भाषा को स्वीकार करती है।

हम एल्गोरिदम और समस्याओं के बारे में लगभग एक ही बात कह सकते हैं: हर एल्गोरिथ्म एक समस्या को हल करता है, लेकिन 0 या कई हो सकते हैं, एल्गोरिदम किसी दिए गए समस्या को हल करते हैं।

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

  • एक एल्गोरिथ्म में एक समय जटिलता होती है
  • एक समस्या यह है अंतर्गत आता है एक जटिलता वर्ग के लिए

एक एल्गोरिथ्म में एक निश्चित समय जटिलता हो सकती है। हम कहते हैं कि अगर एल्गोरिथ्म आकार किसी भी इनपुट के लिए चरणों में सबसे अधिक है, तो एल्गोरिथ्म में सबसे खराब स्थिति वाली ऊपरी-बँधी हुई जटिलता ।( n ) nf(n)f(n)n

समस्याएँ बार-बार नहीं होती हैं, क्योंकि समस्या एक विशिष्ट एल्गोरिथ्म से जुड़ी नहीं होती है जो वास्तव में चलती है। इसके बजाय, हम कहते हैं कि एक समस्या एक जटिलता वर्ग की है, अगर किसी एल्गोरिथ्म में उस समस्या को एक निश्चित समय की जटिलता से हल किया जाता है।

पी एक्स एक्स पी एक्स एक्स पीP,NP,PSPACE,EXPTIME आदि सभी जटिलता वर्ग हैं। इसका मतलब है कि उनमें समस्याएं हैं, एल्गोरिदम नहीं। एक एल्गोरिथ्म में कभी नहीं हो सकता , लेकिन वहाँ एक बहुपद समय एल्गोरिथ्म एक दिया समस्या को सुलझाने अगर , तो में है । वहाँ भी स्वीकार करने घातीय समय एल्गोरिदम का एक समूह हो सकता है , लेकिन बाद से वहाँ एक भी बहुपद समय एल्गोरिथ्म को स्वीकार करने से मौजूद है , उस में है ।PXXPXXP


1
कृपया इस उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें क्योंकि आप फिट हैं।
jmite

मुझे लगता है कि यह उल्लेख करना अच्छा होगा कि अन्य प्रकार की कम्प्यूटेशनल समस्याएं (जैसे खोज समस्याएं) हैं।
केवह

1
कौन कहता है? इस तरह की सोच इस बात का हिस्सा है कि ट्यूरिंग मशीन के इरादे से पहले लोगों को औपचारिकता और एल्गोरिथ्म में इतनी परेशानी क्यों हुई। चर्च-ट्यूरिंग थीसिस का कहना है कि एक एल्गोरिथ्म एक ट्यूरिंग मशीन है और इसके विपरीत, और सभी ट्यूरिंग मशीनों को रोकना नहीं है।
jmite

4
यार, यह सबसे बड़ा जवाब है जो मैंने कभी देखा है। आपने केवल 1 पृष्ठ में सभी कंप्यूटर विज्ञान को संक्षेप में प्रस्तुत किया है।
CaptainCodeman

1
@ gnasher729 वहाँ एक प्रमेय है जो कहता है कि इसे सत्यापित करने के संदर्भ में परिभाषित किया जा सकता है, लेकिन यह वास्तविक परिभाषा गैर निर्धारक मशीनों के लिए समय की जटिलता के संदर्भ में है, इस प्रकार एनपी: नाम: nondeterministic बहुपद
जेमाइट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.