Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

DFA बनाने का प्रोग्राम जो C++ में इनपुट (a, b) से 'a' से शुरू और खत्म होता है

वर्णों 'ए' और 'बी' के एक डीएफए स्ट्रिंग को देखते हुए, जो कि 'ए' से शुरू और समाप्त होना चाहिए, कार्य यह पता लगाना है कि स्ट्रिंग डीएफए के माध्यम से 'ए' के ​​साथ शुरू और समाप्त होती है या नहीं।

DFA (निर्धारक परिमित ऑटोमेटा) क्या है?

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

एक डीएफए द्वारा स्ट्रिंग को खोजने के लिए और स्ट्रिंग को इनपुट (ए, बी) से 'ए' के ​​साथ शुरू और समाप्त होना चाहिए। चूंकि स्मृति की कोई अवधारणा नहीं है और हम केवल वर्तमान वर्ण को संग्रहीत कर सकते हैं, DFA प्रदान की गई स्ट्रिंग को संग्रहीत नहीं कर सकता है, अन्यथा हम आसानी से हमें दिए गए अनुक्रम/स्ट्रिंग के पहले और अंतिम वर्ण की जांच कर सकते हैं।

उदाहरण

Input: a b b a
Output: yes
Explanation: The input string starts and ends with ‘a’

Input: a a a b a b
Output: no

उपरोक्त समस्या के समाधान के लिए हम जिस दृष्टिकोण का अनुसरण कर रहे हैं -

इसलिए, हम ऊपर बताई गई समस्या के लिए DFA बनाएंगे और फिर हमारे द्वारा बनाए गए DFA के अनुसार समस्या का समाधान करेंगे।

dfa.jpg

एल्गोरिदम

Start
Step 1-> In main()
   Call function srand(time(0)) to generate random numbers
   Declare variable as int max = 1 + rand() % 15
   Declare and set int i = 0
   While(i < max)
      Declare char data = 'a' + rand() % 2
      Print data
      Increment i
      IF data = 'a'
         IF(i = max)
            Print "YES"
         End
         Loop While (i < max)
            Set data = 'a' + rand() % 2
            Print data
            Increment i
            If (data = 'a' AND i = max)
               Print YES\n
            End
            Else IF(i = max)
               Print NO
            End
         End
      End
      Else
         Loop While (i < max)
            Set data = 'a' + rand() % 2
            Print data
            Increment i
         End
         Print NO
      End
   End
Stop

उदाहरण

#include <iostream>
#include <time.h>
using namespace std;
int main() {
   // for generating random numbers
   srand(time(0));
   int max = 1 + rand() % 15;
   int i = 0;
   while (i < max) {
      char data = 'a' + rand() % 2;
      cout << data << " ";
      i++;
      if (data == 'a') {
         if (i == max)
            cout << "YES\n";
         while (i < max) {
            data = 'a' + rand() % 2;
            cout << data << " ";
            i++;
            if (data == 'a' && i == max) {
               cout << "\nYES\n";
            } else if (i == max) {
               cout << "\nNO\n";
            }
         }
      } else {
         while (i < max) {
            data = 'a' + rand() % 2;
            cout << data << " ";
            i++;
         }
         cout << "\nNO\n";
      }
   }
   return 0;
}

आउटपुट

b b a b a b a b b b b b
NO

  1. सी ++ प्रोग्राम दो संख्याओं को योग और उत्पाद दोनों के साथ खोजने के लिए एन के समान है

    इस ट्यूटोरियल में, हम दो संख्याओं (जैसे ए और बी) को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे, जैसे कि दोनों a+b = N and a*b = N are satisfied. दोनों समीकरणों में से a को हटाने पर हमें b और N में द्विघात समीकरण मिलता है, यानी b2 - bN + N = 0 इस समीकरण के दो मूल होंगे जो हमें a और b दोनों का मान दे

  1. सी ++ प्रोग्राम सरणी को विभाजित करने और अंत में पहला भाग जोड़ने के लिए?

    यहां हम देखेंगे कि किसी सरणी को कैसे विभाजित किया जाए, और अंतिम स्थिति में विभाजन के बाद पहला भाग जोड़ें। मान लीजिए कि सरणी सामग्री {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} हैं। हम इस परिचय को दो भागों में काटना चाहते हैं। पहला भाग इंडेक्स 0 से 3 (विभाजन आकार 4) से है, और दूसरा भाग आराम है। अंत में पहले भाग क

  1. पायथन प्रोग्राम के साथ डेटा विश्लेषण और विज़ुअलाइज़ेशन

    इस ट्यूटोरियल में, हम pandas . जैसे मॉड्यूल का उपयोग करके डेटा विश्लेषण और विज़ुअलाइज़ेशन के बारे में जानेंगे और matplotlib पायथन . में . डेटा विश्लेषण चीजों के लिए पायथन एक उत्कृष्ट फिट है। मॉड्यूल स्थापित करें पांडा और matplotlib निम्न आदेशों का उपयोग करते हुए। pip install pandas pip install ma