एक्सएमएल और जेएसएन किस औपचारिक भाषा वर्ग में अद्वितीय कुंजी हैं?


12

मैंने इस सवाल को स्टैवेरोफ़्लो से स्थानांतरित किया जहां आईडी को कोई जवाब नहीं मिला। हमारे पास एक समान सवाल था कि क्या JSON नियमित है :

JSON और XML दोनों को अक्सर संदर्भ-मुक्त भाषा कहा जाता है - ये दोनों मुख्य रूप से EBNF में एक औपचारिक व्याकरण द्वारा निर्दिष्ट हैं। हालांकि यह JSON के लिए केवल RFC 4329, खंड 2.2 में परिभाषित है , जिसके लिए ऑब्जेक्ट कुंजियों की विशिष्टता की आवश्यकता नहीं है (कई को पता नहीं हो सकता है लेकिन {"a": 1, "a": 2} वैध JSON है!)। लेकिन अगर आपको JSON में अद्वितीय कुंजियों की आवश्यकता है या XML में अद्वितीय विशेषता नामों को संदर्भ-मुक्त व्याकरण द्वारा व्यक्त नहीं किया जा सकता है। लेकिन जो JSON की भाषा वर्ग है जिसमें अद्वितीय कुंजियाँ हैं और अच्छी तरह से बनाई गई XML के लिए (जिसका अर्थ है विशिष्ट विशेषता नाम?)।

इस विषय पर मुझे मिले सबसे अच्छे कागजों में से एक (मुराटो एट अल, 2001: फॉर्मल लैंग्वेज थ्योरी का उपयोग करने वाली एक्सएमएल स्कीमा लैंग्वेजेज की टैक्सोनॉमी ) स्पष्ट रूप से अखंडता बाधाओं जैसे कि / कीरएफ़्स और एक अतिरिक्त परत पर जाँच की जाने वाली विशिष्टता को बाहर करती है। इसके अलावा XML स्कीमा या एक DTD द्वारा परिभाषित XML का सबसेट संदर्भ-मुक्त है। लेकिन सभी अच्छी तरह से गठित XML दस्तावेजों का पूरा सेट नहीं।

मुझे लगता है कि एक नेस्टेड स्टैक ऑटोमेटन (= अनुक्रमित भाषा) को JSON को अद्वितीय कुंजी बाधा के साथ पार्स करने में सक्षम होना चाहिए। एक्सएमएल के लिए भाषा को प्रश्न को अद्वितीय पूर्णांकों की सभी अल्पविराम द्वारा अलग-अलग सूचियों की भाषा में जोड़ा जा सकता है। क्या किसी को अधिक पता है, अधिमानतः उद्धरणों के साथ?

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

संपादित करें: हो सकता है कि मैं अधिक सैद्धांतिक कंप्यूटर वैज्ञानिकों के लिए प्रश्न का बेहतर सुधार करूं। सभी भाषाओं के वर्ग सीएफएल को देखते हुए जिन्हें पुनरावृत्ति ( ) के साथ बैकस- -फॉर्म द्वारा व्यक्त किया जा सकता है । यदि मैं "अद्वितीय उदाहरणों के साथ पुनरावृत्ति" ऑपरेटर का परिचय देता हूं, तो अब मैं कम्प्यूटेशनल शक्ति में क्या हासिल कर सकता हूं , इसलिए यह एक क्रम है जहां प्रत्येक तत्व टर्मिनलों के एक अलग अनुक्रम में परिणत होता है?x := a+ x := a | x a^a^a


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

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

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

@ जकोब, मैं इस चर्चा (संक्षिप्त) को प्रश्न में मोड़ दूंगा ताकि यह स्पष्ट हो जाए कि आप क्या पूछ रहे हैं
सुरेश वेंकट

एक LBA पर्याप्त होना चाहिए क्योंकि आपको अपने पाठ में वर्णों की तुलना में अधिक पहचानकर्ताओं को संग्रहीत करने की आवश्यकता नहीं होगी। सीएफएल और सीएसएल के बीच की कक्षाओं के बारे में मुझे पर्याप्त जानकारी नहीं है।
राफेल

जवाबों:


6

अपने अद्वितीय-पुनरावृत्ति ऑपरेटर के साथ BNF का उपयोग करना, x := S^का कहना है कि एक xएक उदाहरण है aप्रतीक की S, वैकल्पिक रूप से एक आवृत्ति bसेट की S - a, जो अपने आप वैकल्पिक रूप से एक आवृत्ति cसेट की S - a - bबहुत आगे है, और। यदि |S|संभव की संख्या है S, और परिमित है, तो 2 ^ |S|! - 1संभव की संख्या है S^

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

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

इस विशेष एक्सटेंशन का सबसे उपयोगी अनुप्रयोग संभवतः अद्वितीय-कुंजी बाधाओं को पेश करने की क्षमता है, लेकिन यह आपको ऐसे दिलचस्प सेटों का वर्णन करने की भी सुविधा देता है x := [0-7]^, जो 8 या उससे कम गैर-दोहराया अंकों के किसी भी अष्टक संख्या से मेल खाता है। इसकी जटिलता के रूप में, यह निर्धारित करना कि क्या सेट के किसी तत्व को देखा गया है, लॉगरिदमिक से भी बदतर नहीं है, और जाँचने की आवृत्ति मिलान किए गए तत्वों की संख्या में रैखिक है, इसलिए ^ऑपरेटर वास्तव में सबसे खराब स्थिति वाले रैखिक समय में निर्णायक है।


उत्तर के लिए और एक उपसमूह के क्रमपरिवर्तन में सोचने के संकेत के लिए धन्यवाद। यद्यपि अद्वितीय-पुनरावृत्ति ऑपरेटर अद्वितीय कुंजी के साथ कुंजी-मूल्य जोड़े को नहीं पकड़ता है, इस मामले के लिए जटिलता समान होनी चाहिए। हालाँकि, यदि मैं ऑपरेटर को मनमानी संरचनाओं पर लागू करना शुरू करता हूं, तो क्लास S^जहां Sकुछ सीएफएल हो सकता है, गैर-संदर्भ-मुक्त हो सकता है क्योंकि सीएफएल अंतर के तहत बंद नहीं होते हैं। यदि Sयह एक नियमित भाषा है, तो यह योग्य होना चाहिए , लेकिन दुर्भाग्य से आप यह तय नहीं कर सकते हैं कि दिया गया सीएफएल नियमित है या नहीं। शायद मैं एक और सवाल उठाऊंगा क्योंकि यह JSON और XML की बाधाओं से परे है।
जकॉब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.