क्या किसी को पता है कि क्या पाइथन (किसी भी संस्करण) ने नियमित अभिव्यक्तियों का मूल्यांकन करने के लिए एनएफए (गैर-निर्धारक फिनिट ऑटोमाटा) का उपयोग किया है या क्या यह किसी अन्य तंत्र का उपयोग करता है? यदि उपलब्ध हो तो लिंक/संदर्भ प्रदान करें।क्या पाइथन फिर से मॉड्यूल में नियमित अभिव्यक्ति मूल्यांकन के लिए एनएफए का उपयोग करता है?
6
A
उत्तर
5
4
यह एक DFA पर एक एमएस की तुलना में कम समय लगना चाहिए:
$ time python3 -c 'import re; re.match("a?"*25+"a"*25, "a"*25)'
real 0m7.273s
100 के साथ बदलें 25 और यह एक जीवन भर के लिए समाप्त नहीं होंगे।
यह इस प्रकार से एक DFA (ग्रेप) पर दिखाई देता है:
$ time echo "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |grep "a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?a\?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
real 0m0.063s
पर विषय का एक बड़ा चर्चा नहीं है के बाद से सबसे आरई इंजन आजकल के लिए गैर नियमित भाषाओं मिलान किया जा करने की अनुमति मुझे संदेह है कि कोई भी आधुनिक आरई इंजन वास्तव में अब भी एनएफए या डीएफए का उपयोग करता है। – Joey
ठीक है, चूंकि एक आरई इंजन नियमित रूप से आरई के उप-समूह की पहचान कर सकता है, और ये सामान्य उपयोग में हैं, इसलिए उन परिदृश्यों के लिए अनुकूलित करना समझ में आता है। तो यह पूरी तरह से संभव है कि वे कभी-कभी एनएफए या डीएफए का उपयोग करते हैं। – MSalters