रेगेक्स गोल्फ एनपी-पूर्ण है?


27

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

समवर्ती प्रश्न के लिए और अनुकूलन प्रश्न को हल करने से बचने के लिए, मुझे लगता है कि नियमित अभिव्यक्ति पृथक्करण का सबसे प्राकृतिक सूत्रीकरण होगा:

यह देखते हुए दो (परिमित) कुछ वर्णमाला पर तार के और सेट करते हैं , क्या लंबाई की एक नियमित अभिव्यक्ति है जो में प्रत्येक स्ट्रिंग को स्वीकार करता है और में प्रत्येक स्ट्रिंग को अस्वीकार करता है ?बी Σ कश्मीर एक बीABΣkAB

क्या इस विशेष पृथक्करण समस्या की जटिलता के बारे में कुछ पता है? (ध्यान दें कि जब से मैंने और को तार के परिमित सेट के रूप में निर्दिष्ट किया है , समस्या के लिए आकार की प्राकृतिक धारणा और में सभी तारों की कुल लंबाई है ; यह से किसी भी योगदान को दलदल करता है )। यह अत्यधिक संभावना मेरे लिए ऐसा लगता है कि है एन पी-सम्पूर्ण (और वास्तव में, मैं कमी कवर समस्या के कुछ प्रकार के होने की अपेक्षा करेंगे), लेकिन कुछ खोजें विशेष रूप से उपयोगी कुछ भी चालू नहीं किया है।B A B kABABk


4
क्या यह एनपी में भी है? एक नियमित अभिव्यक्ति को देखते हुए, आप कैसे जांचते हैं कि एक शब्द बहुपद समय में वर्णित भाषा में है या नहीं? मानक दृष्टिकोण - एनएफए में बदलना, फिर डीएफए और जांच - (?) में घातीय समय लगता है । k
राफेल

1
PSPACE- पूर्ण होना चाहिए; ggramlich.github.io/Publications/approximationSTACS05Pres.pdf और citrerx.ist.psu.edu/viewdoc/… (PS ) पर देखें (ग्रामलिच, श्नीटाइगर, एनएफए और रेगुलर एक्सप्रेशंस, 2005) को कम से कम देखें । क्योंकि एक उत्तर में स्पष्ट करना चाहिए कि क्यों, लेकिन मेरे पास इस समय ऐसा करने का समय नहीं है; शायद कोई अन्य व्यक्ति संदर्भ का उपयोग कर सकता है और समझा सकता है कि यह कैसे काम करता है)
rgrig

1
नियमित अभिव्यक्तियों के लिए जैसा कि टीसीएस में समझा गया है, समस्या एनपी में है (बहुपद के आकार का एक प्रमाण और बहुपद समय में सत्यता ही नियमित अभिव्यक्ति होगी)। यदि हम नियमित अभिव्यक्तियों के लिए उदाहरण के लिए PCREs का उपयोग करते हैं तो यह (शायद) NP में नहीं है, क्योंकि यहां तक ​​कि सदस्यता का परीक्षण NP-hard ( perl.plover.com/NPC/NPC-3SAT.html ) है।
माइक बी।

1
@ मायकेबी .: और आप वास्तव में बहुपद समय में कैसे जांच करते हैं? क्या आपने @ राफेल की टिप्पणी देखी?
rgrig

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

जवाबों:


15

रेगेक्स के टीसीएस-वैरिएंट को मानते हुए, समस्या वास्तव में एनपी-पूर्ण है।

हम मानते हैं कि हमारे regexes शामिल हैं

  • पत्र , खुद से मेल खाते हैं,Σ
  • + , यूनियन को चिह्नित करते हुए,
  • , ,
  • , क्लेने-स्टार को दर्शाते हुए,
  • λ , रिक्त स्ट्रिंग से मेल खाता है

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

यह एनपी में सीधा है, जैसा कि टिप्पणियों में समझाया गया है (एक उम्मीदवार-आरई को एनएफए में अनुवाद करके और और से सभी शब्दों पर चलकर सत्यापित करें )।AB

एनपी-कठोरता दिखाने के लिए, हम सेट कवर को कम करते हैं:

एक ब्रह्मांड को देखते हुए और एक संग्रह के सबसेट के , वहाँ एक सेट है आकार के ताकि ?सी यू सी 'सी कश्मीर एस सी ' एस = यूUCUCCkSCS=U

हम इस प्रकार के रूप में regex गोल्फ के लिए सेट कवर में एक इनपुट का अनुवाद करते हैं:

  • सी एक्सΣ में में प्रत्येक उपसमूह के लिए एक वर्ण और एक अतिरिक्त वर्ण ( निम्नलिखित में चिह्नित ) होता है।Cx
  • यू सी A प्रत्येक तत्व के लिए एक शब्द है की । यह शब्द वास्तव में में सबसे उप-वर्णों का प्रतिनिधित्व करने वाले अक्षर हैं जिनमें (मनमाने क्रम में) शामिल हैं।eUCe
  • एक्सB में एकल शब्द ।x
  • k को बस ढोया जाता है।

यह कमी स्पष्ट रूप से P में है और तुल्यता भी देखने में काफी सरल है:

  • यदि सेट कवर इंस्टेंस के लिए एक समाधान है, तो regex regex golf का एक समाधान है।1 + + कश्मीरc1,,ckc1++ck
  • खाली सबवे से मेल खाने वाला एक रेक्स मेल खाएगा । इस प्रकार, गोल्फ समस्या को हल करने वाले किसी भी रेगेक्स में प्रत्येक शब्द से कम से कम एक अक्षर शामिल होता है । इसलिए, यदि गोल्फ उदाहरण हल करने योग्य है, तो से अधिकांश अक्षरों का एक सेट होता है ताकि प्रत्येक शब्द को अक्षरों के इस सेट द्वारा कवर किया जाए। निर्माण से, से सबसेट का सेट सेट कवर उदाहरण के लिए एक समाधान है।के Σ सीxAkΣAC

1
ABO(n)a1+a2+...,aiAकेO(n)k

2
@ माय बी: (1): और की समयावधि प्रश्न में दी गई है। जटिलता सिद्धांत में, संपूर्ण लिस्टिंग परिमित सेटों का प्रतिनिधित्व करने का डिफ़ॉल्ट तरीका है। (2) वास्तव में एक आवश्यक तर्क है, अगर कोई "एनपी" भाग को कठोर बनाना चाहता है। AB
फ्रैंकडब्ल्यू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.