भाषा सिद्धांत अभिकलन के सिद्धांत से संबंधित है। कंप्यूटर विज्ञान का और अधिक दार्शनिक पक्ष है, जो यह तय करने के बारे में है कि कौन से कार्यक्रम संभव हैं, या जो कभी भी लिखना संभव होगा, और हल करने के लिए एक एल्गोरिथ्म लिखना किस प्रकार की समस्याएं हैं।
एक नियमित अभिव्यक्ति एक नियमित भाषा का वर्णन करने का एक तरीका है। एक नियमित भाषा एक भाषा है जो एक नियत परिमित ऑटोमोटन द्वारा तय की जा सकती है।
आपको परिमित राज्य मशीनों पर लेख पढ़ना चाहिए: http://en.wikipedia.org/wiki/Finite_state_machine
और नियमित भाषाएं:
http://en.wikipedia.org/wiki/Regular_language
सभी रेगुलर लैंग्वेज कॉन्टेक्ट फ्री लैंग्वेज हैं, लेकिन कॉन्टेक्स्ट फ्री लैंग्वेज हैं जो रेगुलर नहीं हैं। एक संदर्भ मुक्त भाषा एक संदर्भ मुक्त ग्रामर या एक पुशडाउन ऑटोमेटा द्वारा स्वीकार किए जाने वाले सभी तार का एक सेट है जो एक एकल स्टैक के साथ एक परिमित राज्य मशीन है: http://en.wikipedia.org/wiki/Pushdown_autadaton#PDA_and_Context-free_Languages
अधिक जटिल भाषाएं हैं जिनके लिए ट्यूरिंग मशीन की आवश्यकता होती है (कोई भी संभावित प्रोग्राम जिसे आप अपने कंप्यूटर पर लिख सकते हैं) यह तय करने के लिए कि कोई स्ट्रिंग भाषा में है या नहीं।
भाषा सिद्धांत भी P बनाम NP समस्या से संबंधित है, और कुछ अन्य रोचक चीजें हैं।
कंप्यूटर साइंस में मेरा परिचय तृतीय वर्ष की पाठ्य पुस्तक इस सामान की व्याख्या करने में बहुत अच्छा था: कम्प्यूटिंग के सिद्धांत का परिचय। माइकल Sipser द्वारा। लेकिन, मुझे इसे खरीदने के लिए $ 160 की तरह खर्च करना पड़ा और यह बहुत बड़ा नहीं है। हो सकता है कि आप एक इस्तेमाल की गई प्रति पा सकते हैं या एक पुस्तकालय में एक प्रति पा सकते हैं या कुछ ऐसा हो सकता है जो आपकी मदद कर सकता है।
संपादित करें:
रेगुलर एक्सप्रेशंस और उच्चतर भाषा कक्षाओं की सीमाओं पर पिछले 50 वर्षों में एक टन शोध किया गया है। आपको नियमित भाषाओं के लिए पम्पिंग लेम्मा में रुचि हो सकती है। यह साबित करने का एक साधन है कि एक निश्चित भाषा नियमित नहीं है:
http://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages
यदि कोई भाषा नियमित नहीं है, तो यह नि: शुल्क हो सकती है, जिसका अर्थ है कि यह एक नि: शुल्क ग्रामर द्वारा वर्णित किया जा सकता है, या यह एक उच्च भाषा वर्ग में भी हो सकता है, आप यह साबित कर सकते हैं कि यह प्रसंग नि: शुल्क पम्पिंग लेम्मा द्वारा प्रसंग मुक्त नहीं है भाषाएँ जो नियमित अभिव्यक्तियों के लिए एक जैसी हैं।
एक भाषा भी असंदिग्ध हो सकती है, जिसका अर्थ है कि एक ट्यूरिंग मशीन (जो आपके कंप्यूटर को चला सकती है प्रोग्राम कर सकती है) को यह तय करने के लिए प्रोग्राम नहीं किया जा सकता है कि क्या एक स्ट्रिंग को भाषा के रूप में स्वीकार किया जाना चाहिए या खारिज कर दिया जाना चाहिए।
मुझे लगता है कि आप जिस हिस्से में सबसे अधिक रुचि रखते हैं, वह है फिनेट स्टेट मशीन (दोनों नियतात्मक और नियतात्मक) यह देखने के लिए कि कौन सी भाषाएं एक नियमित अभिव्यक्ति तय कर सकती हैं, और यह साबित करने के लिए पम्पिंग लेम्मा कि कौन सी भाषाएं नियमित नहीं हैं।
मूल रूप से एक भाषा नियमित नहीं होती है अगर उसे किसी प्रकार की मेमोरी या गिनती करने की क्षमता की आवश्यकता होती है। कोष्ठक मिलान की भाषा उदाहरण के लिए नियमित नहीं है क्योंकि मशीन को यह याद रखने की आवश्यकता है कि क्या उसे यह जानने के लिए कि उसे बंद करना है, क्या उसने एक कोष्ठक खोला है।
अक्षर a और b के उपयोग से सभी स्ट्रिंग्स की भाषा जिसमें कम से कम तीन b's होते हैं, एक नियमित भाषा है: a ba ba ba
अक्षर a और b के उपयोग से सभी स्ट्रिंग्स की भाषा जिसमें a की तुलना में अधिक b शामिल है, नियमित नहीं है।
इसके अलावा, आपको यह नहीं समझना चाहिए कि सभी परिमित भाषा नियमित हैं, उदाहरण के लिए:
सभी वर्णों की भाषा 50 अक्षरों से कम लंबे अक्षरों का उपयोग करती है और बी जिसमें एक से अधिक बी होते हैं एक नियमित रूप से होता है, क्योंकि यह परिमित है कि हम जानते हैं कि इसे (b | abb | bab | bba | aabbb। Ababb) के रूप में वर्णित किया जा सकता है। ..) ect तक सभी संभावित संयोजनों को सूचीबद्ध किया गया है।
Automata Theorem