जटिलता सिद्धांत में भाषाओं का उपयोग क्यों करें


10

मैं बस गणना के सिद्धांत में शामिल होना शुरू कर रहा हूं, जो अध्ययन करता है कि क्या गणना की जा सकती है, कितनी जल्दी, कितनी स्मृति और किस कम्प्यूटेशनल मॉडल का उपयोग करके।

मेरे पास एक बहुत ही बुनियादी प्रश्न है, लेकिन मुझे उम्मीद है कि आप में से कुछ लोग इसके पीछे की अवधारणा को समझने में मेरी मदद कर सकते हैं:

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

मैं इस तरह के संबंधित प्रश्नों को पढ़ता हूं:

लेकिन फिर भी मेरी शंकाओं का जवाब नहीं है, क्योंकि वे इस बात का एक व्यावहारिक औचित्य प्रदान करते हैं कि वे क्यों महत्वपूर्ण हैं (जो मुझे समझ में नहीं आते हैं) लेकिन मुझे समझने में मदद न करें कि जटिलता सिद्धांत उन पर आधारित क्यों है।


1
क्या यह हमारे संदर्भ प्रश्नों द्वारा कवर नहीं किया गया है ?
राफेल

@ राफेल - मुझे उस प्रश्न की ओर इशारा करने के लिए धन्यवाद, यह एक महान संदर्भ है! मैं अभी इसके माध्यम से पढ़ रहा हूं, लेकिन फिलहाल मेरा मानना ​​है कि यह सवाल cs.stackexchange.com/questions/13669/… का परिशिष्ट हो सकता है । यह मुझे नहीं लगता कि यह पहले से ही उत्तर दिया गया है, कृपया मुझे बताएं कि क्या आप पतले हैं अन्यथा
Matteo

3
एक भाषा सिर्फ परिमित लंबाई के तारों का एक सेट है, जो कि एक फ़ंक्शन के समान है जो 1 या 0. के लिए परिमित तारों को मैप करता है इसलिए आप वास्तव में पूछ रहे हैं "निर्णय समस्याओं के बारे में जटिलता सिद्धांत का इतना क्यों है" और जवाब है कि यह है सरल (nontrivial) कम्प्यूटेशनल कार्यों के प्रकार, और अक्सर अधिक जटिल कम्प्यूटेशनल कार्यों को समस्याओं को कम करने के लिए कम किया जा सकता है।
साशो निकोलेव

जवाबों:


10

ऐसा इसलिए है क्योंकि भाषाएं "समस्या" की अवधारणा को औपचारिक रूप देने का सबसे अच्छा (केवल?) तरीका है।

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

इसके कुछ कारण हैं। पहला यह कि भाषाएँ प्लेटफ़ॉर्म स्वतंत्र हैं। आप इस बारे में चिंता नहीं कर रहे हैं कि एक पूर्णांक 32 या 64 बिट्स है, या क्या फ़्लोटिंग पॉइंट ऑपरेशन अन्य ऑपरेशनों के समानांतर चलता है। ये चीजें माइक्रो-लेवल पर परफॉर्मेंस स्पीडअप देती हैं, लेकिन मैक्रो लेवल में कॉम्प्लेक्सिटी एनालिसिस की दिलचस्पी होती है। जैसा कि आप 100 से से 10 9 से 10 12 इनपुट के पैमाने पर हैं, एल्गोरिथ्म का प्रदर्शन कैसे बदलता है? क्या यह ब्रह्मांड में परमाणुओं की तुलना में 1 मिलियन टेप कोशिकाओं का उपयोग करके या 1 मिलियन से अधिक कोशिकाओं तक जाता है?1061091012

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

जटिलता सिद्धांत निर्णय की समस्याओं पर ध्यान केंद्रित करता है क्योंकि वे अंत में मुश्किल होते हैं। जब ट्रैवल सेल्समैन का निर्णय संस्करण एनपी-पूर्ण होता है (यानी लंबाई तुलना में छोटा है ), तो जाहिर है कि सबसे छोटा रास्ता कठिन है। फ़ंक्शन / ऑप्टिमाइज़ेशन समस्याओं पर उतना ध्यान केंद्रित नहीं है क्योंकि अभी भी बहुत सारे खुले प्रश्न हैं और सरल निर्णय समस्याओं के बारे में अनसुलझी समस्याएं हैं।

मुझे लगता है कि यहां मेरी चुनौती आपके लिए है: गणितीय रूप से उन समस्याओं का वर्णन करें जो भाषा नहीं है। मुझे नहीं पता कि भाषाएँ विशेष हैं, लेकिन मुझे लगता है कि वे सबसे सरल उपकरण हैं जो हमें मिला है, जिससे निपटने के लिए सबसे आसान है।


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

2
सच है, लेकिन आप किसी भाषा या मशीन की अवधारणा के बिना वर्णिक संख्या की गणना की जटिलता से कैसे निपटेंगे?
jmite

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

3
@ जेटी आपको एक मशीन की जरूरत है, हां, लेकिन जरूरी नहीं कि एक भाषा हो।
राफेल

2
@ रिपेल कई जटिलता वर्ग जो आमतौर पर मशीनों के चलने के समय के संदर्भ में परिभाषित किए जाते हैं, वर्णनात्मक जटिलता के संदर्भ में विशेषता हो सकते हैं।
साशो निकोलेव

7

आपके प्रश्न के दो मूल उत्तर हैं:

  1. भाषाओं की तुलना में जटिलता सिद्धांत के लिए अधिक है, उदाहरण के लिए फ़ंक्शन कक्षाएं, अंकगणितीय जटिलता, और सन्निकटन एल्गोरिदम और अनुचितता की पराकाष्ठा।

  2. ऐतिहासिक कारण: कम्प्यूटेबिलिटी थ्योरी में मूल कागजात में से एक हिल्बर्ट के एंत्सीड्यूंगस्प्रोम्बलम (हॉल्टिंग समस्या का एक रूप) पर चर्चा कर रहा था।

दुर्भाग्य से मैं बाद के बारे में ज्यादा नहीं जानता, लेकिन मुझे पूर्व पर विस्तार करने दें।

भाषाओं से परे जटिलता

एलएक्स(एक्स)एल

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

बीजगणितीय जटिलता का एक अन्य महत्वपूर्ण उदाहरण तेजी से मैट्रिक्स गुणन है। यहाँ मूल प्रश्न यह है कि हम कितनी तेजी से दो मेट्रिसेस को गुणा कर सकते हैं ? इसी तरह के प्रश्न पूछते हैं कि हम कितनी तेजी से पूर्णांक को गुणा कर सकते हैं, हम कितनी तेजी से पूर्णता के लिए पूर्णांक का परीक्षण कर सकते हैं (यह एक निर्णय समस्या है!) और हम पूर्णांकों को कितनी तेजी से कर सकते हैं।

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

lnn


3

आइए इस प्रश्न को श्रेणी सिद्धांत के परिप्रेक्ष्य से देखें। निर्णय की समस्याएं (या भाषाएं) तब एक श्रेणी की वस्तुओं के अनुरूप होंगी, और दो समस्याओं के बीच अनुमत कटौती किसी श्रेणी के आकारिकी (तीर) के अनुरूप होगी।

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

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


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

@DavidRicherby जिस बिंदु को मैं सामने लाना चाहता था, वह यह है कि उपयुक्त आकारिकी को नीचे खींचना उचित वस्तुओं (= भाषाओं) के नीचे की तुलना में अधिक चुनौतीपूर्ण है। (विशेष रूप से क्योंकि आम तौर पर आकारिकी की एक से अधिक उपयुक्त धारणा होती है।) आकारिकी के बिना, आप आइसोमॉर्फिक समस्याओं (या एल्गोरिदम) के बारे में बात नहीं कर सकते। हालाँकि, भाषाएँ आपको समस्याओं के समतुल्यता के बारे में बात करने का एक तरीका देती हैं। शायद मैंने इसे ठीक से नहीं समझाया, लेकिन (मेरे लिए) यह "जटिलता सिद्धांत में भाषाओं का उपयोग करने" का एक अच्छा कारण है।
थॉमस क्लिंपेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.