The input/output complexity of sorting and related problems
Communications of the ACM
Fast parallel and serial approximate string matching
Journal of Algorithms
Algorithms on strings, trees, and sequences: computer science and computational biology
Algorithms on strings, trees, and sequences: computer science and computational biology
A fast bit-vector algorithm for approximate string matching based on dynamic programming
Journal of the ACM (JACM)
The String-to-String Correction Problem
Journal of the ACM (JACM)
A fast algorithm for computing longest common subsequences
Communications of the ACM
A linear space algorithm for computing maximal common subsequences
Communications of the ACM
A guided tour to approximate string matching
ACM Computing Surveys (CSUR)
Approximate String Matching: A Simpler Faster Algorithm
SIAM Journal on Computing
FOCS '99 Proceedings of the 40th Annual Symposium on Foundations of Computer Science
A Subquadratic Sequence Alignment Algorithm for Unrestricted Scoring Matrices
SIAM Journal on Computing
Cache-oblivious dynamic programming
SODA '06 Proceedings of the seventeenth annual ACM-SIAM symposium on Discrete algorithm
Cache-efficient dynamic programming algorithms for multicores
Proceedings of the twentieth annual symposium on Parallelism in algorithms and architectures
Fast and compact regular expression matching
Theoretical Computer Science
Cache-Oblivious Dynamic Programming for Bioinformatics
IEEE/ACM Transactions on Computational Biology and Bioinformatics (TCBB)
Faster Approximate String Matching for Short Patterns
Theory of Computing Systems
Hi-index | 0.00 |
String comparison such as sequence alignment, edit distance computation, longest common subsequence computation, and approximate string matching is a key task (and often computational bottleneck) in large-scale textual information retrieval. For instance, algorithms for sequence alignment are widely used in bioinformatics to compare DNA and protein sequences. These problems can all be solved using essentially the same dynamic programming scheme over a two-dimensional matrix, where each entry depends locally on at most 3 neighboring entries. We present a simple, fast, and cache-oblivious algorithm for this type of local dynamic programming suitable for comparing large-scale strings. Our algorithm outperforms the previous state-of-the-art solutions. Surprisingly, our new simple algorithm is competitive with a complicated, optimized, and tuned implementation of the best cache-aware algorithm. Additionally, our new algorithm generalizes the best known theoretical complexity trade-offs for the problem.