Algoritmes de busca d'subcadena
A este tipo d'algoritmes també se'ls crida Algoritmes de patrons en un text, algoritmes de emparejamiento de seqüències, algoritmes de casament de seqüències o simplement pel seu nom en anglés string matching. Este tipo d'algoritmes perseguixen trobar subcadena/s en alguna propietat en una cadena de caràcters.
Terminologia
[editar | editar còdic]Normalment es denomina patró/és a la/ subcadena/s buscada/s i text a la cadena en la que es realisa la busca. Se solen amprar les lletres m i n per a referir-nos a la llongitut d'un patró i a la llongitut del text respectivament. Podem assumir que n>m
Classificació
[editar | editar còdic]Este tipo d'algoritmes es poden classificar segons el número de subcadena que s'intenten buscar en simples, es busca només una subcadena, i múltiples, es busquen vàries subcadena.[1][2]
Algoritmes de busca simple de subcadena
[editar | editar còdic]També anomenats per la seua denominació en anglés Single string Matching. En este tipo d'algoritmes només es busca una subcadena a la que cridem patró, és dir l'objectiu és trobar totes les ocurrències del patró p dins del text. Este tipo d'algoritmes se solen agrupar en algun dels següents tipos[1]
- Força bruta. L'idea és anar esgolant el patró sobre el text d'esquerra a dreta, comparant-ho en les subcadena del mateix tamany que escomencen en cada caràcter del text.
- Llegir tots els caràcters del text un a un modificant en cada pas algunes variables que permeten identificar possibles ocurrències. A este tipo pertanyen els algoritmes de Knuth-Morris-Pratt,[3] Shift-Or[4] o busca simple en autómata determinista.
- Buscar el patró en una finestra que s'esgola a lo llarc del text. Per a cada posició d'esta finestra busquem de dreta a esquerra un sufix de la finestra que corresponga a un sufix del patró. A este tipo pertanyen els algoritmes de Boyer-Moore,[5] Boyer-Moore-Horspool[6] i Sunday Quick Search.[7] Este tipo d'algoritmes no solen funcionar be quan el tamany del patró és chicotet i hi ha una provabilitat alta de trobar-ho en el text.
- La busca es realisa de dreta a esquerra dins d'una finestra, pero en este esquema es busca el sufix més llarc en la finestra que és subcadena del patró. Eixemples d'este tipo d'algoritmes són BDM,[8] BNDM[9] i BOM.[10] Este tipo d'algoritmes per a patrons menuts no solen funcionar be.
- Esquemes basats en funcions hash. Eixemple d'este tipo d'algoritmes és el de Karp-Rabin.[11]
Algoritmes de busca múltiple de subcadena
[editar | editar còdic]També anomenats per la seua denominació en anglés Multiple String Matching. Ara no tenim un sol patró p a buscar sino que contem en un conjunt P={p1,..., pl} de patrons. La solució que se sol adoptar és l'extensió dels esquemes anteriors per al cas múltiple. Per tant tenim els següents subtipos:
- Força bruta
- Extensió del tipo 2 d'algoritmes de busca simple de subcadena. D'este tipo d'algoritmes són els d'Aho-Corasick,[12] Multiple Shift-And i busca múltiple en autómata determinista.
- Extensió del tipo 3 d'algoritmes de busca simple de subcadena. D'este tipo són els algoritmes de Commentz-Walter,[13] Set Horspool, Wu-Manber.[14]
- Extensió del tipo 4 d'algoritmes de busca simple de subcadena. D'este tipo són els algoritmes SBOM, Multiple BNDM,[15] DAWG-MATCH.[16]
- Extensió del tipo 5 d'algoritmes de busca simple de subcadena
Referències
[editar | editar còdic]- ↑ 1,0 1,1 Román Roset Mayals,Disseny d'una aplicació bioinformática per a l'estudi de repeticions de patrons en cadenes de DNA. Memòria 2003
- ↑ Sergio Talens-Oliag Anàlisis d'algoritmes de busca d'un sol patró. Proyecte Fi de Carrera 1997. O Politècnica de Valéncia
- ↑ D. E. Knuth, J. H. Morris, and V. R. Pratt. Fast pattern matching in strings. SIAM J.Comput, 6(2):323–350, 1977
- ↑ R. Baeza-Yates and G. Gonnet. A new approach to text searching. Comm. ACM, 35(10):74–82, 1992
- ↑ R. S. Boyer and J. S. Moore. A fast string searching algorithm. Comm. ACM, 20(10):762–772, 1977
- ↑ R. Horspool. Practical fast searching in strings. Softw. Pract. Exp.,10(6):501–506, 1980
- ↑ Daniel M. Sunday. A Very Fast Substring Search Algorithm. Comunications of the ACM 33 (8),132–142 (Agost de 1990)
- ↑ A. Czumaj, M. Crochemore, L. Gasieniec, S. Jarominek, W. Plandowski, T. Lecroq, and W. Rytter. Speeding up two string-matching algorithms. Algorithmica, 12:247–267, 1994.
- ↑ G. Navarro and M. Raffinot. A bit-parallel approach to suffix automata:Fast estendre string matching. In Proceedings of the 9th Annual Symposium on Combinatorial Pattern Matching, number 1448 in Lecture Notes in Computer Science, pages 14–33. Springer-Verlag, Berlin, 1998
- ↑ Cyril Allauzen, Maxime Crochemore, and Mathieu Raffinot. Factor oracle:A new structure for pattern matching. In Conference on Current Trends in Theory and Practice of Informatics, pages 295–310, 1999.
- ↑ Karp, R. M. i Rabin, M. O.. Efficient Randomized Pattern Matching Algorithms. IBM J. Res.Develop.31 (2), 249–260 (1987)
- ↑ A. V. Aho and M. Corasick. Efficient string matching: An aid to bibliographic search. Comm. ACM, 18(6):333–340, 1975
- ↑ B. Commentz-Walter. A string matching algorithm fast on the average. In 6th, number 71 in Lecture Notes in Computer Science, pages 118–132. H.A.Maurer, 1979
- ↑ S. Wu and U. Manber. A fast algorithm for multi-pattern searching. Technical Report TR-94-17, Chung-Cheng University, 1994
- ↑ M. Crochemore and W.Rytter. Text Algorithms. Oxford University Press,1994.
- ↑ Maxime Crochemore, Artur Czumaj, Leszek Gasieniec, Thierry Lecroq,Wojciech Plandowski, and Wojciech Rytter. Fast practical multi-pattern matching. Information Processing Letters, 71(3-4):107–113, 1999.
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Algoritmos de búsqueda de subcadenas» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.