ऑटोमेटा में नियमित अभिव्यक्ति और व्याकरण के बीच अंतर


12

मैं ऑटोमेटा में नया हूँ, और मुझे कल ही नियमित अभिव्यक्ति के लिए एक संक्षिप्त परिचय दिया गया है। मैंने विभिन्न नियमों को पढ़ा है जो एक नियमित अभिव्यक्ति को परिभाषित करते हैं। लेकिन मैं किसी भाषा के नियमित भावों और व्याकरण में अंतर करने में असमर्थ हूं (मुझे नियमित अभिव्यक्तियों के लिए व्याकरण नहीं सिखाया गया है)।

मैं समझता हूं कि व्याकरण हमें एक भाषा में मान्य तार उत्पन्न करने में मदद करता है, लेकिन फिर यह है कि एक नियमित अभिव्यक्ति स्थिति को परिभाषित करने के लिए नियम। तो फ़र्क कहाँ पड़ता है? मैंने अपने प्रोफेसर से पूछा और उन्होंने कहा कि regex एक भाषा में सबसे बुनियादी तार हैं और व्याकरण किसी भी भाषा के लिए नियमों का समूह है, जो regex की तुलना में उच्च क्रम के हैं। क्या कोई अधिक गहराई से जानकारी दे सकता है?

जवाबों:


22

नियमित भाव, नियमित व्याकरण और परिमित ऑटोमेटा एक ही चीज के लिए तीन अलग-अलग औपचारिकताएं हैं। उनमें से किसी से किसी भी अन्य में परिवर्तित करने के लिए एल्गोरिदम हैं।

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

तो उस संदर्भ में, आप मॉडल को किस तरीके से चलाना चाहते हैं, इस आधार पर, वे सभी एक नियमित भाषा के तार को पहचानते हैं या उत्पन्न करते हैं, और गणितीय रूप से, इस अर्थ में, कोई अंतर नहीं है।

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

तो दो की तुलना करने के लिए, चलो उन्हें परिभाषित करते हैं:

नियमित अभिव्यक्ति

इसलिए नियमित अभिव्यक्तियों को निम्न प्रकार से परिभाषित किया जाता है:

  1. एक नियमित अभिव्यक्ति है
  2. ε एक नियमित अभिव्यक्ति है
  3. एक Σa हर लिए एक नियमित अभिव्यक्ति हैaΣ
  4. यदि और नियमित अभिव्यक्ति हैं AB
    • AB एक नियमित अभिव्यक्ति है (संक्षेपण)
    • AB एक नियमित अभिव्यक्ति (प्रत्यावर्तन) है
    • A एक नियमित अभिव्यक्ति है (क्लेन स्टार)

कुछ शब्दार्थों के साथ (अर्थात कैसे हम एक स्ट्रिंग प्राप्त करने के लिए ऑपरेटरों की व्याख्या करते हैं), हमें एक नियमित भाषा से तार उत्पन्न करने का एक तरीका मिलता है।

नियमित व्याकरण

नियमित व्याकरण में एक चार टपल जहाँ गैर-टर्मिनलों का समूह होता है, टर्मिनलों का समूह होता है, प्रारंभ गैर-टर्मिनल है और एक सेट है। प्रोडक्शंस जो हमें बताते हैं कि स्टार्ट सिंबल, स्टेप बाई स्टेप को में एक स्ट्रिंग में कैसे बदला जाए । की दो से एक प्रकार से तैयार की गई प्रोडक्शंस हो सकती हैं (हालांकि दोनों नहीं):एन Σ एस पी Σ * पी(N,Σ,P,SN)NΣSPΣP

सही रैखिक व्याकरण

गैर-टर्मिनलों , , टर्मिनल और खाली स्ट्रिंग , सभी नियम इस प्रकार हैं:सी εBCaε

  1. Ba
  2. BaC
  3. Bε

वाम रेखा व्याकरण

बाएं रैखिक व्याकरण समान हैं, लेकिन नियम # 2 ।BCa

पंडर को चीजें

इसलिए इन परिभाषाओं को देखते हुए और उनके साथ खेलते हुए, हम देख सकते हैं कि नियमित अभिव्यक्तियाँ मेल खाने वाले नियमों की तरह दिखती हैं, या एक समय में थोड़े से निपटने के तरीके।

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

हालाँकि ये वास्तव में एक ही मौलिक काम कर रहे हैं, और आप उनके कार्य के रूपक को कैसे देखते हैं, यह वास्तव में आप पर निर्भर है।


मैं इस तथ्य पर अधिक जोर देता हूँ कि व्याकरण भाषा में तार उत्पन्न करता है , जबकि नियमित अभिव्यक्तियाँ (जैसा कि आपने कहा) एक मेल खाने वाले पैटर्न से अधिक हैं , जो भाषा के प्रत्येक स्ट्रिंग से मेल खाता है (या "परीक्षण")।
रैन जी।

@ RANG।, यह वास्तव में इसके बारे में सोचने का सामान्य तरीका है, लेकिन आप दोनों को फ्लिप कर सकते हैं; बॉटम अप पार्सिंग एक व्याकरण के खिलाफ एक स्ट्रिंग का परीक्षण करता है, और आप किसी भाषा के कॉम्पैक्ट विवरण के रूप में एक नियमित अभिव्यक्ति का उपयोग कर सकते हैं (हालांकि यह शायद कम आम है)।
ल्यूक मैथिसन

@simplebus नॉनटर्मिनल का सेट है, शुरुआती नॉनटर्मिनल है। क्या होगा ? एस आरNSR
ल्यूक मैथिसन

@ LukeMathieson मेरी गलती है, मैंने पैराग्राफ पढ़ा और सोचा कि यह साथ एक टाइपो था क्योंकि को परिभाषित किया गया था। अब जब मैंने औपचारिक परिभाषा कहीं और पढ़ी है, तो ऐसा लगता है कि टाइपो यह था कि होना चाहिए (मुझे लगता है) (पहली नियमित व्याकरण पैराग्राफ में दूसरी पंक्ति)आर आर पीNRRP
डैनियल

@simplebus, आह हाँ, यह निश्चित रूप से एक टाइपो है। धन्यवाद!
ल्यूक मैथिसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.