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