Practical methods for constructing suffix trees

被引:40
作者
Tian, YY
Tata, S
Hankins, RA
Patel, JM
机构
[1] Intel Corp, Microarchitecture Res Lab, Santa Clara, CA 95054 USA
[2] Univ Michigan, Ann Arbor, MI 48109 USA
关键词
suffix tree construction; sequence matching;
D O I
10.1007/s00778-005-0154-8
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
Sequence datasets are ubiquitous in modern life-science applications, and querying sequences is a common and critical operation in many of these applications. The suffix tree is a versatile data structure that can be used to evaluate a wide variety of queries on sequence datasets, including evaluating exact and approximate string matches, and finding repeat patterns. However, methods for constructing suffix trees are often very time-consuming, especially for suffix trees that are large and do not fit in the available main memory. Even when the suffix tree fits in memory, it turns out that the processor cache behavior of theoretically optimal suffix tree construction methods is poor, resulting in poor performance. Currently, there are a large number of algorithms for constructing suffix trees, but the practical tradeoffs in using these algorithms for different scenarios are not well characterized. In this paper, we explore suffix tree construction algorithms over a wide spectrum of data sources and sizes. First, we show that on modern processors, a cache-efficient algorithm with O(n(2)p) worst-case complexity outperforms popular linear time algorithms like Ukkonen and McCreight, even for in-memory construction. For larger datasets, the disk I/O requirement quickly becomes the bottleneck in each algorithm's performance. To address this problem, we describe two approaches. First, we present a buffer management strategy for the O(n(2)) algorithm. The resulting new algorithm, which we call "Top Down Disk-based" (TDD), scales to sizes much larger than have been previously described in literature. This approach far outperforms the best known disk-based construction methods. Second, we present a new disk-based suffix tree construction algorithm that is based on a sort-merge paradigm, and show that for constructing very large suffix trees with very little resources, this algorithm is more efficient than TDD.
引用
收藏
页码:281 / 299
页数:19
相关论文
共 50 条
[21]   Optimal suffix tree construction with large alphabets [J].
Farach, M .
38TH ANNUAL SYMPOSIUM ON FOUNDATIONS OF COMPUTER SCIENCE, PROCEEDINGS, 1997, :137-143
[22]   On the sorting-complexity of suffix tree construction [J].
Farach-Colton, M ;
Ferragina, P ;
Muthukrishnan, S .
JOURNAL OF THE ACM, 2000, 47 (06) :987-1011
[23]   From Ukkonen to McCreight and Weiner: A unifying view of linear-time suffix tree construction [J].
Giegerich, R ;
Kurtz, S .
ALGORITHMICA, 1997, 19 (03) :331-353
[24]   Efficient implementation of lazy suffix trees [J].
Giegerich, R ;
Kurtz, S ;
Stoye, J .
SOFTWARE-PRACTICE & EXPERIENCE, 2003, 33 (11) :1035-1049
[25]  
Gusfield D., 1997, ALGORITHMS STRINGS T
[26]  
Heumann K., 1996, Proceedings of the Third South American Workshop on String Processing. WSP 1996, P101
[27]  
Hunt E., 2001, Proceedings of the 27th International Conference on Very Large Data Bases, P139
[28]  
*INT CORP, 2004, IA 32 INT ARCH OPT R
[29]  
Kärkkäinen J, 2003, LECT NOTES COMPUT SC, V2719, P943
[30]  
Kasai T., 2001, Combinatorial Pattern Matching. 12th Annual Symposium, CPM 2001. Proceedings (Lecture Notes in Computer Science Vol. 2089), P181