एक भाषा को देखते हुए , मैं सीधे कैसे कह सकता हूं, बिना उत्पादन नियमों को देखे, कि यह भाषा नियमित नहीं है?
मैं पम्पिंग लेम्मा का उपयोग कर सकता था लेकिन कुछ लोग व्याकरण को देखते हुए कह रहे हैं कि यह नियमित नहीं है। यह कैसे संभव है?
एक भाषा को देखते हुए , मैं सीधे कैसे कह सकता हूं, बिना उत्पादन नियमों को देखे, कि यह भाषा नियमित नहीं है?
मैं पम्पिंग लेम्मा का उपयोग कर सकता था लेकिन कुछ लोग व्याकरण को देखते हुए कह रहे हैं कि यह नियमित नहीं है। यह कैसे संभव है?
जवाबों:
डीएफए / एनएफए की मुख्य संपत्ति अनबाउंड मेमोरी की कमी है। यदि आप किसी भाषा को देखते हैं और एकमात्र एल्गोरिथ्म (जिसे बाद में एक Finite Automaton में अनुवादित किया जाना चाहिए) तो आप इस संपत्ति की आवश्यकता के बारे में सोच सकते हैं, अर्थात, आपको लगता है कि कोई भी एल्गोरिथम जो इसे पहचानता है, उसे एक बड़ी संख्या में मनमानी याद रखने की आवश्यकता होगी (जैसे आपके उदाहरण में ) तो वह भाषा शायद नियमित नहीं है।
बेशक, आपको हमेशा याद रखना चाहिए कि गणितीय अंतर्ज्ञान गलत हो सकता है, और अपने अंतर्ज्ञान के बारे में सुनिश्चित करने का एकमात्र तरीका यह साबित करना है।
संपादित करें: मैं जगह की कमी के कारण टिप्पणियों में अंतिम प्रश्न का उत्तर दूंगा।
आप लोग अनबाउंड मेमोरी के बारे में बात कर रहे हैं, जिसका मतलब है कि यही कारण है कि यह नियमित नहीं है। लेकिन एक ^ nb ^ m भी अनबाउंड मेमोरी हो सकता है अगर मैं चाहता हूं, तो यह नहीं है? यह अभी भी मुझे शांति नहीं दे रहा है।
मुद्दा यह नहीं है कि शब्द कितने बड़े हो सकते हैं (आप आमतौर पर अनंत नियमित भाषाओं का सामना करेंगे, क्योंकि प्रत्येक परिमित भाषा नियमित है, और यह बहुत उबाऊ है) लेकिन डीएफए को याद रखने की कितनी आवश्यकता है।
में उदाहरण के लिए, याद करने के लिए कोई जरूरत नहीं है । अल्गोरिह्म को केवल यह सुनिश्चित करने की आवश्यकता है कि वे सकारात्मक हैं और यह शब्द सही ढंग से आदेश दिया गया है। यह एक परिमित सूची है, और सूची में प्रत्येक आइटम को स्मृति की निरंतर मात्रा की आवश्यकता होती है।
करने के लिए इसकी तुलना है, जिसके लिए एक सरल alogrithm याद रखना होगा कि की संख्या की आवश्यकता होती है 's की संख्या के बराबर है
'है। इसके लिए निर्बाध स्मृति की आवश्यकता होगी। जब मैं किसी भाषा को देखता हूं और देखता हूं कि किसी भी एल्गोरिथ्म को मैं अनबाउंड मेमोरी की जरूरत के बारे में सोच सकता हूं, तो मेरा अंतर्ज्ञान यह है कि भाषा नियमित रूप से मजबूत नहीं होती है। यदि मुझे समय की उचित मात्रा में "स्मार्ट" अल्गोरिद्म (जिसके लिए मेमोरी की निरंतर मात्रा की आवश्यकता होती है) नहीं मिल सकता है (आपके लिए कितना समय उचित है) मैं यह साबित करने की कोशिश करूंगा कि भाषा नियमित नहीं है।
आशा है कि यह थोड़ा स्पष्ट हो जाएगा।
मैं पम्पिंग लेम्मा का उपयोग कर सकता हूं
बिल्कुल सही। आपके द्वारा पम्पिंग लेम्मा या अन्य तकनीकों में से एक युगल (दर्जनों बार) का उपयोग करने के बाद, आप उन भाषाओं में पैटर्न देखना शुरू कर देंगे जो उन्हें नियमित होने से रोकते हैं। एक बहुत ही बुनियादी एक है जिसे आपने शायद पहले ही महारत हासिल कर ली है। तो यह केवल अंतर्ज्ञान ही नहीं, अनुभव का भी विषय है।
अपने अंतर्ज्ञान का परीक्षण करने का एक अच्छा तरीका इन भाषाओं को देख रहा है:
जो संदर्भ-मुक्त हैं?
आप वास्तव में यह तय कर सकते हैं कि क्या कोई भाषा पूरी तरह से प्रमाण के बजाय नियमित रूप से सीधी गणनाओं का उपयोग कर रही है। आपको बस एक बहुत शक्तिशाली मानदंड लागू करने की आवश्यकता है: एक भाषा नियमित है अगर और केवल अगर इसमें बहुत सारे उद्धरण हैं।
सहज रूप से, एक भागफल वह है जो आपको इनपुट के भाग में पहले से पढ़े जाने के बाद एक शब्द को पूरा करने की आवश्यकता है। अधिक औपचारिक रूप से, एक भाषा के बाईं भागफल द्वारा एक स्ट्रिंग , लिखा तार का सेट है ऐसी है कि । उदाहरण के लिए, यदि , तो , जबकि । हम आसानी से देख सकते हैं कि। फार्म के असीम रूप से कई कोटेशन हैं, इसलिए यह तुरंत अनुसरण करता है कि नियमित नहीं है।
यदि हम L को तय करने के लिए DFA का निर्माण करते हैं, और स्थिति में पढ़ने के बाद स्थिति में होगा , तो , राज्य को प्रारंभ करने के लिए द्वारा संशोधित की गई भाषा है । इसी विचार का उपयोग सीधे न्यूनतम डीएफए के निर्माण के लिए किया जा सकता है जो इसकी परिभाषा से एक नियमित भाषा तय करता है।