क्या POSIX BRE सभी नियमित भाषाओं को व्यक्त कर सकता है?


13

ऐसा प्रतीत होता है कि POSIX.1-2008 द्वारा परिभाषित "बेसिक रेगुलर एक्सप्रेशंस" प्रत्यावर्तन का समर्थन नहीं करता है, a|b(हालांकि कुछ grep कार्यान्वयन पलायन संस्करण को पहचानते हैं, \|)।

चूंकि नियमित भाषाओं को परिभाषा के तहत संघ के तहत बंद किया जाता है, क्या इसका मतलब यह है कि पोसिक्स BRE में परिमित ऑटोमोटन की तुलना में कम अभिव्यंजक शक्ति है? या अन्य निर्माणों का उपयोग करके वैकल्पिक अनुकरण करने का कोई तरीका है?

जवाबों:


17

वास्तव में POSIX BRE भाषा सभी नियमित अभिव्यक्तियों को व्यक्त नहीं कर सकती क्योंकि इसमें विकल्प की कमी है। यह सभी परिमित भाषाओं को भी नहीं पहचान सकता है, सभी नियमित भाषाओं को अकेला छोड़ दें।

उदाहरण के लिए, एक BRE के रूप में पहचाने जाने योग्य नहीं है। इसे साबित करने के लिए, इस बात पर विचार करें कि टॉपलेवल सिंटैक्टिक रूप क्या हो सकता है:{ab,ba}

  • यह एकल-वर्ण रूपों में से एक नहीं हो सकता है क्योंकि भाषा में लंबाई के शब्द ।>1
  • यह नहीं हो सकता है क्योंकि यह खाली स्ट्रिंग से मेल खाएगा।R
  • यह नहीं हो सकता है सिवाय (जिस स्थिति में हम मूल समस्या पर वापस आ रहे हैं), क्योंकि यह विभिन्न लंबाई या रिक्त स्ट्रिंग के तारों से मेल खाएगा। एम = एन = 1R{m,n}m=n=1
  • इसलिए इसे समाप्‍त करना होगा: । अब विचार करें कि कैसे पहचाना जाता है: बीआर1आर2
    • यदि पहचानता है तो को खाली स्ट्रिंग के अलावा और कुछ भी नहीं पहचानना चाहिए। इसलिए को को पहचानना होगा और हम मूल समस्या पर वापस आ । a b R 2 R 1 { a b , b a }आर1आर2आर1{,}
    • यदि पहचानता नहीं बल्कि तो यह समझना चाहिए । लेकिन तब प्रपत्र के सभी शब्द पहचानता जहां पहचानता , इसलिए के अलावा और कुछ नहीं पहचान चाहिए । को पहचानने का कोई तरीका नहीं है । एक एक आर 2आर 1 आर 2 यू आर 1 यू आर 1 एक एकआर1आर2आर1आर2यूआर1यूआर1
    • यदि पहचानता न है और न ही तो एक ही रास्ता के लिए पहचान करने के लिए अगर है रिक्त स्ट्रिंग, जिस स्थिति में हम ऊपर के रूप में मूल समस्या के लिए हों, तो वापस, लेकिन के लिए यह स्वीकार करता इस बार।आर1आरआर1आर2

जब "हम मूल समस्या पर वापस आते हैं", तो इसका अर्थ है कि BRE को खोजने के लिए एकमात्र समाधान भाषा को पहचानने के लिए एक छोटी BRE है जिसे समान गुण है। यह एक अनंत वंश है , इसलिए वांछित संपत्ति वाले कोई बीआर नहीं है।

मुझे नहीं लगता कि वहाँ "पहचानने योग्य भाषाओं" का "अच्छा" लक्षण वर्णन है, उदाहरण के लिए, ऑटोमेटा के "अच्छा" वर्ग द्वारा पहचाने जाने वाली भाषाओं के रूप में।

ध्यान दें कि BRE-पहचाने जाने योग्य भाषाएं वास्तव में नियमित भाषाओं का उपवर्ग नहीं हैं, क्योंकि बैकरेफ़र्स अभिव्यंजक शक्ति को जोड़ते हैं। उदाहरण के लिए को BRE द्वारा मान्यता प्राप्त है, लेकिन यह नियमित रूप से प्रसिद्ध है। बिना बैकरेफ़रेन्स के BRE नियमित अभिव्यक्तियों पर सिर्फ वाक्य रचना है, इसलिए वे जिन भाषाओं को पहचान सकते हैं, वे नियमित भाषाओं का उपवर्ग हैं।{ww|w{,}*}\(.*\)\1


1
यदि आप grep जैसे टूल का उपयोग कर रहे हैं, जो कि मेल करने के लिए कई न्यूलाइन-सेपरेटेड एक्सप्रेशन को स्वीकार कर सकता है, तो सभी के कार्टेशियन प्रोडक्ट ले रहा होगा-अल्टरनेटिव्स (जैसे {ab, ba} {ab, ba} होते हुए {abba, abba, baab बाबा}) किसी दिए गए "BRE-plus-alternation" और इसलिए किसी भी नियमित भाषा के बराबर होने के लिए पर्याप्त है?
रैंडम 832

1
@ Random832: करने की कोशिश करें (abc|bac)*
रिसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.