Algorithm ya Utafutaji wa Maandishi ni njia ya msingi katika usindikaji wa maandishi na urejeshaji wa habari. Kanuni hii huturuhusu kupata na kutambua matukio ya kamba ndogo(au muundo) ndani ya kipande kikubwa cha maandishi.
Inavyofanya kazi
- Anza na kipande kikubwa cha maandishi(au hati) na kifungu kidogo cha kutafuta.
- Rudia kupitia kila herufi ya maandishi kwa kufuatana.
- Linganisha kamba ndogo na sehemu ya maandishi ambayo ina urefu sawa na kamba ndogo. Ikiwa mechi imepatikana, rekodi nafasi ya sasa.
- Nenda kwenye nafasi inayofuata na uendelee kulinganisha.
Mfano
Fikiria maandishi: "Hebu tutafute kamba ndogo ndani ya maandishi haya ili kuona jinsi algoriti inavyofanya kazi."
Na kifungu kidogo cha kutafuta: "substring"
- Anza kwenye nafasi 0. Linganisha
Let'na "substring". Hakuna mechi. - Sogeza hadi nafasi ya 1. Linganisha
et'sna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 2. Linganisha
t's" na "substring". Hakuna mechi. - Sogeza hadi nafasi ya 3. Linganisha
's sna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 4. Linganisha
sena "substring". Hakuna mechi. - Sogeza hadi nafasi ya 5. Linganisha
seana "substring". Hakuna mechi. - Sogeza hadi nafasi ya 6. Linganisha
earcna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 7. Linganisha
archna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 8. Linganisha
rch" na "substring". Hakuna mechi. - Sogeza hadi nafasi ya 9. Linganisha
ch wna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 10. Linganisha
h wina "substring". Hakuna mechi. - Sogeza hadi nafasi ya 11. Linganisha "
witna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 12. Linganisha
withna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 13. Linganisha
ithina "substring". Hakuna mechi. - Sogeza hadi nafasi ya 14. Linganisha
thinna "msururu mdogo". Hakuna mechi. - Sogeza hadi nafasi ya 15. Linganisha
hinnna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 16. Linganisha
in tna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 17. Linganisha
n thna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 18. Linganisha "
thina "substring". Hakuna mechi. - Sogeza hadi nafasi ya 19. Linganisha
thisna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 20. Linganisha
his" na "substring". Hakuna mechi. - Sogeza hadi nafasi ya 21. Linganisha
is tna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 22. Linganisha
s tena "substring". Hakuna mechi. - Sogeza hadi nafasi ya 23. Linganisha
ubstna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 24. Linganisha
bstrna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 25. Linganisha
strena "substring". Hakuna mechi. - Sogeza hadi nafasi ya 26. Linganisha
trinna "substring". Hakuna mechi. - Sogeza hadi nafasi ya 27. Linganisha
ringna "substring". Mechi imepatikana, rekodi nafasi ya 27.
Mstari mdogo "msururu" unapatikana katika nafasi ya 27 ndani ya maandishi.
Msimbo wa Mfano katika 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;
}
Katika mfano huu, textSearch chaguo za kukokotoa hutumika kupata nafasi za "mfuatano mdogo" ndani ya maandishi. Matokeo yake yatakuwa vekta iliyo na nafasi za kuanzia za mechi.

