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

ऑनलाइन स्ट्रिंग मिलान के लिए वैगनर और फिशर एल्गोरिथम को लागू करने के लिए C++ प्रोग्राम

इस खंड में हम देखेंगे कि वैगनर और फिशर एल्गोरिथम का उपयोग करके दो स्ट्रिंग्स की तुलना कैसे की जाती है। इस एल्गोरिथम का उपयोग करके, हम यह पता लगा सकते हैं कि उन स्ट्रिंग्स से मेल खाने के लिए कितने न्यूनतम परिवर्तन आवश्यक हैं।

यह एक गतिशील प्रोग्रामिंग दृष्टिकोण है। यहां हम दो तारों से लेवेनशेटिन की दूरी को मापते हैं।

Input: Two strings “Support” & “Suppose”
Output: Minimum number of required changes: 2

एल्गोरिदम

Wagnwe_Fisher(str1, str2)

इनपुट :दो तार str1 और str2
आउटपुट :परिवर्तनों की न्यूनतम संख्या

l1 := length of str1, and l2 = length of str2
define a matrix d of order (l1 * l2)
fill first row of d with numbers from 0 to l1 – 1, and fill first column with numbers from 0 to l2- 1
for j in range 1 to l1, do
   for i in range 1 to l2, do
      if str1[i - 1] = str2[j - 1], then
         tracker := 1
      else
         tracker := 0
      temp := minimum of d[i – 1, j] + 1 and d[i, j-1] + 1
      d[i, j] = minimum of temp and (d[i – 1, j - 1]+ tracker)
   done
done
return d[l2, l1]

उदाहरण कोड

#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
int d[100][100];
int min(int a, int b) {
   return (a < b) ? a : b;
}
int main() {
   int i,j,str1_len,str2_len,temp,tracker; 
   string str1 = "Support";
   string str2 = "Suppose";
   str1_len = str1.length();
   str2_len = str2.length();
   for(i = 0; i <= str1_len;i++)
      d[0][i] = i;
   for(j = 0;j <= str2_len;j++)
      d[j][0] = j;
   for (j = 1;j <= str1_len; j++) {
      for(i = 1;i <= str2_len;i++) {
         if(str1[i-1] == str2[j-1]) {
            tracker = 0;
         } else {
            tracker = 1;
         }
         temp = min((d[i-1][j]+1),(d[i][j-1]+1));
         d[i][j] = min(temp,(d[i-1][j-1]+tracker));
      }
   }
   cout << "The Levinstein distance " << d[str2_len][str1_len];
}

आउटपुट:

The Levinstein distance 2

  1. C++ में स्ट्रिंग परिवर्तन के लिए एक इन-प्लेस एल्गोरिथम

    किसी दिए गए स्ट्रिंग के लिए, सभी समान स्थिति वाले तत्वों को स्ट्रिंग के अंत में स्थानांतरित करें। तत्वों को स्थानांतरित करते समय, सभी सम स्थिति और विषम स्थिति वाले तत्वों का सापेक्ष क्रम समान रखें। उदाहरण के लिए, यदि दी गई स्ट्रिंग a1b2c3d4e5f6g7h8i9j1k2l3m4 है, तो इसे abcdefghijklm1234567891234 मे

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

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

  1. सी ++ प्रोग्राम फिशर-येट्स एल्गोरिथम को एरे शफलिंग के लिए लागू करने के लिए

    फिशर-येट्स एल्गोरिथम सरणी तत्वों का एक यादृच्छिक क्रमपरिवर्तन उत्पन्न करता है अर्थात यह एक सरणी के सभी तत्वों को बेतरतीब ढंग से फेरबदल करता है। सरणी के लिए सभी क्रमपरिवर्तन समान रूप से होने की संभावना है क्योंकि फिशर-येट्स एल्गोरिथम निष्पक्ष है। C++ में सरणी फेरबदल के लिए फिशर-येट्स एल्गोरिथम को ला