Примітивний алгоритм пошуку рядка

Матеріал з testwiki
Версія від 16:30, 21 листопада 2019, створена imported>Servansky
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Приміти́вний алгори́тм по́шуку рядка́ (Шаблон:Lang-en) — найпростіший алгоритм, що розв'язує задачу знаходження розташування рядка в тексті.

Алгоритм не є ефективним, але він не потребує додаткової пам'яті і тому входить до стандартних бібліотек більшості мов програмування.

Ідея алгоритму

Ідея полягає у послідовній перевірці всіх можливих початкових зсувів. Для кожного зсуву s перевіряється рівність P[1..m] = T[s+1..s+m].

Псевдокод

Naive_String_Matcher(T,P)
1 nlength[T]
2 mlength[P]
3 for s0 to nm
4     do if P[1..m]=T[s+1..s+m]
5           then print "Зразок знайдено зі здвигом" s

Оцінка складності роботи

Так як алгоритм перебирає n можливих зсувів, і для кожного зсуву виконується порівняння рядків в m операцій, то складність всього пошуку є Θ(n m).

Тут n — довжина тексту, m — довжина зразка.

Джерела

  • Thimas H. Cormen; Charles E. Leiserson; Ronald L. Rivest; Clifford Stein. Introduction to Algorithms (2nd ed.) The MIT Press. ISBN 0-07-013151-1.