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

पैटर्न खोज के लिए परिमित ऑटोमेटा एल्गोरिथम के लिए C++ प्रोग्राम

इस लेख में, हम पैटर्न खोज के लिए परिमित ऑटोमेटा एल्गोरिदम को निष्पादित करने के लिए एक कार्यक्रम पर चर्चा करेंगे।

हमें एक टेक्स्ट [0...n-1] और एक पैटर्न [0...m-1] प्रदान किया जाता है। हमें टेक्स्ट [] में पैटर्न [] की सभी घटनाओं को खोजना होगा।

इसके लिए हम टेक्स्ट [] को प्रीप्रोसेस करेंगे और इसका प्रतिनिधित्व करने के लिए 2-डी सरणी बनाएंगे। उसके बाद हमें बस टेक्स्ट के तत्वों [] और ऑटोमेटा के विभिन्न राज्यों के बीच जाना होगा।

उदाहरण

#include<stdio.h>
#include<string.h>
#define total_chars 256
int calc_nextstate(char *pat, int M, int state, int x) {
   if (state < M && x == pat[state])
      return state+1;
   int ns, i;
   for (ns = state; ns > 0; ns--) {
      if (pat[ns-1] == x) {
         for (i = 0; i < ns-1; i++)
            if (pat[i] != pat[state-ns+1+i])
               break;
         if (i == ns-1)
            return ns;
      }
   }
   return 0;
}
//builds Finite Automata
void calc_TF(char *pat, int M, int TF[][total_chars]) {
   int state, x;
   for (state = 0; state <= M; ++state)
      for (x = 0; x < total_chars; ++x)
         TF[state][x] = calc_nextstate(pat, M, state, x);
}
//prints all occurrences of pattern in text
void calc_occur(char *pat, char *txt) {
   int M = strlen(pat);
   int N = strlen(txt);
   int TF[M+1][total_chars];
   calc_TF(pat, M, TF);
   int i, state=0;
   for (i = 0; i < N; i++){
      state = TF[state][txt[i]];
      if (state == M)
         printf ("\n Given pattern is found at the index%d",i-M+1);
   }
}
int main() {
   char *txt = "AABCDAABBDCAABADAABDABAABA";
   char *pat = "AABA";
   calc_occur(pat, txt);
   return 0;
}

आउटपुट

Given pattern is found at the index 11
Given pattern is found at the index 22

  1. इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथम के लिए C++ प्रोग्राम

    पृष्ठ संख्या और पृष्ठ आकार दिया गया; कार्य हिट और मिस की संख्या का पता लगाना है जब हम इष्टतम पेज रिप्लेसमेंट एल्गोरिथम का उपयोग करके किसी पृष्ठ को मेमोरी ब्लॉक आवंटित करते हैं। इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथम क्या है? इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथ्म एक पृष्ठ प्रतिस्थापन एल्गोरिथ्म है। पेज

  1. सरणी तत्वों के गुणन के लिए C++ प्रोग्राम

    पूर्णांक तत्वों की एक सरणी के साथ दिया गया और कार्य एक सरणी के तत्वों को गुणा करना और इसे प्रदर्शित करना है। उदाहरण Input-: arr[]={1,2,3,4,5,6,7} Output-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 Input-: arr[]={3, 4,6, 2, 7, 8, 4} Output-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 नीचे दिए गए कार्यक्रम में उपयोग क

  1. C++ में ऑक्टल से दशमलव रूपांतरण के लिए कार्यक्रम

    एक इनपुट के रूप में एक ऑक्टल नंबर के साथ दिए गए, कार्य दिए गए ऑक्टल नंबर को एक दशमलव संख्या में बदलना है। कंप्यूटर में दशमलव संख्या को आधार 10 से दर्शाया जाता है और अष्टक संख्या को आधार 8 से 0 से शुरू होकर 7 तक दर्शाया जाता है जबकि दशमलव संख्या 0 – 9 से शुरू होने वाला कोई भी अंक हो सकता है। अष्टक