सबसे छोटा DFA ढूँढना जो दो शब्दों को जानवर बल खोज का उपयोग किए बिना अलग करता है?


23

दो तार x और y को देखते हुए, मैं एक न्यूनतम आकार DFA बनाना चाहता हूं जो x को स्वीकार करता है और y को अस्वीकार करता है। ऐसा करने का एक तरीका जानवर बल खोज है। आप DFA की शुरुआत सबसे छोटे से करते हैं। आप प्रत्येक DFA को तब तक आज़माते हैं जब तक कि आपको एक ऐसा नहीं मिल जाता है जो x स्वीकार करता है और y को अस्वीकार करता है।

मैं जानना चाहता हूं कि क्या कोई न्यूनतम आकार डीएफए खोजने या बनाने का कोई अन्य ज्ञात तरीका है जो x को स्वीकार करता है और y को अस्वीकार करता है। दूसरे शब्दों में, क्या हम जानवर बल खोज को हरा सकते हैं?

ज्यादा जानकारी:

(1) मैं वास्तव में एक न्यूनतम आकार डीएफए खोजने के लिए एक एल्गोरिथ्म चाहता हूं, न कि न्यूनतम आकार डीएफए।

(२) मैं यह जानना नहीं चाहता कि न्यूनतम DFA कितना बड़ा या छोटा है।

(३) यहीं, मैं केवल इस बात पर केन्द्रित हूँ कि आपके पास दो तार x और y हैं।


संपादित करें :

इच्छुक पाठक के लिए अतिरिक्त जानकारी:

मान लीजिए कि और y अधिकांश n पर बाइनरी स्ट्रिंग्स हैं । यह एक DFA कि स्वीकार करता है कि वहाँ एक ज्ञात परिणाम है एक्स और खारिज कर दिया y ज्यादा से ज्यादा के साथ xynxy राज्यों। सूचना वहाँ के बारे में हैं किnn DFA के एक द्विआधारी वर्णमाला के साथ और अधिक से अधिकnn राज्यों। इसलिए, जानवर बल दृष्टिकोण की तुलना में अधिक के माध्यम से गणना करने में हमें की आवश्यकता नहीं होगीnn डीएफए का। यह इस प्रकार है कि जानवर बल दृष्टिकोणn से अधिक नहीं ले सकता हैnn समय।nn

स्लाइड्स जो मुझे मददगार लगीं: https://cs.uwaterloo.ca/~shallit/Talks/sep2.pdf


2
@ AndrásSalamon क्या यह अभी भी एनपी-पूर्ण है अगर सेट को अलग करने के लिए प्रत्येक में केवल एक स्ट्रिंग शामिल है? यह मुझे ऐसा लगता है कि यह यथोचित ट्रैक्टेबल होना चाहिए।
mhum

6
@ समस्या यह है कि कई अलग-अलग नियमित भाषाएं हैं जो दो तारों को अलग करती हैं - डीएफए कम से कम इन भाषाओं में से किसी एक के लिए सबसे अच्छा ऑटोमेटन मिलेगा लेकिन अन्य अलग-अलग भाषाओं के लिए ऑटोमेटा से इसकी तुलना करने के लिए कुछ भी नहीं करेंगे।
डेविड एपस्टीन

4
यदि और y अलग-अलग लंबाई हैं, तो लंबाई n के बड़े के साथ, ( लॉग एन ) के साथ डीएफए को जल्दी से ढूंढना आसान है जो उन्हें अलग करता है: बस लंबाई पी के एक चक्र का उपयोग करें , जहां पी विभाजित नहीं होता है x | - | y | । खोजें पी कोशिश कर रहा द्वारा 2 , 3 , 5 , ... आदेश जब तक आप उचित लगता है में पी । यदि x और y समान लंबाई हैं, तो OxynO(logn)pp|x||y|p2,3,5,pxy1996 के पेपर में रॉबसन का निर्माण, एक साधारण मशीन देता है जिसे आकारO(n)की खोज के द्वारा पाया जा सकता है। न तो निर्माण को सबसे छोटा डीएफए होने की गारंटी है। O(n)O(n)
जेफरी शालित

3
ऊपर दिए गए शालिट के नोट्स में, उपयोगी अवलोकन शामिल है कि जुदाई की समस्या के लिए सबसे खराब स्थिति तब होती है जब वर्णमाला बाइनरी होती है: यह हमेशा बड़े वर्णमाला को दो उप-भागों में विभाजित करना संभव है जो अभी भी दो इनपुट शब्दों को भेद करते हैं और एक द्विआधारी ऑटोमोटिव के लिए खोज करते हैं जो व्यवहार करता है एक सब्मिट में लेटर 0 के रूप में और दूसरे सब्मिट में लेटर 1 के रूप में। लेकिन कम से कम अलग करने वाले ऑटोमेटन की तलाश के लिए यह मदद नहीं करता है, क्योंकि आप मूल वर्णमाला से अतिरिक्त जानकारी का उपयोग करने में सक्षम हो सकते हैं ताकि आप बाइनरी वर्णमाला के लिए मैपिंग से बेहतर कर सकें।
डेविड एप्पस्टीन

3
इस अन्य हालिया प्रश्न का एक विशेष मामला जहां इन-सेट और आउट-सेट आकार समान हैं। इन-शब्द और आउट-शब्द में दिए गए न्यूनतम परिमित ऑटोमेटा । यह जवाब कुछ सीखने वाले साहित्य को कुछ उत्तराधिकारियों को सूचीबद्ध करता है।
vzn

जवाबों:


9

अगर मुझे व्यवहार में ऐसा करना होता है, तो मैं सैट सॉल्वर का उपयोग करूंगा।

यह सवाल है कि क्या साथ एक डीएफए है जो एक्स को स्वीकार करता है और वाई को अस्वीकार करता है उसे आसानी से सैट उदाहरण के रूप में व्यक्त किया जा सकता है। उदाहरण के लिए, एक तरीका 2 k 2 बूलियन चर है: z s , b , t सत्य है यदि DFA राज्य के s से राज्य t पर इनपुट बिट b में परिवर्तित होता है । फिर लागू करने के लिए कुछ खंड जोड़ें कि यह एक डीएफए है, और कुछ चर और खंड यह लागू करने के लिए है कि यह एक्स को स्वीकार करता है और वाई को अस्वीकार करता है ।kxy2k2zs,b,tstbxy

अब सबसे छोटी को खोजने के लिए पर बाइनरी सर्च का उपयोग करेंk ऐसी है कि इस का एक DFA तरह मौजूद है। संबंधित समस्याओं पर मैंने जो कुछ कागजों में पढ़ा है, उसके आधार पर, मैं उम्मीद करूंगा कि यह व्यवहार में काफी प्रभावी हो सकता है।k


सैट के रूप में इसके अन्य एन्कोडिंग संभव हैं। उदाहरण के लिए, हम एक ट्रेस एन्कोडिंग का उपयोग कर सकते हैं:

  • यदि लंबाई की है मीटर , आप जोड़ सकते मीटर एलजी कश्मीर बूलियन चर: लेट्स रों 0 , एस 1 , ... , रों हूँ पर इनपुट चल राज्यों के अनुक्रम हो एक्स , और प्रतिनिधित्व प्रत्येक एस मैं का उपयोग कर एलजी कश्मीर बूलियन चर।xmmlgks0,s1,,smxsilgk

  • अब प्रत्येक के लिए ऐसी है कि एक्स मैं = एक्स जे , आप बाधा है एस मैं - 1 = रों j - 1i,jxi=xjsi1=sj1si=sj

  • इसके बाद, इस संभाल करने के लिए विस्तार : चलो टी 0 , ... , टी एन इनपुट पर चल राज्यों के अनुक्रम हो y , और प्रत्येक का प्रतिनिधित्व टी जे का उपयोग कर एलजी कश्मीर बूलियन चर। प्रत्येक i के लिए , j ऐसा कि y i = y j , कसना जोड़ दें कि t i - 1 = t j - 1yt0,,tnytjlgki,jyi=yjti1=tj1ti=tj

  • इसी प्रकार, प्रत्येक के लिए ऐसी है कि x मैं = y जे , बाधा है कि जोड़ने के एस मैं - 1 = टी जे - 1i,jxi=yjsi1=tj1si=tj

  • दोनों निशान एक ही शुरुआती बिंदु से शुरू होने चाहिए, इसलिए आवश्यकता जोड़ें कि (WLOG आपको s 0 = t 0 = 0 की आवश्यकता हो सकती है )।s0=t0s0=t0=0

  • कि DFA केवल का उपयोग करता है सुनिश्चित करने के लिए राज्यों की आवश्यकता है कि 0 रों मैं < कश्मीर और 0 टी जे < कश्मीर सभी के लिए मैं , जेk0si<k0tj<ki,j

  • अंत में, आवश्यकता एन्कोड करने के लिए है कि स्वीकार किया जाता है और y अस्वीकार कर दिया है, आवश्यकता है कि रों मीटरटी एनxysmtn

इन सभी आवश्यकताओं को SAT क्लाज के रूप में एन्कोड किया जा सकता है।

पहले की तरह, आप सबसे छोटी k को खोजने के लिए पर बाइनरी खोज का उपयोग करेंगे, जिसके लिए ऐसा DFA मौजूद है।kk


3
ध्यान दें कि यह वास्तव में बल खोज को बेहतर बनाने के लिए बेहतर होगा यदि समस्या में कुछ समरूपताएं हैं और वे सॉल्वर द्वारा पहचाने जाते हैं, लेकिन वर्तमान में उन लोगों को पहचानना / अलग करना मुश्किल हो सकता है (या तो मानव या मशीन के लिए)। वहाँ भी है कुछ नए / संबंधित "प्रौद्योगिकी" संतोषजनक modulo सिद्धांतों और उत्तर सेट प्रोग्रामिंग की जिनमें से कुछ में "अंतर्निहित" ग्राफ की भविष्यवाणी है या उनकी परिभाषाओं का समर्थन कर सकते हैं।
vzn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.