உரைத் தேடல் அல்காரிதம் என்பது உரைச் செயலாக்கம் மற்றும் தகவல்களை மீட்டெடுப்பதில் ஒரு அடிப்படை முறையாகும். இந்த அல்காரிதம் ஒரு பெரிய உரைக்குள் ஒரு சப்ஸ்ட்ரிங்(அல்லது பேட்டர்ன்) நிகழ்வுகளைக் கண்டறிந்து அடையாளம் காண அனுமதிக்கிறது.
எப்படி இது செயல்படுகிறது
- ஒரு பெரிய உரை(அல்லது ஆவணம்) மற்றும் தேடுவதற்கான துணைச்சரத்துடன் தொடங்கவும்.
- உரையின் ஒவ்வொரு எழுத்தையும் வரிசையாக மீண்டும் செய்யவும்.
- துணைச்சரத்தின் அதே நீளம் கொண்ட உரையின் ஒரு பகுதியுடன் துணைச்சரத்தை ஒப்பிடுக. பொருத்தம் கண்டறியப்பட்டால், தற்போதைய நிலையை பதிவு செய்யவும்.
- அடுத்த நிலைக்குச் சென்று ஒப்பீட்டைத் தொடரவும்.
உதாரணமாக
உரையைக் கவனியுங்கள்: "அல்காரிதம் எவ்வாறு செயல்படுகிறது என்பதைப் பார்க்க, இந்த உரையில் ஒரு துணைச்சரத்தைத் தேடுவோம்."
மற்றும் தேட வேண்டிய சப்ஸ்ட்ரிங்: "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
உரைக்குள் "சப்ஸ்ட்ரிங்" என்ற துணை சரத்தின் நிலைகளைக் கண்டறிய செயல்பாடு பயன்படுத்தப்படுகிறது. இதன் விளைவாக போட்டிகளின் தொடக்க நிலைகளைக் கொண்ட ஒரு திசையன் இருக்கும்.