एनएफए से डीएफए में परिवर्तित करने में सक्षम नहीं


11

मुझे डीएफए बनाने की एक सरल समस्या है जो दोहरे अक्षरों (ए, बी बी) से शुरू होने वाले सभी इनपुटों को स्वीकार करती है या दोहरे अक्षरों (एए, बी बी) के साथ समाप्त होती है, दिए गए Σ={a,b} दिए गए भाषा का वर्णमाला सेट है।

मैंने इसे एक गोल चक्कर तरीके से हल करने की कोशिश की:

  1. एक नियमित अभिव्यक्ति उत्पन्न करना
  2. इसके अनुरूप एनएफए बनाना
  3. DFA को घटाने के लिए पॉवरसेट निर्माण का उपयोग करना
  4. डीएफए में राज्यों की संख्या को न्यूनतम करना

चरण 1: दी गई समस्या के लिए नियमित अभिव्यक्ति है (अनगिनत अन्य लोगों के बीच):

((aa|bb)(a|b)*)|((a|b)(a|b)*(aa|bb))

चरण 2: दी गई अभिव्यक्ति के लिए NFA है:

NFA
(स्रोत: livefilestore.com )

सारणीबद्ध रूप में, NFA है:

State    Input:a     Input:b
->1        2,5         3,5
  2        4           -
  3        -           4
 (4)       4           4
  5        5,7         5,6
  6        -           8
  7        8           -
 (8)       -           -

चरण 3: अधिकार निर्माण का उपयोग करते हुए DFA में परिवर्तित करें:

Symbol, State       +   Symbol, State (Input:a) +   Symbol, State (Input:b)
   ->A, {1}         |        B, {2,5}           |        C, {3,5}
     B, {2,5}       |        D, {4,5,7}         |        E, {5,6}
     C, {3,5}       |        F, {5,7}           |        G, {4,5,6}
   (D), {4,5,7}     |        H, {4,5,7,8}       |        G, {4,5,6}
     E, {5,6}       |        F, {5,7}           |        I, {5,6,8}
     F, {5,7}       |        J, {5,7,8}         |        E, {5,6}
   (G), {4,5,6}     |        D, {4,5,7}         |        K, {4,5,6,8}
   (H), {4,5,7,8}   |        H, {4,5,7,8}       |        G, {4,5,6}
   (I), {5,6,8}     |        F, {5,7}           |        I, {5,6,8}
   (J), {5,7,8}     |        J, {5,7,8}         |        E, {5,6}
   (K), {4,5,6,8}   +        D, {4,5,7}         +        K, {4,5,6,8}

चरण 4: DFA को कम से कम करें:

मैंने K-> G, J-> F, I-> E को पहले बदल दिया है। अगले पुनरावृत्ति में, एच-> डी और ई-> एफ। इस प्रकार, अंतिम तालिका है:

  State    +   Input:a     +   Input:b
   ->A     |      B        |      C
     B     |      D        |      E
     C     |      E        |      D
    (D)    |      D        |      D
    (E)    |      E        |      E

और आरेखीय रूप से ऐसा दिखता है:

फाइनल डीएफए
(स्रोत: livefilestore.com )

... जो आवश्यक DFA नहीं है! मैंने अपना परिणाम ट्रिपल चेक कर लिया है। तो, मैं कहाँ गलत था?

ध्यान दें:

  • -> = प्रारंभिक अवस्था
  • () = अंतिम स्थिति

3
यह एक मूल प्रश्न के लिए एक महान उदाहरण है जिसे अच्छी तरह से प्रस्तुत किया गया है, क्योंकि आप अपने विचार की पूरी ट्रेन को शामिल करते हैं।
राफेल

बहुत अच्छा लगता है की सराहना की, धन्यवाद! ^ ^
अनुराग कालिया

जवाबों:


5

आप चरण 3 (DFA) तक ठीक हैं, लेकिन आपका न्यूनतमकरण गलत है।

यह स्पष्ट है कि कम से कम डीएफए सही नहीं है, क्योंकि दोनों इनपुट baऔर ab(जो मूल भाषा में नहीं हैं, और न ही चरण 3 में डीएफए द्वारा स्वीकार किए जाते हैं) अंतिम स्थिति में ले जाते हैं E

आपके न्यूनकरण चरणों को देखते हुए, ऐसा लगता है कि आपने अंतिम और गैर-अंतिम राज्यों को एकीकृत किया है; उदाहरण के लिए J (अंतिम) -> F (अंतिम नहीं) और I (अंतिम) -> E (अंतिम नहीं)। एक गैर-अंतिम स्थिति के साथ एक अंतिम स्थिति को जोड़ने से ऑटोमेटन द्वारा स्वीकार की गई भाषा बदल जाती है, जिससे गलत तार की स्वीकृति के रूप में ऊपर उल्लेख किया गया है।


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