Algoritmy pro vyhledávání v textu
From Wikipedia, the free encyclopedia
Remove ads
Algoritmy pro vyhledávání v textu jsou důležitou třídou algoritmů pro práci s textovými řetězci. Slouží ke hledání místa, kde se jeden či více řetězců (vzorků) shoduje s částí většího textu.
Nechť Σ je abeceda (konečná množina). Formálně jsou vzorek i prohledávaný text řetězce prvků množiny Σ, což může být běžně používaná abeceda (například písmena A až Ž), binární abeceda (Σ = {0,1}) nebo abeceda DNA (Σ = {A,C,G,T}) používaná v bioinformatice.
V praxi může mít způsob, jakým je řetězec zakódován, vliv na samotný vyhledávací algoritmus. Obzvláště pokud je použita proměnná délka kódování, trvá dlouho (vzhledem k délce textu N) nalezení N-tého znaku a znatelně to zpomaluje mnoho pokročilejších vyhledávacích algoritmů. Abychom tento problém vyřešili, můžeme místo samotného řetězce hledat posloupnost, pomocí níž je zakódován. Pokud však k tomu kódování není přizpůsobeno, může takové řešení vést k falešným shodám.
Remove ads
Základní rozdělení
Algoritmy můžeme rozdělit podle počtu vzorků, které používají.
Algoritmy používající jeden vzorek
Nechť m je délka vzorku a n je délka prohledávaného textu.
Algoritmy používající konečnou množinu vzorků
- Aho–Corasick algoritmus pro shodů řetězců
- Commentz–Walter algoritmus
- Rabin–Karp algoritmus pro vyhledávání v textu
Algoritmy používající nekonečně mnoho vzorků
V tomto případě nemohou být vzorky jednoduše vyjmenovány. Obvykle je reprezentujeme pomocí regulární gramatiky nebo regulárního výrazu.
Remove ads
Odkazy
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads