String matching with a dynamic pattern
Neste trabalho, nós estudamos variações do problema Casamento de Padrões: dadas duas strings, um padrão P e um texto T, queremos computar quantas vezes o padrão ocorre no texto. Nossa contribuição é focada no caso de um padrão dinâmico, ou seja, queremos suportar adição e remoção de caracteres no pa...
| Autor: | |
|---|---|
| Formato: | tesis de maestría |
| Estado: | Versión publicada |
| Fecha de publicación: | 2024 |
| País: | Brasil |
| Recursos: | Universidade Federal de Minas Gerais (UFMG) |
| Repositorio: | Repositório Institucional da UFMG |
| Idioma: | inglés |
| OAI Identifier: | oai:repositorio.ufmg.br:1843/80790 |
| Acesso em linha: | http://hdl.handle.net/1843/80790 |
| Access Level: | acceso abierto |
| Palavra-chave: | strings Algorithms suffix array string matching Computação – Teses Algoritmos de computador – Teses Complexidade computacional – Teses Processamento de vetor (Computação) – Teses Reconhecimento de padrões – Teses |
| id |
BR_b0e5ef5d68e4b5b0191c0eda4002fc3d |
|---|---|
| oai_identifier_str |
oai:repositorio.ufmg.br:1843/80790 |
| network_acronym_str |
BR |
| network_name_str |
Brasil |
| repository_id_str |
|
| spelling |
String matching with a dynamic patternCasamento de padrões dinâmicosstringsAlgorithmssuffix arraystring matchingComputação – TesesAlgoritmos de computador – TesesComplexidade computacional – TesesProcessamento de vetor (Computação) – TesesReconhecimento de padrões – TesesNeste trabalho, nós estudamos variações do problema Casamento de Padrões: dadas duas strings, um padrão P e um texto T, queremos computar quantas vezes o padrão ocorre no texto. Nossa contribuição é focada no caso de um padrão dinâmico, ou seja, queremos suportar adição e remoção de caracteres no padrão, e após cada operação computar quantas vezes ele ocorre no texto. Nós mostramos um algoritmo simples usando Suffix Arrays que usa tempo O(log |T|), depois de tempo O(|T|) de pré-processamento. Nós mostramos como estender nossa solução para suportar remoção, transposição (mover a substring para outra posição) e cópia (copiar a substring e colar em uma posição específica) de substrings, na mesma complexidade de tempo. Nossa solução ainda pode ser estendida para suportar um texto online (adicionar caracteres em uma ponta do texto), mantendo as mesmas complexidades amortizadas de tempo. Também fazemos uma análise do tempo de execução do algoritmo proposto contra um algoritmo ingênuo, para demonstrar sua viabilidade. Também é discutida uma generalização do suffix array para várias strings.In this work, we study variations of the String Matching Problem: given two strings, a pattern P and a text T, we want to find how many times the pattern occurs in the text. We focus our contributions on the case of a dynamic pattern, that is, we want to support character additions and deletions to the pattern, and after each operation compute how many times it occurs in the text. We show a simple algorithm using Suffix Arrays that achieves O(log |T|) update time, after O(|T|) preprocess time. We show how to extend our solution to support substring deletion, transposition (moving a substring to another position of the pattern), and copy (copying a substring and pasting it in a specific position), in the same time complexities. Our solution can also be extended to support an online text (adding characters to one end of the text), maintaining the same amortized bounds. We also do a running time analysis of the proposed algorithm versus a naive solution, to illustrate its feasibility. A generalization of the suffix array for several strings is also discussed.CAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível SuperiorUniversidade Federal de Minas GeraisBrasilICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃOPrograma de Pós-Graduação em Ciência da ComputaçãoUFMGVinicius Fernandes dos Santoshttp://lattes.cnpq.br/6270626469557436Victor CamposFelipe Alves da Louza2025-03-20T15:13:33Z2025-03-20T15:13:33Z2024-12-04info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/1843/80790enginfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMGBruno Maletta Monteiro2025-03-20T15:13:33Zoai:repositorio.ufmg.br:1843/80790Repositório InstitucionalPUBhttps://repositorio.ufmg.br/oairepositorio@ufmg.bropendoar:2025-03-20T15:13:33Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false |
| dc.title.none.fl_str_mv |
String matching with a dynamic pattern Casamento de padrões dinâmicos |
| title |
String matching with a dynamic pattern |
| spellingShingle |
String matching with a dynamic pattern Bruno Maletta Monteiro strings Algorithms suffix array string matching Computação – Teses Algoritmos de computador – Teses Complexidade computacional – Teses Processamento de vetor (Computação) – Teses Reconhecimento de padrões – Teses |
| title_short |
String matching with a dynamic pattern |
| title_full |
String matching with a dynamic pattern |
| title_fullStr |
String matching with a dynamic pattern |
| title_full_unstemmed |
String matching with a dynamic pattern |
| title_sort |
String matching with a dynamic pattern |
| dc.creator.none.fl_str_mv |
Bruno Maletta Monteiro |
| author |
Bruno Maletta Monteiro |
| author_facet |
Bruno Maletta Monteiro |
| author_role |
author |
| dc.contributor.none.fl_str_mv |
Vinicius Fernandes dos Santos http://lattes.cnpq.br/6270626469557436 Victor Campos Felipe Alves da Louza |
| dc.subject.por.fl_str_mv |
strings Algorithms suffix array string matching Computação – Teses Algoritmos de computador – Teses Complexidade computacional – Teses Processamento de vetor (Computação) – Teses Reconhecimento de padrões – Teses |
| topic |
strings Algorithms suffix array string matching Computação – Teses Algoritmos de computador – Teses Complexidade computacional – Teses Processamento de vetor (Computação) – Teses Reconhecimento de padrões – Teses |
| description |
Neste trabalho, nós estudamos variações do problema Casamento de Padrões: dadas duas strings, um padrão P e um texto T, queremos computar quantas vezes o padrão ocorre no texto. Nossa contribuição é focada no caso de um padrão dinâmico, ou seja, queremos suportar adição e remoção de caracteres no padrão, e após cada operação computar quantas vezes ele ocorre no texto. Nós mostramos um algoritmo simples usando Suffix Arrays que usa tempo O(log |T|), depois de tempo O(|T|) de pré-processamento. Nós mostramos como estender nossa solução para suportar remoção, transposição (mover a substring para outra posição) e cópia (copiar a substring e colar em uma posição específica) de substrings, na mesma complexidade de tempo. Nossa solução ainda pode ser estendida para suportar um texto online (adicionar caracteres em uma ponta do texto), mantendo as mesmas complexidades amortizadas de tempo. Também fazemos uma análise do tempo de execução do algoritmo proposto contra um algoritmo ingênuo, para demonstrar sua viabilidade. Também é discutida uma generalização do suffix array para várias strings. |
| publishDate |
2024 |
| dc.date.none.fl_str_mv |
2024-12-04 2025-03-20T15:13:33Z 2025-03-20T15:13:33Z |
| dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
| dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
| format |
masterThesis |
| status_str |
publishedVersion |
| dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/1843/80790 |
| url |
http://hdl.handle.net/1843/80790 |
| dc.language.iso.fl_str_mv |
eng |
| language |
eng |
| dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
| eu_rights_str_mv |
openAccess |
| dc.format.none.fl_str_mv |
application/pdf |
| dc.publisher.none.fl_str_mv |
Universidade Federal de Minas Gerais Brasil ICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Programa de Pós-Graduação em Ciência da Computação UFMG |
| publisher.none.fl_str_mv |
Universidade Federal de Minas Gerais Brasil ICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Programa de Pós-Graduação em Ciência da Computação UFMG |
| dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFMG instname:Universidade Federal de Minas Gerais (UFMG) instacron:UFMG |
| instname_str |
Universidade Federal de Minas Gerais (UFMG) |
| instacron_str |
UFMG |
| institution |
UFMG |
| reponame_str |
Repositório Institucional da UFMG |
| collection |
Repositório Institucional da UFMG |
| repository.name.fl_str_mv |
Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG) |
| repository.mail.fl_str_mv |
repositorio@ufmg.br |
| _version_ |
1853663287444504576 |
| score |
15.301603 |