क्या हम कह सकते हैं कि DFA NFA से अधिक कुशल है?


13

मैंने सिर्फ गणना के सिद्धांत के बारे में पढ़ना शुरू किया। अगर हम तुलना करें कि कौन अधिक शक्तिशाली है (तार को स्वीकार करने में), दोनों समान हैं। लेकिन दक्षता के बारे में क्या? DFA NFA की तुलना में तेज़ होगा, क्योंकि इसमें केवल एक आउटगोइंग एज है और कोई अस्पष्टता नहीं होगी। लेकिन एनएफए के मामले में हमें सभी संभावित मामलों की जांच करनी होगी और इसमें निश्चित रूप से समय लगेगा। तो क्या हम कह सकते हैं कि DFA NFA से अधिक कुशल है?

लेकिन, मेरे मस्तिष्क का दूसरा हिस्सा यह भी सोच रहा है कि एनएफए केवल सिद्धांत में मौजूद है, इसलिए हम इसकी तुलना डीएफए के साथ दक्षता से नहीं कर सकते।

जवाबों:


16

दो जवाब हैं, इस पर निर्भर करता है कि आप कैसे कुशल परिभाषित करते हैं।

प्रतिनिधित्व की संरचना

कम के साथ अधिक बताना: एनएफए अधिक कुशल हैं।

DFA को NFA में बदलना सीधा है और प्रतिनिधित्व के आकार को नहीं बढ़ाता है।

हालांकि, नियमित भाषाएं हैं जिनके लिए सबसे छोटा डीएफए सबसे छोटा एनएफए की तुलना में तेजी से बड़ा है। एक विशिष्ट उदाहरण लिए निश्चित है। k(a|b)b(a|b)kk

गणना

इसे तेजी से चलाना : DFA अधिक कुशल हैं।

आज हम जिन कंप्यूटरों का उपयोग करते हैं, वे प्रकृति में नियतात्मक हैं। यह उन्हें गैर-नियतत्ववाद से निपटने में बुरा बनाता है। एनएफए के साथ नियतात्मक रूप से निपटने के दो सामान्य तरीके हैं: एक तरफ से पीछे हटना, जो कि महंगा है, या सक्रिय राज्यों पर नज़र रखना है, जिसका अर्थ है कि प्रत्येक संक्रमण बार तक ले जाएगा (जहां एनएफए का आकार है) ।एनNN


कॉम्पैक्टनेस के बारे में, एनएफए हमेशा अधिक कुशल नहीं होते हैं! यह सच है कि ऐसी भाषाएँ हैं, जिनके लिए न्यूनतम DFA सबसे अधिक कॉम्पैक्ट NFA से बड़ी है, लेकिन सभी भाषाओं के सेट में ऐसी भाषाओं का क्या अंश है?
साढ़ेसाती

2
@saadtaame यह अजीब लग सकता है, लेकिन सख्त अर्थों में, एनएफए को गैर-निर्धारक नहीं होना चाहिए। डीएफए एक विशेष प्रकार का एनएफए है, अर्थात एनएफए एक सिंगलटन के साथ जैसा कि सेट शुरू होता है और संक्रमण फ़ंक्शन ऐसा होता है कि केवल एक राज्य किसी भी समय सक्रिय होता है।
खुर

2
-1 "इसका आकार बढ़ाना (संभवतः बहुत अधिक)"। NFA राज्यों की संख्या में सबसे अधिक पर लिंक्ड-लिस्ट लागत स्थान रखते हुए NFA राज्यों के सेट्स का अनुकरण करना । दूसरी ओर, समतुल्य DFA में राज्य हो सकते हैं। O ( 2 N )O(N)O(2N)
भटकने वाला तर्क

@WanderingLogic आप सही हैं, रूपांतरण स्पष्ट नहीं है (आप अभी भी समकक्ष DFA का उपयोग कर रहे हैं, बस व्यापक रूप में नहीं)। हालांकि मुख्य बिंदु अभी भी खड़ा है, क्योंकि इसके लिए समान आकार के डीएफए को चलाने की तुलना में गुणा अधिक गणना समय की आवश्यकता होती है । मैं उस के लिए पिछले पैराग्राफ को सही करूंगा। O(N)
खुर

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

4

शक्ति के संदर्भ में, वे आपके समतुल्य हैं और एनएफए को समतुल्य डीएफए में परिवर्तित करने के लिए एक एल्गोरिथ्म (सबसेट निर्माण) है। जैसा कि आप एल्गोरिथ्म के नाम से बता सकते हैं, यह एनएफए के राज्यों के सबसेट का निर्माण करता है। यदि आपके NFA में स्टेट्स हैं, तो एल्गोरिथ्म DFA को राज्यों के साथ आउटपुट कर सकता है लेकिन यह एक ऊपरी सीमा है। कभी-कभी, राज्यों की संख्या बिल्कुल भी नहीं बदलती है या कम हो जाती है। तो व्यवहार में, यह कम मायने रखता है कि किसका उपयोग करना है।2 एनn2n

DFA मिलान इनपुट स्ट्रिंग के आकार में रैखिक है। एनएफए मिलान में बैकट्रैकिंग शामिल है इसलिए एनएफए अधिक काम करते हैं। इस प्रकार, DFA अधिक कुशल हैं।


लेकिन क्या हम कह सकते हैं कि DFA अधिक कुशल है?
avi

1
@avi मैंने प्रश्न संपादित किया! और वैसे, एनएफए केवल सिद्धांत में मौजूद नहीं है: इसे देखें: swtch.com/~rsc/regexp/regexp1.html
saadtaame

@avi यहां समस्या यह है कि डीएफए जो एनएफए के बराबर है (अक्सर) बहुत बड़ा होगा। तो भले ही आप डीएफए को बहुत जल्दी जांच सकते हैं, आपको आमतौर पर एक बड़े डीएफए की जांच करनी होगी।
पीटर

@Peter, कि DFA बड़ा है कोई फर्क नहीं पड़ता: इसका मतलब सिर्फ इतना है कि संक्रमण फ़ंक्शन देने वाला सरणी बड़ा है।
वॉनब्रांड

1
@ कहर, सच। लेकिन अगर आप इस तरह की समस्या में आते हैं, तो आपके पास एक विनम्र डीएफए है।
वॉनब्रांड

2

बस ऊपर दिए गए उत्तरों को जोड़ना:

NFAs कर सकते हैं DFAs से computationally अधिक कुशल हो, इस अर्थ में कि वे एक समानांतर प्रोसेसर पर नकली जा सकता है।

BTW: मैं लोगों को यह कहते हुए देखता हूं कि NFA वास्तव में मौजूद नहीं हो सकते। क्षमा करें मैं असहमत हूं। बड़ी संख्या में प्रोसेसर के साथ एक कंप्यूटर समानांतर में कई कार्यों को चला सकता है और इसे एक nondeterministic मशीन माना जा सकता है। एक नए प्रोसेसर के लिए अभिकलन की प्रत्येक शाखा को असाइन किया जा सकता है और जब भी उनमें से कोई भी स्वीकार करता है तो उन सभी को रोक सकता है।


1
वास्तविकता में न तो डीएफए और न ही एनएफए मौजूद हैं, दोनों सिर्फ गणितीय संबंध हैं, और दोनों को एल्गोरिदम द्वारा अनुकरण किया जा सकता है।
jmite

1

यदि आप माप को स्वीकार / अस्वीकार करने के लिए विशुद्ध रूप से सैद्धांतिक "संख्या के चरणों का उपयोग करते हैं, तो एक डीएफए हमेशा एनएफए से सस्ता होगा जो -transitions का उपयोग करता है । अधिक जटिल ऑटोमेटा के लिए इस तरह के उपाय से फर्क पड़ेगा।ϵ


किसने कहा कि आपको -transitions का उपयोग करना है? ϵ
खुर

1
@ शाह, किसी ने नहीं किया। पूर्णता के लिए जोड़ा गया (मुझे पता है कि आप एनएफए में सिर्फ -transitions से छुटकारा पा सकते हैं )। ϵ
वॉनब्रांड

लेकिन DFA ϵ-संक्रमण से मुक्त नहीं हैं?
अवी

@ रवि, हाँ। यदि यह स्पष्ट नहीं है तो उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें।
वॉनब्रांड

नहीं, मैं आपसे पूछ रहा हूं। मैं इसके बारे में निश्चित नहीं हूँ
avi

1

जैसा कि अन्य ने नोट किया है, आपको परिभाषित करना होगा कि "दक्षता" का क्या अर्थ है। इसे स्पष्ट करने के लिए, मैं एक अलग उत्तर के साथ एक उचित मॉडल देता हूं।

खोज रहे हैं केवल आटोमैटिक मशीन मॉडल (s), कि विशेष रूप से अनदेखी कर रहा है कि कैसे आप उन्हें असली मशीनों पर लागू होता है, स्पष्ट दक्षता उपाय "एक (कम से कम) को स्वीकार करने रन पर ले लिया संक्रमण की संख्या है।"

ε


1

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

इसके अलावा मैं राफेल से सहमत हूं कि यह बहुत हद तक निर्भर करता है कि आप दक्षता और कार्यान्वयन पर क्या कहते हैं ।


-4

जैसा कि हम ऑटोमेटा यानी मशीन के बारे में जानते हैं जो बिना किसी मैन पॉवर के या इंसान की सीधी भागीदारी के बिना कोई भी कार्य कर सकती है। जैसे: वाशिंग मशीन। परिमित ऑटोमेटा का अर्थ है कि हम मशीन द्वारा कार्य करने के लिए जानते हैं जैसे 1 प्रेस ऑन 2 प्रेस ऑफ इसलिए केवल 2 राज्य अर्थात परिमित ऑटोमेटा कहा जाता है। अब डीएफए यानी निर्धारक परिमित ऑटोमेटा पर आएं। औपचारिक रूप से मतलब है कि हम आसानी से राज्यों को निर्धारित कर सकते हैं कि कोई अस्पष्टता नहीं है और अनौपचारिक रूप से इसे 1 प्रतीक पर केवल 1 संक्रमण की अनुमति है। एनएफए: गैर नियतात्मक परिमित ऑटोमेटा। वास्तविक स्थिति की गणना के लिए अधिक समय की आवश्यकता होती है और अस्पष्टता andd अनौपचारिक रूप से कहती है कि 1 प्रतीक पर कई अनुमत संक्रमण है। गंतव्य तक पहुंचने के लिए समय के मामले में एनएफए को डीएफए की तुलना में अधिक समय लगता है लेकिन एनएफए डीएफए की तुलना में अधिक डेटा लोड कर सकता है। * DFA और NFA में स्ट्रिंग को पहचानने की समान शक्ति है। धन्यवाद .. दीपाली कौशिक


1
वॉशिंग मशीन के साथ परिमित ऑटोमेटा के पास कुछ भी नहीं है।
डेविड रिचरबी

2
@DavidRicherby। शायद वाक्यांश "कुछ भी नहीं" थोड़ा मजबूत है। आखिरकार, हम कह सकते हैं कि वाशिंग मशीन में राज्यों के बीच उपयुक्त बदलाव के साथ तैयार , धोने , कुल्ला और स्पिन करने के लिए राज्य हैं। हालांकि, एक बेहतर रूपक, एक सिक्का-संचालित सोडा वेंडिंग मशीन होगी।
रिक डेकर

1
@ रिकडेकर सहमत हैं लेकिन छोटी प्रासंगिकता पर चर्चा करने के लिए समय बिताना विकिपीडिया " अनुचित भार " कहलाता है । और, किसी भी मामले में, मैं जिस उत्तर के बारे में बात कर रहा हूं, वह स्व-संचालित मशीनों के रूप में ऑटोमेटा पर चर्चा कर रहा है, कम्प्यूटेशनल उपकरणों पर नहीं।
डेविड रिचेर्बी

1
मुझे नहीं लगता कि यह उत्तर प्रश्न के प्रति कुछ भी सार्थक जोड़ता है। विशेष रूप से, आप दक्षता के अपने उपाय के बारे में स्पष्ट नहीं हैं और कई चिंताओं का मिश्रण करते हैं।
राफेल

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