एक नियमित अभिव्यक्ति के लिए DFA से जाने के लिए ज्ञात एल्गोरिदम


28

मैं सोच रहा था कि क्या कोई `` बेहतर ’है (मैं किस अर्थ में समझाऊंगा) एल्गोरिथ्म डीएफए से शुरू होता है और एक नियमित अभिव्यक्ति आर का निर्माण करता है जैसे कि एल ( ) = एल ( आर ) , एक की तुलना में। होपक्रॉफ्ट और उलमैन (1979) की पुस्तक। वहां, R R k i j का उपयोग स्ट्रिंग्स के सेट को दर्शाने के लिए किया जाता है जो कि D को राज्य q i से q j तक ले जाते हैं, बिना किसी राज्य के k से अधिक अंक के । यह निर्माण, हालांकि स्पष्ट रूप से सही और बहुत उपयोगी है, बल्कि तकनीकी है।ArL(A)=L(r)Rijkqiqjk

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

डीएफए से नियमित अभिव्यक्ति के लिए जाने वाले अन्य एल्गोरिदम को क्या कहा जाता है? मैं दक्षता पर सादगी को महत्व देता हूं (इस मामले में मेरे लिए यह `बेहतर 'है), लेकिन यह कोई आवश्यकता नहीं है।

आपकी सहायता के लिये पहले से ही धन्यवाद!


1
यह एक अलग एल्गोरिथ्म नहीं है, लेकिन अलग-अलग का उपयोग करके एल्गोरिथ्म को बीजगणितीय रूप से व्यक्त किया जा सकता हैRijkउचित बीजगणित में नियमित अभिव्यक्ति के मैट्रिक्स के k वें शक्ति काहै। शायद आप इसे और अधिक सुंदर / संक्षिप्त पाएंगे। मैं एक संदर्भ ढूंढ रहा हूं। k
अधिकतम

1
Rijk एल्गोरिथ्म अनिवार्य रूप से, सभी जोड़े-कम से कम-पथ समस्या के लिए फ्लोयड-Warshall एल्गोरिथ्म का एक प्रकार है, ताकि आप इन खोजशब्दों के लिए खोज के द्वारा आव्यूह गुणन के मामले में प्रस्तुति मिल सकता है।
जन जोहानसन

2
मैं सहमत हूँ। यह मूल रूप से फ्लोयड-वॉरसॉल एल्गोरिथम है। इसे मानक गतिशील प्रोग्रामिंग तकनीकों (फ़्लॉइड-वॉरसॉल कैन की तरह) का उपयोग करके भी प्राप्त किया जा सकता है।
डेविड

मुझे यकीन है कि मैंने पहले भी इस तरह के एक सवाल का जवाब दिया था, लेकिन मुझे यह नहीं मिला।
राफेल

@ मोम आपको एक संदर्भ मिल सकता है? मैं मैट्रिक्स प्रतिनिधित्व में रुचि रखता हूं, यह वास्तव में बीजगणित करने वालों के लिए अधिक आकर्षक होना चाहिए।
जमोमा

जवाबों:


17

दो और निर्माण: ब्रेज़ोज़ोवस्की-मैकलुस्की उर्फ ​​स्टेट एलिमिनेशन [1], और गॉसियन एलिमेने का उपयोग कर समीकरणों की प्रणाली में उन्मूलन। इन पर सबसे अच्छा स्रोत शायद जैक्स साकारोविक की किताब [2] है।

[१] जे। ब्रोज़ोज़ोस्की, ई। मैकक्लिस्की जूनियर, सिक्वेंशियल सर्किट स्टेट डायग्राम के लिए सिग्नल techniques ओव ग्राफ तकनीक, इलेक्ट्रॉनिक कंप्यूटर EC-१२ (१ ९ ६३) ६–- .६ पर IEEE लेनदेन।

[२] जे। सकारोविच, ऑटोमेटा सिद्धांत के तत्व। कैम्ब्रिज यूनिवर्सिटी प्रेस, 2009।


2
मुझे आर्डेन के लेम्मा का उपयोग करते हुए समीकरणों को हल करने का तरीका सबसे सरल और आसान लगता है, इसीलिए मैं इसे एक परिचयात्मक सिद्धांत वर्ग में प्रस्तुत करता हूं।
जन जोहानसन

समीकरणों की एक प्रणाली की विधि शानदार लगती है। दुर्भाग्य से, मेरे विश्वविद्यालय के पुस्तकालय में आपके द्वारा उल्लिखित पुस्तक (सकारोविच) नहीं है, लेकिन मैं कहीं और देखने जा रहा हूं।
13

4
निर्माणों की तुलना साकारोविक के पेपर "द लैंग्वेज, द एक्सप्रेशन एंड द (छोटी) ऑटोमेटन", CIAA 2005, LNCS 3845, स्प्रिंगर (2006) 15-30 में भी मिलती है। Infres.enst.fr/~jsaka/PUB/Files/LESA.pdf
हरमन

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

15

कोजेन की पुस्तक "ऑटोमेटा एंड कम्प्यूटेबिलिटी" में इस फ्लॉयड-वारशॉल एल्गोरिथ्म के एक सुरुचिपूर्ण सामान्यीकरण का उल्लेख है। चूँकि आपने बीजगणितकर्ताओं से अपील करने का उल्लेख किया है, इसलिए आपको यह उपयोगी लग सकता है। आप इसे उस पाठ के पृष्ठ 58-59 पर पाएंगे। (मुझे लगता है कि Google पुस्तकों का पूर्वावलोकन है।)

मूल रूप से, आप मैट्रिस पर एक क्लेन बीजगणित को परिभाषित कर सकते हैं जिसकी प्रविष्टियां क्लेन बीजगणित से हैं। मेट्रिसेस का जोड़ / संघ समन्वय-वार जोड़ है। मैट्रिसेस का गुणन / संयोजन नियमित मैट्रिक्स गुणन की तरह ही होता है। मेट्रिसेस के लिए क्लेन स्टार को इस प्रकार परिभाषित किया गया है:2×2

[abcd]=[(a+bdc)(a+bdc)bd(d+cab)ca(d+cab)]

You can see that if the left-hand matrix is the transition matrix of a 2-state DFA, then the i,j-entry of right-hand matrix describes the set of paths (of any length) from state मैं to state j.

n×na,b,c,dm×mm×(nm)(nm)×m(nm)×(nm), and apply the 2×2 rule above now with the matrix minors instead of "scalar" entries. (Analogously to how regular matrix multiplication can be defined recursively based on the rule for 2×2.)

So if you have an n-state NFA and its corresponding transition matrix T. Then an equivalent regular expression is fF(T)s,f, where s is the start state. T can be evaluated recursively using the definition above.

Kozen claims that the case where you evaluate the matrix-star recursively using m=1 corresponds to the Rijk algorithm.

Another derivation of the Kleene algebra structures over matrices appears in A Completeness Theorem for Kleene Algebras and the Algebra of Regular Events by Kozen.


12

By far the nicest procedure I have seen is the one mentioned by Sylvain. In particular, it seems to yield more concise expressions than others.

I wrote this document explaining the method for students last summer. It directly relates to a specific lecture; the reference mentioned is typical definition of regular expressions. A proof of Arden's Lemma is contained; one for correctness of the method is missing. As I learned of it in lecture I don't have a reference, sadly.


I also prefer that proof. I find it elegant and easy to explain. Even Arden's Lemma is not hard. I think this will be the method I will include in my document.
Janoma

@Raphael Saw the example in cs.stackexchange and found that there is some difference between the notations. You have used both + and in document, but you have used only in the above document. I think both meant the same thing. For the consistency of notation you could consider changing that. Anyway that document saved my day :). Thanks for writing documents like this and releasing under open license.
user3162
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.