உரைத் தேடல் அல்காரிதம் என்பது உரைச் செயலாக்கம் மற்றும் தகவல்களை மீட்டெடுப்பதில் ஒரு அடிப்படை முறையாகும். இந்த அல்காரிதம் ஒரு பெரிய உரைக்குள் ஒரு சப்ஸ்ட்ரிங்(அல்லது பேட்டர்ன்) நிகழ்வுகளைக் கண்டறிந்து அடையாளம் காண அனுமதிக்கிறது.
எப்படி இது செயல்படுகிறது
- ஒரு பெரிய உரை(அல்லது ஆவணம்) மற்றும் தேடுவதற்கான துணைச்சரத்துடன் தொடங்கவும்.
- உரையின் ஒவ்வொரு எழுத்தையும் வரிசையாக மீண்டும் செய்யவும்.
- துணைச்சரத்தின் அதே நீளம் கொண்ட உரையின் ஒரு பகுதியுடன் துணைச்சரத்தை ஒப்பிடுக. பொருத்தம் கண்டறியப்பட்டால், தற்போதைய நிலையை பதிவு செய்யவும்.
- அடுத்த நிலைக்குச் சென்று ஒப்பீட்டைத் தொடரவும்.
உதாரணமாக
உரையைக் கவனியுங்கள்: "அல்காரிதம் எவ்வாறு செயல்படுகிறது என்பதைப் பார்க்க, இந்த உரையில் ஒரு துணைச்சரத்தைத் தேடுவோம்."
மற்றும் தேட வேண்டிய சப்ஸ்ட்ரிங்: "substring"
- நிலை 0 இல் தொடங்கவும்.
Let'"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - நிலை 1 க்கு நகர்த்தவும்.
et's"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - நிலை 2க்கு நகர்த்தவும்.
t's"துணைச்சரத்துடன்" ஒப்பிடவும். பொருத்தம் இல்லை. - நிலைக்கு நகர்த்து 3.
's s"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடுக. பொருத்தம் இல்லை. - நிலைக்கு நகர்த்து 4.
se"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடுக. பொருத்தம் இல்லை. - நிலைக்கு நகர்த்து 5.
sea"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடுக. பொருத்தம் இல்லை. - நிலை 6 க்கு நகர்த்தவும்.
earc"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடுக. பொருத்தம் இல்லை. - நிலை 7 க்கு நகர்த்தவும்.
arch"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - நிலை 8 க்கு நகர்த்தவும்.
rch"சப்ஸ்ட்ரிங்" உடன் " ஒப்பிடவும். பொருத்தம் இல்லை. - 9 நிலைக்கு நகர்த்தவும்.
ch w"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 10 ஆம் நிலைக்கு நகர்த்தவும்.
h wi"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - நிலை 11க்கு நகர்த்தவும்.
wit"சப்ஸ்ட்ரிங்" உடன் "ஐ ஒப்பிடவும். பொருத்தம் இல்லை. - 12 ஆம் நிலைக்கு நகர்த்தவும்.
with"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 13 ஆம் நிலைக்கு நகர்த்தவும்.
ithi"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 14 ஆம் நிலைக்கு நகர்த்தவும்.
thin"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 15 ஆம் நிலைக்கு நகர்த்தவும்.
hinn"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 16 ஆம் நிலைக்கு நகர்த்தவும்.
in t"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 17 ஆம் நிலைக்கு நகர்த்தவும்.
n th"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - நிலை 18 க்கு நகர்த்தவும்.
thi"சப்ஸ்ட்ரிங்" உடன் " ஒப்பிடவும். பொருத்தம் இல்லை. - 19 ஆம் நிலைக்கு நகர்த்தவும்.
this"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - நிலை 20க்கு நகர்த்தவும்.
his"சப்ஸ்ட்ரிங்" உடன் "ஐ ஒப்பிடவும். பொருத்தம் இல்லை. - 21 ஆம் நிலைக்கு நகர்த்தவும்.
is t"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 22 ஆம் நிலைக்கு நகர்த்தவும்.
s te"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 23 ஆம் நிலைக்கு நகர்த்தவும்.
ubst"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 24 ஆம் நிலைக்கு நகர்த்தவும்.
bstr"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 25 ஆம் நிலைக்கு நகர்த்தவும்.
stre"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 26 ஆம் நிலைக்கு நகர்த்தவும்.
trin"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். பொருத்தம் இல்லை. - 27 ஆம் நிலைக்கு நகர்த்தவும்.
ring"சப்ஸ்ட்ரிங்" உடன் ஒப்பிடவும். போட்டி கண்டறியப்பட்டது, சாதனை நிலை 27.
"சப்ஸ்ட்ரிங்" என்ற துணைச்சரம் உரைக்குள் 27வது இடத்தில் உள்ளது.
C++ இல் எடுத்துக்காட்டு குறியீடு
#include <iostream>
#include <string>
#include <vector>
std::vector<int> textSearch(const std::string& text, const std::string& query) {
std::vector<int> positions;
for(int i = 0; i <= text.length()- query.length(); ++i) {
int j = 0;
while(j < query.length() && text[i + j] == query[j]) {
++j;
}
if(j == query.length()) {
positions.push_back(i);
}
}
return positions;
}
int main() {
std::string text = "Let's search for a substring within this text to see how the algorithm works.";
std::string query = "substring";
std::vector<int> result = textSearch(text, query);
std::cout << "Substring found at positions: ";
for(int pos: result) {
std::cout << pos << ";
}
std::cout << std::endl;
return 0;
}
இந்த எடுத்துக்காட்டில், textSearch உரைக்குள் "சப்ஸ்ட்ரிங்" என்ற துணை சரத்தின் நிலைகளைக் கண்டறிய செயல்பாடு பயன்படுத்தப்படுகிறது. இதன் விளைவாக போட்டிகளின் தொடக்க நிலைகளைக் கொண்ட ஒரு திசையன் இருக்கும்.

