पाठ खोज एल्गोरिथ्म पाठ प्रशोधन र जानकारी पुन: प्राप्ति मा एक आधारभूत विधि हो। यो एल्गोरिदमले हामीलाई पाठको ठूलो टुक्रा भित्र सबस्ट्रिङ(वा ढाँचा) को घटनाहरू पत्ता लगाउन र पहिचान गर्न अनुमति दिन्छ।
यो कसरी काम गर्दछ
- पाठको ठूलो टुक्रा(वा कागजात) र खोजी गर्नको लागि सबस्ट्रिङबाट सुरु गर्नुहोस्।
- पाठको प्रत्येक क्यारेक्टरलाई क्रमिक रूपमा दोहोर्याउनुहोस्।
- सबस्ट्रिङको समान लम्बाइ भएको पाठको अंशसँग सबस्ट्रिङ तुलना गर्नुहोस्। यदि मिल्दो फेला पर्यो भने, हालको स्थिति रेकर्ड गर्नुहोस्।
- अर्को स्थितिमा जानुहोस् र तुलना जारी राख्नुहोस्।
उदाहरण
पाठलाई विचार गर्नुहोस्: "एल्गोरिथ्मले कसरी काम गर्छ भनेर हेर्न यो पाठ भित्र सबस्ट्रिङ खोजौं।"
र खोज्नको लागि सबस्ट्रिङ: "सबस्ट्रिंग"
- स्थिति ० मा सुरु गर्नुहोस्।
Let'
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति १ मा सार्नुहोस्।
et's
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति २ मा जानुहोस्।
t's
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति ३ मा सार्नुहोस्।
's s
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति ४ मा सार्नुहोस्।
se
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति ५ मा जानुहोस्।
sea
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 6 मा सार्नुहोस्।
earc
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति ७ मा सार्नुहोस्।
arch
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 8 मा सार्नुहोस्।
rch
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 9 मा सार्नुहोस्।
ch w
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति १० मा सार्नुहोस्।
h wi
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 11 मा सार्नुहोस्।
wit
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 12 मा सार्नुहोस्।
with
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति १३ मा सार्नुहोस्।
ithi
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 14 मा सार्नुहोस्।
thin
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 15 मा सार्नुहोस्।
hinn
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 16 मा सार्नुहोस्।
in t
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 17 मा सार्नुहोस्।
n th
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 18 मा सार्नुहोस्।
thi
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 19 मा सार्नुहोस्।
this
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 20 मा सार्नुहोस्।
his
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति २१ मा सार्नुहोस्।
is t
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 22 मा सार्नुहोस्।
s te
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति २३ मा सार्नुहोस्।
ubst
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 24 मा सार्नुहोस्।
bstr
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति २५ मा जानुहोस्।
stre
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति 26 मा सार्नुहोस्।
trin
"सबस्ट्रिंग" सँग तुलना गर्नुहोस्। कुनै मेल छैन। - स्थिति २७ मा जानुहोस्।
ring
"सबस्ट्रिङ" सँग तुलना गर्नुहोस्। मिलान फेला पर्यो, रेकर्ड स्थिति 27।
substring "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
प्रकार्य पाठ भित्र सबस्ट्रिङ "सबस्ट्रिङ" को स्थिति पत्ता लगाउन प्रयोग गरिन्छ। नतिजा एक भेक्टर हुनेछ जसमा खेलहरूको सुरुवात स्थितिहरू छन्।