Algoritma Carian Teks ialah kaedah asas dalam pemprosesan teks dan mendapatkan maklumat. Algoritma ini membolehkan kami mencari dan mengenal pasti kejadian subrentetan(atau corak) dalam sekeping teks yang lebih besar.
Bagaimana ia berfungsi
- Mulakan dengan sekeping teks(atau dokumen) yang lebih besar dan subrentetan untuk dicari.
- Lelaran melalui setiap aksara teks secara berurutan.
- Bandingkan subrentetan dengan sebahagian daripada teks yang mempunyai panjang yang sama dengan subrentetan. Jika perlawanan ditemui, rekod kedudukan semasa.
- Beralih ke kedudukan seterusnya dan teruskan perbandingan.
Contoh
Pertimbangkan teks: "Mari kita cari subrentetan dalam teks ini untuk melihat cara algoritma berfungsi."
Dan subrentetan untuk mencari: "substring"
- Mulakan pada kedudukan 0. Bandingkan
Let'
dengan "substring". Tidak setanding. - Beralih ke kedudukan 1. Bandingkan
et's
dengan "substring". Tidak setanding. - Beralih ke kedudukan 2. Bandingkan
t's
" dengan "substring". Tiada padanan. - Beralih ke kedudukan 3. Bandingkan
's s
dengan "substring". Tidak setanding. - Beralih ke kedudukan 4. Bandingkan
se
dengan "substring". Tidak setanding. - Beralih ke kedudukan 5. Bandingkan
sea
dengan "substring". Tidak setanding. - Beralih ke kedudukan 6. Bandingkan
earc
dengan "substring". Tidak setanding. - Beralih ke kedudukan 7. Bandingkan
arch
dengan "substring". Tidak setanding. - Beralih ke kedudukan 8. Bandingkan
rch
" dengan "substring". Tiada padanan. - Beralih ke kedudukan 9. Bandingkan
ch w
dengan "substring". Tidak setanding. - Beralih ke kedudukan 10. Bandingkan
h wi
dengan "substring". Tidak setanding. - Beralih ke kedudukan 11. Bandingkan "
wit
dengan "substring". Tiada padanan. - Beralih ke kedudukan 12. Bandingkan
with
dengan "substring". Tidak setanding. - Beralih ke kedudukan 13. Bandingkan
ithi
dengan "substring". Tidak setanding. - Beralih ke kedudukan 14. Bandingkan
thin
dengan "substring". Tidak setanding. - Beralih ke kedudukan 15. Bandingkan
hinn
dengan "substring". Tidak setanding. - Beralih ke kedudukan 16. Bandingkan
in t
dengan "substring". Tidak setanding. - Beralih ke kedudukan 17. Bandingkan
n th
dengan "substring". Tidak setanding. - Beralih ke kedudukan 18. Bandingkan "
thi
dengan "substring". Tiada padanan. - Beralih ke kedudukan 19. Bandingkan
this
dengan "substring". Tidak setanding. - Beralih ke kedudukan 20. Bandingkan
his
" dengan "substring". Tiada padanan. - Beralih ke kedudukan 21. Bandingkan
is t
dengan "substring". Tidak setanding. - Beralih ke kedudukan 22. Bandingkan
s te
dengan "substring". Tidak setanding. - Beralih ke kedudukan 23. Bandingkan
ubst
dengan "substring". Tidak setanding. - Beralih ke kedudukan 24. Bandingkan
bstr
dengan "substring". Tidak setanding. - Beralih ke kedudukan 25. Bandingkan
stre
dengan "substring". Tidak setanding. - Beralih ke kedudukan 26. Bandingkan
trin
dengan "substring". Tidak setanding. - Beralih ke kedudukan 27. Bandingkan
ring
dengan "substring". Perlawanan ditemui, rekod kedudukan 27.
Substring "substring" ditemui pada kedudukan 27 dalam teks.
Contoh Kod dalam 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;
}
Dalam contoh ini, textSearch
fungsi digunakan untuk mencari kedudukan subrentetan "substring" dalam teks. Keputusan akan menjadi vektor yang mengandungi kedudukan permulaan perlawanan.