Конспекти лекцій та Лабораторні роботи з дисципліни "Алгоритми та структури даних" для III курсу спеціальності 121 "Інженерія програмного забезпечення" ОКР "Фаховий молодший бакалавр" Херсонського політехнічного фахового коледжу Державного університету "Одеська політехніка"
Навчитися використовувати алгоритми пошуку у тексах, створювати власні програмні реалізації даних алгоритмів та застосовувати їх на практиці.
Персональний комп’ютер, IDE Microsoft Visual Studio або інша середа розробки для мови C++
Пошук у рядку (текстовому рядку) — це процес знаходження певного підрядка (або паттерну) у тексті. Пошук у рядку широко використовується в інформатиці та обробці текстової інформації для виявлення, виділення або підрахунку певних фрагментів тексту.
Алгоритм | Складність (гірший випадок) | Складність (середній) | Підтримка множини патернів | Підготовка |
---|---|---|---|---|
Лінійний | O(n*m) | O(n*m) | Ні | Немає |
КМП | O(n + m) | O(n + m) | Ні | O(m) |
Бойера-Мура | O(n*m) | O(n/m) | Ні | O(m + k) |
Рабіна-Карпа | O(n*m) | O(n) | Так | O(m) |
Ахо-Корасик | O(n + k) | O(n + k) | Так | O(M) |
n — довжина тексту, m — довжина патерну, k — кількість входжень, M — сумарна довжина всіх патернів.
input file: C:\file.txt
search word: word
position: 15
time: 0.278s
input file: C:\file.txt
search word: word
positions: 15 89 245 764 801 903
time: 1.245s