2012-03-07 17 views
25

मुझे एक लाइब्रेरी की आवश्यकता है जो दो नियमित अभिव्यक्तियों में लगेगा और यह निर्धारित करेगा कि वे आइसोमोर्फिक हैं (यानी तारों के बिल्कुल उसी सेट से मेल खाते हैं या नहीं) उदाहरण के लिए ए | बी है isomorphic [ab]लाइब्रेरी यह जांचने के लिए कि क्या दो नियमित अभिव्यक्ति बराबर/आइसोमोर्फिक

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

मुझे यह करने के बारे में कई लेख और शैक्षिक पेपर ऑनलाइन देखे जाते हैं (और कक्षाओं के लिए कुछ प्रोग्रामिंग असाइनमेंट भी छात्रों को ऐसा करने के लिए कहते हैं) लेकिन मुझे ऐसी कार्यक्षमता लागू नहीं होती है जो इस कार्यक्षमता को लागू करता है। मैं एक पायथन और/या सी/सी ++ लाइब्रेरी पसंद करूंगा, लेकिन किसी भी भाषा में एक पुस्तकालय करेगा। क्या कोई जानता है कि ऐसी पुस्तकालय है? यदि नहीं, तो क्या कोई ऐसी लाइब्रेरी के बारे में जानता है जो करीब आता है जिसे मैं शुरुआती बिंदु के रूप में उपयोग कर सकता हूं?

+2

क्या यह एक होमवर्क है? :-) –

+3

नहीं। यह एक शोध परियोजना का हिस्सा है। लेकिन यह प्रोजेक्ट का मूल नहीं है इसलिए मुझे अपना खुद का रोल करने के लिए समय नहीं बिताना पड़ेगा यदि मुझे नहीं करना है। – user1255384

+2

मैं बस मजाक कर रहा था। यह एक बहुत अच्छा सवाल है। तो +1। –

उत्तर

10

ने कोशिश नहीं की है, लेकिन Regexp:Compare पर्ल के लिए आशाजनक लग रहा है: दो रेगेक्स बराबर हैं यदि पहले की भाषा दूसरे का उप-समूह है, और उप-कविता है।

+1

मैंने इसे चेक आउट किया और ऐसा लगता है कि यह वही करता है जो मैं चाहता हूं। मैं यह नहीं बता सकता कि यह कोड पर एक कर्सर देखो से यह कैसे कर रहा है, लेकिन यह उन सभी साधारण मामलों में काम करता है जिन पर मैंने इसका परीक्षण किया था। सूचक के लिए धन्यवाद! – user1255384

0

जावा के लिए brics automaton library भी इसका समर्थन करता है। आप नियमित अभिव्यक्तियों को डीएफए में परिवर्तित कर सकते हैं ताकि यह जांच सके कि ये समकक्ष हैं या नहीं।