কম্পিউটার

অনলাইন স্ট্রিং ম্যাচিংয়ের জন্য ওয়াগনার এবং ফিশার অ্যালগরিদম বাস্তবায়নের জন্য C++ প্রোগ্রাম


এই বিভাগে আমরা দেখব কিভাবে Wagner এবং Fisher অ্যালগরিদম ব্যবহার করে দুটি স্ট্রিং তুলনা করা যায়। এই অ্যালগরিদম ব্যবহার করে, আমরা সেই স্ট্রিংগুলির সাথে মেলে কতগুলি ন্যূনতম পরিবর্তন প্রয়োজন তা খুঁজে পেতে পারি৷

এটি একটি গতিশীল প্রোগ্রামিং পদ্ধতি। এখানে আমরা দুটি স্ট্রিং থেকে Levenshtein দূরত্ব পরিমাপ করি।

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

অ্যালগরিদম

ওয়াগনওয়ে_ফিশার(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++ এ স্ট্রিং ট্রান্সফর্মেশনের জন্য একটি ইন-প্লেস অ্যালগরিদম

  2. সর্বোত্তম পৃষ্ঠা প্রতিস্থাপন অ্যালগরিদমের জন্য C++ প্রোগ্রাম

  3. একটি নির্দিষ্ট সার্চ সিকোয়েন্সের জন্য একটি বাইনারি অনুসন্ধান অ্যালগরিদম বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. অ্যারে শাফলিংয়ের জন্য ফিশার-ইয়েটস অ্যালগরিদম বাস্তবায়নের জন্য C++ প্রোগ্রাম