सबसे अधिक लंबाई का शब्द खोजने की कठोरता


10

समस्या का विवरण :

चलो एक (संभावित गैर नियतात्मक) पुशडाउन automaton हो सकता है और जाने होना अपने इनपुट वर्णमाला। क्या कोई शब्द st कि द्वारा स्वीकार किया जाता है ?MAwA|w|kM

क्या यह समस्या एनपी-पूर्ण है? क्या इसका अध्ययन किया गया है? क्या कोई एल्गोरिथ्म ऐसा शब्द खोजने की अनुमति देता है?


क्या Djikstra के एल्गोरिथ्म को चाल नहीं चलनी चाहिए? (मैं यहाँ शायद कुछ गलत समझ रहा हूँ!)
alpoge

"सबसे पर लंबाई "? k
अल्फा जोग

आपका स्वागत है, Kaveh। हां, मैं "सबसे अधिक" भूल गया, मैंने फिर से संपादित किया।
Lamine

1
जवाब आसान है - क्या यह एक होमवर्क सवाल है?
सरियल हर-पेलेड

क्या हमारे पास स्वचालित विवरणों तक पहुंच है या क्या हमारे पास केवल ब्लैक बॉक्स है?
राफेल

जवाबों:


9

नियमित भाषा के साथ अपनी सीएफजी भाषा के प्रतिच्छेदन की गणना करें i=0kAk (यह राज्यों की संख्या को गुणा करने की मात्रा है kऔर एक "मृत अंत" राज्य को जोड़ना)। अब जांचें कि क्या परिणाम खाली है: एक व्याकरण में परिवर्तित करें (मुझे लगता है कि परिणाम में बहुपद आकार होगा) और एप्सिलॉन प्रस्तुतियों से "बैकट्रैक"।

संपादित करें: केव ने उल्लेख किया कि यह बहुपद है k, तो अगर k एक इनपुट के रूप में दिया गया है, एल्गोरिथ्म में घातीय है |k|। हालांकि, केव ने इसे ठीक करने का एक तरीका पाया। मूल ऑटोमेटन को सीएफजी में बदलें, और सभी टर्मिनलों को एक निश्चित टर्मिनल द्वारा बदलें। अब प्रत्येक गैर-टर्मिनल द्वारा उत्पन्न शब्द के न्यूनतम आकार को खोजने के लिए एक पुनरावृत्त एल्गोरिथ्म का उपयोग करें, निम्नानुसार है।

के साथ सभी लंबाई प्रारंभ करें , और फिर स्पष्ट रूप से सभी लंबाई अपडेट करें: एक उत्पादन दिया AatBi (आदेश कोई फर्क नहीं पड़ता), डाल दिया f(A)=min(f(A),t+f(Bi))। दावा: यह अभिसरण करता हैO(n) पुनरावृत्तियों, कहाँ nगैर-टर्मिनलों की संख्या है। कारण यह है कि न्यूनतम लंबाई वाले शब्द को उत्पन्न करने वाले वृक्ष में, किसी भी गैर-टर्मिनल का दो बार उपयोग नहीं किया जाता है; प्रत्येक "एज" प्रक्रिया के लिए अधिकतम एक पुनरावृत्ति लेता है (कुछ किनारों को समानांतर में "अपडेट" किया जा सकता है)।


मुझे भी लगता है कि परिवर्तन पीडीए सीएफजी बहुपद है। धन्यवाद! तो समस्या अंदर हैP
लैमिने

ठीक है, चूंकि सीधे सबसे कम लंबाई की गणना करने का एक तरीका है, |k|इनपुट नहीं है लेकिन मुझे समझ नहीं आ रहा है कि सभी टर्मिनलों को एक निश्चित जगह से क्यों बदला जाए। एल्गोरिथ्म को मूल टर्मिनलों के साथ सही ढंग से काम करना चाहिए।
Lamine

आप सही हैं, यह वास्तव में कोई फर्क नहीं पड़ता।
युवल फिल्मस

5

सभी वर्णमाला वर्णों को एक विशिष्ट वर्ण में बदलें। अब, आपने पीडीए को एक एकल वर्ण पर परिभाषित किया है। इसकी भाषा एक संदर्भ-मुक्त व्याकरण है। हालाँकि, एकल चरित्र पर संदर्भ मुक्त व्याकरण नियमित है। तो, सीएफजी को एक नियमित भाषा में परिवर्तित करें, और फिर जांचें कि क्या उसमें लंबाई का शब्द है।

अब, इन सभी रूपांतरणों में घातीय समय की आवश्यकता होती है, लेकिन मुझे लगता है कि समस्या पूरी नहीं है। खासकर यदि आप बहुपद समय में अनुमति देते हैंk

मैं गलत हो सकता हूं, और मैं अपने शुरुआती स्निप्पी जवाब के लिए माफी चाहता हूं ...

BTW, तथ्य यह है कि एक पत्र पर एक CFG नियमित रूप से पारिख के प्रमेय से है। हालांकि एक प्रत्यक्ष प्रमाण बहुत कठिन नहीं है। पारिख की प्रमेय के बारे में अधिक जानकारी के लिए लिंक देखें - यह एक सुंदर परिणाम है ... http://www8.cs.umu.se/kurser/TDBC92/VT06/final/3.pdf


नहीं, मैं छात्र नहीं हूं। जिस समस्या का मैंने उल्लेख किया है वह शुरू में एक नेटवर्क समस्या है जो एक ऑटोमेटन के रूप में एक मॉडल है। मुझे पता होगा कि क्या यह बहुपद समाधान के लिए देखने लायक है या नहीं।
Lamine'

5
क्या यह उत्तर एक टिप्पणी नहीं है?
ओलेकांद्र बोंडारेंको

2
हाँ, यह चाहिए। सरिएल, क्या आप इसे टिप्पणी में स्थानांतरित कर सकते हैं या जवाब दे सकते हैं?
सुरेश वेंकट

@ सुरेश: आप इस बारे में अवगत हो सकते हैं, लेकिन अब मध्यस्थ एक टिप्पणी में जवाब बदल सकते हैं
त्सुयोशी इतो

मैंने एक टिप्पणी के मूल उत्तर को स्थानांतरित कर दिया। यह एक नया उत्तर है।
सुरेश वेंकट

0

संभवत: एक सबऑप्टिमल विधि: जिक्स्ट्रा के एल्गोरिथ्म को चलाएं। फिर, प्रत्येक अंतिम स्थिति के लिए, दूरी के साथ तुलना करेंk। यदि कोई हैंk, स्वीकार करना। अस्वीकार।

संपादित करें: उपरोक्त केवल एनएफए के लिए काम करता है! उसके लिए माफ़ करना।


(लेकिन निश्चित रूप से पॉली-टाइम!)
अल्पांग

मुझे यकीन नहीं है कि दिजाकस्ट्रा का एल्गोरिथ्म समस्या को हल कर सकता है। यह प्रारंभिक अवस्था और अंतिम लोगों के बीच सबसे छोटा रास्ता खोज सकता है। बेशक, इस पथ के माध्यम से स्वीकार किया जा सकने वाला शब्द उत्पन्न किया जा सकता है। लेकिन यह रास्ते प्राथमिक हैं, और शब्दों को बिना किसी पूरक मार्ग के स्वीकार किया जा सकता है; अन्यथा, अगर संदर्भ-मुक्त व्याकरण किसी भी शब्द को उत्पन्न कर सकता है, तो यह निर्धारित करने की समस्या निर्णायक होगी, लेकिन ऐसा नहीं है।
Lamine'

CFLs के लिए शून्यता परीक्षण निर्णायक है, नहीं?
अल्पागोझ

(मुझे फिर अगर मैं गलत समझ रहा हूँ माफ कर दो!)
alpoge

ठीक है, एक ऐसा करने के लिए एक 'मार्किंग' एल्गोरिथ्म का उपयोग किया जा सकता है (सीएफजी को देखते हुए) - टर्मिनलों को चिह्नित करना, फिर उन चीजों को चिह्नित करना, जो टर्मिनलों को प्राप्त करते हैं, फिर उन चीजों को चिह्नित करना जो कि चिह्नित की गई चीजें हैं, आदि जब तक कि प्रक्रिया समाप्त नहीं हो जाती है, और जांचना यदि प्रारंभ चर चिह्नित है। इसके अलावा, मेरे जवाब को नजरअंदाज करें - यह कि आपको एनएफए के लिए क्या करना चाहिए (निश्चित रूप से पीडीए के लिए नहीं!)।
अल्फा'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.