Two algorithms for maintaining order in a list
STOC '87 Proceedings of the nineteenth annual ACM symposium on Theory of computing
Algorithms on strings, trees, and sequences: computer science and computational biology
Algorithms on strings, trees, and sequences: computer science and computational biology
Proceedings of the tenth annual ACM-SIAM symposium on Discrete algorithms
Suffix arrays: a new method for on-line string searches
SODA '90 Proceedings of the first annual ACM-SIAM symposium on Discrete algorithms
A Space-Economical Suffix Tree Construction Algorithm
Journal of the ACM (JACM)
Pattern matching in dynamic texts
SODA '00 Proceedings of the eleventh annual ACM-SIAM symposium on Discrete algorithms
Efficient Techniques for Maintaining Multidimensional Keys in Linked Data Structures
ICAL '99 Proceedings of the 26th International Colloquium on Automata, Languages and Programming
Two Simplified Algorithms for Maintaining Order in a List
ESA '02 Proceedings of the 10th Annual European Symposium on Algorithms
Optimal suffix tree construction with large alphabets
FOCS '97 Proceedings of the 38th Annual Symposium on Foundations of Computer Science
Efficient approximate and dynamic matching of patterns using a labeling paradigm
FOCS '96 Proceedings of the 37th Annual Symposium on Foundations of Computer Science
Linear pattern matching algorithms
SWAT '73 Proceedings of the 14th Annual Symposium on Switching and Automata Theory (swat 1973)
Simple linear work suffix array construction
ICALP'03 Proceedings of the 30th international conference on Automata, languages and programming
SODA '07 Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms
Real-time indexing over fixed finite alphabets
Proceedings of the nineteenth annual ACM-SIAM symposium on Discrete algorithms
Persistency in suffix trees with applications to string interval problems
SPIRE'11 Proceedings of the 18th international conference on String processing and information retrieval
Near real-time suffix tree construction via the fringe marked ancestor problem
SPIRE'11 Proceedings of the 18th international conference on String processing and information retrieval
Suffix trays and suffix trists: structures for faster text indexing
ICALP'06 Proceedings of the 33rd international conference on Automata, Languages and Programming - Volume Part I
On demand string sorting over unbounded alphabets
Theoretical Computer Science
On demand string sorting over unbounded alphabets
CPM'07 Proceedings of the 18th annual conference on Combinatorial Pattern Matching
Near real-time suffix tree construction via the fringe marked ancestor problem
Journal of Discrete Algorithms
Full-Fledged real-time indexing for constant size alphabets
ICALP'13 Proceedings of the 40th international conference on Automata, Languages, and Programming - Volume Part I
Hi-index | 0.00 |
The quest for a real-time suffix tree construction algorithm is over three decades old. To date there is no convincing understandable solution to this problem. This paper makes a step in this direction by constructing a suffix tree online in time O(log n) per every single input symbol. Clearly, it is impossible to achieve better than O(log n) time per symbol in the comparison model, therefore no true real time algorithm can exist for infinite alphabets. Nevertheless, the best that can be hoped for is that the construction time for every symbol does not exceed O(log n) (as opposed to an amortized O(log n) time per symbol, achieved by current known algorithms). To our knowledge, our algorithm is the first that spends in the worst caseO(log n) per every single input symbol. We also provide a simple algorithm that constructs online an indexing structure (the BIS) in time O(log n) per input symbol, where n is the number of text symbols input thus far. This structure and fast LCP (Longest Common Prefix) queries on it, provide the backbone for the suffix tree construction. Together, our two data structures provide a searching algorithm for a pattern of length m whose time is $O(min(m {\rm log} |{\it \Sigma}|,m + {\rm log} n) + tocc)$, where tocc is the number of occurrences of the pattern.