কম্পিউটার টিউটোরিয়াল

নেইভ প্যাটার্ন সার্চিং


নেইভ প্যাটার্ন সার্চিং অন্যান্য প্যাটার্ন সার্চিং অ্যালগরিদমের মধ্যে সবচেয়ে সহজ পদ্ধতি। এটি মেইন স্ট্রিংয়ের সব ক্যারেক্টার প্যাটার্নের সাথে চেক করে। এই অ্যালগরিদম ছোট টেক্সটের জন্য সহায়ক। এতে কোনো প্রি-প্রসেসিং ফেজ দরকার নেই। স্ট্রিংয়ের জন্য একবার চেক করে সাবস্ট্রিং খুঁজে পাওয়া যায়। অপারেশন করার জন্য এক্সট্রা স্পেসও এক্সপেন্ড করে না।

নেইভ প্যাটার্ন সার্চ মেথডের টাইম কমপ্লেক্সিটি O(m*n)। এখানে m হলো প্যাটার্নের সাইজ এবং n হলো মেইন স্ট্রিংয়ের সাইজ।

ইনপুট এবং আউটপুট

ইনপুট: মেইন স্ট্রিং: "ABAAABCDBBABCDDEBCABC", প্যাটার্ন: "ABC" আউটপুট: Pattern found at position: 4 Pattern found at position: 10 Pattern found at position: 18

অ্যালগরিদম

naivePatternSearch(pattern, text)

ইনপুট - টেক্সট এবং প্যাটার্ন

আউটপুট - লোকেশন, যেখানে প্যাটার্ন টেক্সটে আছে

শুরু
  patLen := প্যাটার্ন সাইজ
  strLen := স্ট্রিং সাইজ
  i := 0 থেকে (strLen - patLen) পর্যন্ত, করুন
    j := 0 থেকে patLen পর্যন্ত, করুন
      যদি text[i+j] ≠ pattern[j], তবে
        লুপ ব্রেক করুন
    শেষ
    যদি j == patLen, তবে
      পজিশন i ডিসপ্লে করুন, কারণ সেখানে প্যাটার্ন পাওয়া গেল
  শেষ
শেষ

উদাহরণ

#include<iostream> using namespace std; void naivePatternSearch(string mainString, string pattern, int array[], int *index) { int patLen = pattern.size(); int strLen = mainString.size(); for(int i = 0; i<=(strLen - patLen); i++) { int j; for(j = 0; j<patLen; j++) { //প্যাটার্নের প্রতিটি ক্যারেক্টার চেক করুন যদি ম্যাচ হয় if(mainString[i+j] != pattern[j]) break; } if(j == patLen) { //প্যাটার্ন পাওয়া গেল (*index)++; array[(*index)] = i; } } } int main() { string mainString = "ABAAABCDBBABCDDEBCABC"; string pattern = "ABC"; int locArray[mainString.size()]; int index = -1; naivePatternSearch(mainString, pattern, locArray, &index); for(int i = 0; i <= index; i++) { cout << "Pattern found at position: " << locArray[i]<<endl; } }

আউটপুট

Pattern found at position: 4 Pattern found at position: 10 Pattern found at position: 18

  1. জাভাস্ক্রিপ্টে সংখ্যা প্যাটার্ন প্রিন্ট করা

  2. HTML pattern অ্যাট্রিবিউট

  3. সি প্রোগ্রামিং-এ হার্ট প্যাটার্ন প্রিন্ট করা

  4. C# 7.0-এ প্যাটার্ন ম্যাচিং (Pattern Matching) কী?