ტექსტის ძიების ალგორითმი არის ფუნდამენტური მეთოდი ტექსტის დამუშავებისა და ინფორმაციის მოძიებაში. ეს ალგორითმი საშუალებას გვაძლევს განვსაზღვროთ და ამოვიცნოთ ქვესტრიქონის(ან ნიმუშის) შემთხვევები ტექსტის უფრო დიდ ნაწილში.
Როგორ მუშაობს
- დაიწყეთ ტექსტის(ან დოკუმენტის) უფრო დიდი ნაწილით და საძიებელი ქვესტრიქით.
- თანმიმდევრულად გაიმეორეთ ტექსტის თითოეული სიმბოლო.
- შეადარეთ ქვესტრიქონი ტექსტის ნაწილთან, რომელსაც აქვს იგივე სიგრძე, როგორც ქვესტრიქონი. თუ მატჩი იპოვეს, ჩაწერეთ მიმდინარე პოზიცია.
- გადადით შემდეგ პოზიციაზე და განაგრძეთ შედარება.
მაგალითი
განვიხილოთ ტექსტი: "მოდით მოძებნოთ ქვესტრიქონი ამ ტექსტში, რათა ვნახოთ როგორ მუშაობს ალგორითმი."
და ქვესტრიქონი მოსაძებნად: "substring"
- დაიწყეთ 0 პოზიციიდან. შეადარეთ
Let'"substring". არანაირი მატჩი. - გადავიდეთ პოზიციაზე 1. შეადარეთ
et's"substring". არანაირი მატჩი. - გადადით მე-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.
ქვესტრიქონი "substring" გვხვდება ტექსტში 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 ფუნქცია გამოიყენება ტექსტში ქვესტრიქონის "substring" პოზიციების მოსაძებნად. შედეგი იქნება ვექტორი, რომელიც შეიცავს მატჩების სასტარტო პოზიციებს.

