Algoritmy pro vyhledávání v textu

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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ů. +more 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.

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.

AlgoritmusČas potřebný pro předzpracováníČas potřebný pro vyhledání
Naivní vyhledávání0Θ((n-m+1) m)
Rabinův-Karpův algoritmusΘ(m)průměrně Θ(n+m), nejhůře Θ((n-m+1) m)
vyhledávání založené na konečném automatuΘ(m |Σ|)Θ(n)
Knuthův-Morrisův-Prattův algoritmusΘ(m)Θ(n)
Boyerův-Mooreův algoritmusΘ(m + |Σ|)Ω(n/m), O(n)

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.

Odkazy

Reference

Literatura

Externí odkazy

R. S. +more Boyer and J S. Moore, [url=http://www. cs. utexas. edu/~moore/publications/fstrpos. pdf]A fast string searching algorithm[/url], Carom. ACM 20, (10), 262-272(1977). * Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. . Chapter 32: String Matching, pp. 906-932.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top