Inducing Suffix and LCP Arrays in External Memory Timo Bingmann, - - PowerPoint PPT Presentation

inducing suffix and lcp arrays in external memory
SMART_READER_LITE
LIVE PREVIEW

Inducing Suffix and LCP Arrays in External Memory Timo Bingmann, - - PowerPoint PPT Presentation

Inducing Suffix and LCP Arrays in External Memory Timo Bingmann, Johannes Fischer, and Vitaly Osipov | January 7th, 2013 @ ALENEX13 I NSTITUTE OF T HEORETICAL I NFORMATICS A LGORITHMICS KIT University of the State of Baden-Wuerttemberg


slide-1
SLIDE 1

INSTITUTE OF THEORETICAL INFORMATICS – ALGORITHMICS

Inducing Suffix and LCP Arrays in External Memory

Timo Bingmann, Johannes Fischer, and Vitaly Osipov | January 7th, 2013 @ ALENEX’13

KIT – University of the State of Baden-Wuerttemberg and National Laboratory of the Helmholtz Association

www.kit.edu

slide-2
SLIDE 2

Abstract

We consider text index construction in external memory (EM). Our first contribution is an inducing algorithm for suffix arrays in external memory. Practical tests show that this outperforms the previous best EM suffix sorter [Dementiev et al., ALENEX 2005] by a factor of about two in time and I/O-volume. Our second contribution is to augment the first algorithm to also construct the array of longest common prefixes (LCPs). This yields the first EM construction algorithm for LCP arrays. The

  • verhead in time and I/O volume for this extended algorithm
  • ver plain suffix array construction is roughly two.

The algorithms scale far beyond problem sizes previously considered in the literature (text size of 80 GiB using only 4 GiB

  • f RAM in our experiments).

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 2/19

slide-3
SLIDE 3

Overview

1

Introduction and Motivation Evolution of Suffix Array Construction Algorithms History of LCP Construction Algorithms

2

Example of the Inducing Step in the eSAIS Algorithm Inducing the Suffix Array Inducing the LCP Array Finding Ranks of S∗-Suffixes

3

Implementation and Experimental Results Implementation Highlights Experiments – eSAIS vs. DC3

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 3/19

slide-4
SLIDE 4

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

i

LCPi Ti

c a b a b c b a b a b b $ 1 a b a b c b a b a b b $ 2 b a b c b a b a b b $ 3 a b c b a b a b b $ 4 b c b a b a b b $ 5 c b a b a b b $ 6 b a b a b b $ 7 a b a b b $ 8 b a b b $ 9 a b b $ 10 b b $ 11 b $ 12

  • $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 4/19

slide-5
SLIDE 5

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi LCPi TSAi...n

12

  • $

7 a b a b b $ 1 4 a b a b c b a b a b b $ 9 2 a b b $ 3 2 a b c b a b a b b $ 11 b $ 6 1 b a b a b b $ 8 3 b a b b $ 2 3 b a b c b a b a b b $ 10 1 b b $ 4 1 b c b a b a b b $ c a b a b c b a b a b b $ 5 1 c b a b a b b $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 5/19

slide-6
SLIDE 6

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi LCPi TSAi...n

12

  • $

7 a b a b b $ 1 4 a b a b c b a b a b b $ 9 2 a b b $ 3 2 a b c b a b a b b $ 11 b $ 6 1 b a b a b b $ 8 3 b a b b $ 2 3 b a b c b a b a b b $ 10 1 b b $ 4 1 b c b a b a b b $ c a b a b c b a b a b b $ 5 1 c b a b a b b $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 5/19

slide-7
SLIDE 7

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi LCPi TSAi...n

12

  • $

7 a b a b b $ 1 4 a b a b c b a b a b b $ 9 2 a b b $ 3 2 a b c b a b a b b $ 11 b $ 6 1 b a b a b b $ 8 3 b a b b $ 2 3 b a b c b a b a b b $ 10 1 b b $ 4 1 b c b a b a b b $ c a b a b c b a b a b b $ 5 1 c b a b a b b $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 5/19

slide-8
SLIDE 8

Prefix Doubling Induced Copying Recursion

[PST07] updated MM

  • riginal

BW BWT F O(n) tree LS runs S 1/2 copy IT A/B copy KSPP mod2 split KS DC3 BK diffcover KA L/S split MaF deep-shallow KJP fixed Σ Na succinct SS bpr M chains Mo divsufsort MP cache aware NZ O(n log |Σ|) NZC SAIS/SADS N OSACA AN SFE-coding

1999 2000 2003 2004 2005 2006 2007 2009 2011

slide-9
SLIDE 9

Prefix Doubling Induced Copying Recursion

[PST07] updated MM

  • riginal

BW BWT F O(n) tree LS runs S 1/2 copy IT A/B copy KSPP mod2 split KS DC3 BK diffcover KA L/S split MaF deep-shallow KJP fixed Σ Na succinct SS bpr M chains Mo divsufsort MP cache aware NZ O(n log |Σ|) NZC SAIS/SADS N OSACA AN SFE-coding

1999 2000 2003 2004 2005 2006 2007 2009 2011

106 s 50 s 396 s 39 s 129 / 189 s Mo: 57 s 98 s 66 s

Suffix Sorting 256 MiB of Gutenberg Text in RAM on Intel i7 2.67 GHz

slide-10
SLIDE 10

Prefix Doubling Induced Copying Recursion

[PST07] updated MM

  • riginal

BW BWT F O(n) tree LS runs S 1/2 copy IT A/B copy KSPP mod2 split KS DC3 BK diffcover KA L/S split MaF deep-shallow KJP fixed Σ Na succinct SS bpr M chains Mo divsufsort MP cache aware NZ O(n log |Σ|) NZC SAIS/SADS N OSACA AN SFE-coding

1999 2000 2003 2004 2005 2006 2007 2009 2011

106 s 50 s 396 s 39 s 129 / 189 s Mo: 57 s 98 s 66 s

Suffix Sorting 256 MiB of Gutenberg Text in RAM on Intel i7 2.67 GHz

slide-11
SLIDE 11

Prefix Doubling Induced Copying Recursion

[PST07] updated MM

  • riginal

BW BWT F O(n) tree LS runs S 1/2 copy IT A/B copy KSPP mod2 split KS DC3 BK diffcover KA L/S split MaF deep-shallow KJP fixed Σ Na succinct SS bpr M chains Mo divsufsort MP cache aware NZ O(n log |Σ|) NZC SAIS/SADS N OSACA AN SFE-coding

1999 2000 2003 2004 2005 2006 2007 2009 2011

106 s 50 s 396 s 39 s 129 / 189 s Mo: 57 s 98 s 66 s

Suffix Sorting 256 MiB of Gutenberg Text in RAM on Intel i7 2.67 GHz

slide-12
SLIDE 12

LCP Construction Algorithms

Algorithm Construction Time Space MM 1993 T → SA,LCP O(n log n) 9n KLAAP 2001 T,SA → LCP O(n) 13n KS 2003 T → SA,LCP O(n) O(n) EM M 2004 T,SA → LCP O(n) 9n / 5n PT 2008 T,SA → v-LCP O(nv) 6n+O( n

v +v)

Φ-KMP 2009

T,SA → PLCP O(n log n) 5n + 3

8n

GO 2011 T,SA,BWT,LF → LCP O(n2) 11n F 2011 T → SA,LCP O(n) 9n

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 7/19

slide-13
SLIDE 13

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi Ti−1 TSAi...n

12 b $ 7 b a b a b b $ 1 c a b a b c b a b a b b $ 9 b a b b $ 3 b a b c b a b a b b $ 11 b b $ 6 c b a b a b b $ 8 a b a b b $ 2 a b a b c b a b a b b $ 10 a b b $ 4 a b c b a b a b b $

  • c a b a b c b a b a b b $

5 b c b a b a b b $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 8/19

slide-14
SLIDE 14

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi Ti−1 TSAi...n

12 b $ 7 b a b a b b $ 1 c a b a b c b a b a b b $ 9 b a b b $ 3 b a b c b a b a b b $ 11 b b $ 6 c b a b a b b $ 8 a b a b b $ 2 a b a b c b a b a b b $ 10 a b b $ 4 a b c b a b a b b $

  • c a b a b c b a b a b b $

5 b c b a b a b b $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 8/19

slide-15
SLIDE 15

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi Ti−1 TSAi...n

12 b $ 7 b a b a b b $ 1 c a b a b c b a b a b b $ 9 b a b b $ 3 b a b c b a b a b b $ 11 b b $ 6 c b a b a b b $ 8 a b a b b $ 2 a b a b c b a b a b b $ 10 a b b $ 4 a b c b a b a b b $

  • c a b a b c b a b a b b $

5 b c b a b a b b $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 8/19

slide-16
SLIDE 16

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi Ti−1 TSAi...n

12 b $ 7 b a b a b b $ 1 c a b a b c b a b a b b $ 9 b a b b $ 3 b a b c b a b a b b $ 11 b b $ 6 c b a b a b b $ 8 a b a b b $ 2 a b a b c b a b a b b $ 10 a b b $ 4 a b c b a b a b b $

  • c a b a b c b a b a b b $

5 b c b a b a b b $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 8/19

slide-17
SLIDE 17

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi Ti−1 TSAi...n

12 b $ 7 b a b a b b $ 1 c a b a b c b a b a b b $ 9 b a b b $ 3 b a b c b a b a b b $ 11 b b $ 6 c b a b a b b $ 8 a b a b b $ 2 a b a b c b a b a b b $ 10 a b b $ 4 a b c b a b a b b $

  • c a b a b c b a b a b b $

5 b c b a b a b b $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 8/19

slide-18
SLIDE 18

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi Ti−1 TSAi...n

12 b $ 7 b a b a b b $ 1 c a b a b c b a b a b b $ 9 b a b b $ 3 b a b c b a b a b b $ 11 b b $ 6 c b a b a b b $ 8 a b a b b $ 2 a b a b c b a b a b b $ 10 a b b $ 4 a b c b a b a b b $

  • c a b a b c b a b a b b $

5 b c b a b a b b $

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 8/19

slide-19
SLIDE 19

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi Ti−1 TSAi...n

12 b $ 7 b a b a b b $ 1 c a b a b c b a b a b b $ 9 b a b b $ 3 b a b c b a b a b b $ 11 b b $ 6 c b a b a b b $ 8 a b a b b $ 2 a b a b c b a b a b b $ 10 a b b $ 4 a b c b a b a b b $

  • c a b a b c b a b a b b $

5 b c b a b a b b $

1 2 3 4

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 8/19

slide-20
SLIDE 20

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

SAi Ti−1 TSAi...n

12 b $ 7 b a b a b b $ 1 c a b a b c b a b a b b $ 9 b a b b $ 3 b a b c b a b a b b $ 11 b b $ 6 c b a b a b b $ 8 a b a b b $ 2 a b a b c b a b a b b $ 10 a b b $ 4 a b c b a b a b b $

  • c a b a b c b a b a b b $

5 b c b a b a b b $

b,0 b,1 c,2 b,3 b,4

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 8/19

slide-21
SLIDE 21

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ $ a b c

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-22
SLIDE 22

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S L S L L S L S L L S $ a b c

Ti...n < Ti+1...n Ti...n > Ti+1...n

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-23
SLIDE 23

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S L S S L L S L S L L S $ a b c

Ti...n < Ti+1...n Ti...n > Ti+1...n

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-24
SLIDE 24

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-25
SLIDE 25

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-26
SLIDE 26

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 2 4 1 3

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-27
SLIDE 27

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c c,2 b,4 b,1 b,3 b,0

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-28
SLIDE 28

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c c,2 b,4 b,1 b,3 b,0

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-29
SLIDE 29

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c c,2 b,4 b,1 b,3 b,0 11

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-30
SLIDE 30

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 c,2 b,4 b,1 b,3 b,5

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-31
SLIDE 31

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 c,2 b,4 b,1 b,3 b,5

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-32
SLIDE 32

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5

6

7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 c,2 b,4 b,1 b,3 b,5 6

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-33
SLIDE 33

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7

8

9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 6 c,2 b,4 c,6 b,3 b,5 8

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-34
SLIDE 34

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1

2

3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 6 8 c,2 b,4 c,6

  • ,7

b,5 2

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-35
SLIDE 35

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 6 8 2 c,2

  • ,8

c,6

  • ,7

b,5 10

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-36
SLIDE 36

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 6 8 2 10 c,2

  • ,8

c,6

  • ,7
  • ,9

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-37
SLIDE 37

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4

5

6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 6 8 2 10

  • ,10
  • ,8

c,6

  • ,7
  • ,9

5

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-38
SLIDE 38

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 6 8 2 10 0 5

  • ,10
  • ,8
  • ,11
  • ,7
  • ,9

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-39
SLIDE 39

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3

4

5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA

$ a b c 11 6 8 2 10 0 5

  • ,10
  • ,8
  • ,11
  • ,7
  • ,9

4

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 9/19

slide-40
SLIDE 40

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

SA LCP

$ a b c c,2 b,4 b,1 b,3 b,0

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-41
SLIDE 41

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c c,2 b,4 b,1 b,3 b,0

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-42
SLIDE 42

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c c,2 b,4 b,1 b,3 b,0

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-43
SLIDE 43

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c c,2 b,4 b,1 b,3 b,0 11

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-44
SLIDE 44

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 c,2 b,4 b,1 b,3 b,5 6 ?

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-45
SLIDE 45

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 c,2 b,4 b,1 b,3 b,5 6 ? b$ babab . . . ? = LCP(12, 7) + 1 i j

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-46
SLIDE 46

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 c,2 b,4 b,1 b,3 b,5 6 1 b$ babab . . . ? = LCP(12, 7) + 1 i j

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-47
SLIDE 47

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 6 1 c,2 b,4 c,6 b,3 b,5 8 ? babab . . . babb$

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-48
SLIDE 48

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 6 1 c,2 b,4 c,6 b,3 b,5 8 ? babab . . . babb$

RMQ(i + 1, j) + 1

i j

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-49
SLIDE 49

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 6 1 c,2 b,4 c,6 b,3 b,5 8 3 babab . . . babb$

RMQ(i + 1, j) + 1

i j

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-50
SLIDE 50

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 6 1 8 3 c,2 b,4 c,6

  • ,7

b,5

RMQ(i + 1, j) + 1

2 3

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-51
SLIDE 51

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 6 1 8 3 2 3 c,2

  • ,8

c,6

  • ,7

b,5

RMQ(i + 1, j) + 1

10 1

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-52
SLIDE 52

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 6 1 8 3 2 3 10 1 c,2

  • ,8

c,6

  • ,7
  • ,9

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-53
SLIDE 53

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 6 1 8 3 2 3 10 1

  • ,10
  • ,8

c,6

  • ,7
  • ,9

5 1

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-54
SLIDE 54

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c 11 6 1 8 3 2 3 10 1 0 5 1

  • ,10
  • ,8
  • ,11
  • ,7
  • ,9

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 10/19

slide-55
SLIDE 55

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c c,2 b,4 b,1 b,3 b,0

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 11/19

slide-56
SLIDE 56

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c c,2 b,4 b,1 b,3 b,0

1 3 1 2

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 11/19

slide-57
SLIDE 57

Example T = [

0 1 2 3 4 5 6 7 8 9 10 11 12

cababcbababb$]

1 2 3 4 5 6 7 8 9 10 11 12

c a b a b c b a b a b b $ L S∗ L S∗ S L L S∗ L S∗ L L S∗ $ a b c 12 7 1 9 3

  • 0 4 2 2

SA LCP

$ a b c c,2 b,4 b,1 b,3 b,0

1 3 1 2

k

1 2 3 4

R

1 3 1 2 0

SAR 4 2 0 3

1

ISAR 2 4

1 3 0

LCPR

  • 1

0 0

LCPS∗

  • 0 4 2 2

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 11/19

slide-58
SLIDE 58

eSAIS with LCP Construction

Recursion size at most n

2.

All SA construction steps: EM scanning, sorting, and PQ operations ⇒ amortized sorting complexity. LCP construction involves semi-dynamic RMQs. Two solutions: EM algorithm in sorting complexity for N ≤ M2, or succinct in-memory data structure for practice.

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 12/19

slide-59
SLIDE 59

eSAIS with LCP Construction

1

Find relative order of S∗-suffixes.

1

Split string into S∗-substrings.

2

Sort S∗-substrings and give lexicographic names.

3

Recursively calculate suffix and LCP array of lexicographic names, if not unique.

4

Calculate ranks of S∗-suffixes (red arrows).

5

Expand recursive LCPR to LCPS∗.

2

Induce order of remaining positions using ranks of S∗-suffixes.

1

Induce all L-suffixes from S∗-suffixes.

2

Solve RMQs internally or save to disk and process after SA.

3

Reverse PQ order, induce all S-suffixes from L∗ and solve RMQs (internally or externally) for LCP.

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 13/19

slide-60
SLIDE 60

eSAIS with LCP Construction

1

Find relative order of S∗-suffixes. I/Os

1

Split string into S∗-substrings. O(scan(n))

2

Sort S∗-substrings and give lexicographic names. O(sort(n))

3

Recursively calculate suffix and LCP array of lexicographic names, if not unique.

≤ recurse( n

2)

4

Calculate ranks of S∗-suffixes (red arrows). O(sort(n))

5

Expand recursive LCPR to LCPS∗. O(sort(n))

2

Induce order of remaining positions using ranks of S∗-suffixes.

1

Induce all L-suffixes from S∗-suffixes. O(sort(n))

2

Solve RMQs internally or save to disk and process after SA.

3

Reverse PQ order, induce all S-suffixes from L∗ and solve RMQs (internally or externally) for LCP. O(sort(n))

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 13/19

slide-61
SLIDE 61

Implementation Highlights

Implemented in C++ using STXXL. STXXL [DKS08] provides efficient EM sorting and a priority queue. Enable 40-bit string positions. Further EM issues: handle large

S∗-substrings via splitting.

Source code available under GPL:

http://tbingmann.de/2012/esais

R k k k k

(after [San00])

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 14/19

slide-62
SLIDE 62

Construction SA only: eSAIS vs. DC3

224 225 226 227 228 229 230 231 232 2 3 4 5 6 eSAIS DC3 Input size n [B] Time per input [ s

MiB]

Genome Wikipedia Gutenberg Pi Digits worst-case

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 15/19

slide-63
SLIDE 63

Construction Time: Gutenberg Text

224 226 228 230 232 10 20 30 Input size n [B] Time per input [ s

MiB]

eSAIS DC3 eSAIS-LCPext DC3-LCP eSAIS-LCPint

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 16/19

slide-64
SLIDE 64

Construction Time: Gutenberg Text

224 226 228 230 232 2 4 6 8 10 12 Input size n [B] Time per input [ s

MiB]

eSAIS DC3 eSAIS-LCPext DC3-LCP eSAIS-LCPint

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 17/19

slide-65
SLIDE 65

Construction Time: Wikipedia XML

224 226 228 230 232 234 236 2 3 4 5 Input size n [B] Time per input [ s

MiB]

eSAIS eSAIS-LCPint DC3

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 18/19

slide-66
SLIDE 66

Thank you for your attention! Questions?

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 19/19

slide-67
SLIDE 67

Bibliography I

[AN10] Donald A. Adjeroh and Fei Nan. Suffix-sorting via Shannon-Fano-Elias codes. Algorithms, 3(2):145–167, 2010. [BK03] Stefan Burkhardt and Juha Kärkkäinen. Fast lightweight suffix array construction and checking. In Proc. CPM, volume 2676 of LNCS, pages 55–69. Springer, 2003. [BW94] Michael Burrows and David J. Wheeler. A block-sorting lossless data compression algorithm. Technical Report 124, Digital Equipment Corporation, 1994. [DKS08] Roman Dementiev, Lutz Kettner, and Peter Sanders. STXXL: Standard template library for XXL data sets.

  • Softw. Pract. Exper., 38(6):589–637, 2008.

[Far97] Martin Farach. Optimal suffix tree construction with large alphabets. In Proc. FOCS, pages 137–143, 1997. [Fis11] Johannes Fischer. Inducing the LCP-array. In Proc. WADS, volume 6844 of LNCS, pages 374–385. Springer, 2011.

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 A 1/6

slide-68
SLIDE 68

Bibliography II

[GO11] Simon Gog and Enno Ohlebusch. Fast and lightweight LCP-array construction algorithms. In Proc. ALENEX, pages 25–34. SIAM Press, 2011. [IT99] Hideo Itoh and Hozumi Tanaka. An efficient method for in memory construction of suffix arrays. In Proc. SPIRE/CRIWG, pages 81–88. IEEE Press, 1999. [KA05] Pang Ko and Srinivas Aluru. Space efficient linear time construction of suffix arrays.

  • J. Discrete Algorithms, 3(2–4):143–156, 2005.

[KJP04] Dong Kyue Kim, Junha Jo, and Heejin Park. A fast algorithm for constructing suffix arrays for fixed-size alphabets. In Proc. WEA, volume 3059 of LNCS, pages 301–314. Springer, 2004. [KLA+01] Toru Kasai, Gunho Lee, Hiroki Arimura, Setsuo Arikawa, and Kunsoo Park. Linear-time longest-common-prefix computation in suffix arrays and its applications. In Proc. CPM, volume 2089 of LNCS, pages 181–192. Springer, 2001. [KMP09] Juha Kärkkäinen, Giovanni Manzini, and Simon J. Puglisi. Permuted longest-common-prefix array. In Proc. CPM, volume 5577 of LNCS, pages 181–192. Springer, 2009.

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 A 2/6

slide-69
SLIDE 69

Bibliography III

[KSB06] Juha Kärkkäinen, Peter Sanders, and Stefan Burkhardt. Linear work suffix array construction.

  • J. ACM, 53(6):1–19, 2006.

[KSPP05] Dong Kyue Kim, Jeong Seop Sim, Heejin Park, and Kunsoo Park. Constructing suffix arrays in linear time.

  • J. Discrete Algorithms, 3(2–4):126–142, 2005.

[LS99]

  • N. Jesper Larsson and Kunihiko Sadakane.

Faster suffix sorting. Technical Report LU-CS-TR:99-214, LUNDFD6/(NFCS-3140)/1–20/(1999), Department

  • f Computer Science, Lund University, Lund, Sweden, May 1999.

[Man04] Giovanni Manzini. Two space saving tricks for linear time LCP array computation. In Proc. Scandinavian Workshop on Algorithm Theory (SWAT), volume 3111 of LNCS, pages 372–383. Springer, 2004. [MF04] Giovanni Manzini and Paolo Ferragina. Engineering a lightweight suffix array construction algorithm. Algorithmica, 40(1):33–50, 2004.

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 A 3/6

slide-70
SLIDE 70

Bibliography IV

[MM93] Udi Manber and Eugene W. Myers. Suffix arrays: A new method for on-line string searches. SIAM J. Comput., 22(5):935–948, 1993. [Mor06] Yuta Mori. divsufsort, 2006.

http://code.google.com/p/libdivsufsort/.

[MP06] Michael A. Maniscalco and Simon J. Puglisi. Faster lightweight suffix array construction. In Proc. IWOCA, pages 16–29, 2006. [MP08] Michael A. Maniscalco and Simon J. Puglisi. An efficient, versatile approach to suffix sorting. ACM J. Exp. Algorithmics, 12:Article no. 1.2, 2008. [Na05] Joong Chae Na. Linear-time construction of compressed suffix arrays using O(n log n)-bit working space for large alphabets. In Proc. CPM, volume 3537 of LNCS, pages 57–67. Springer, 2005. [Non11] Ge Nong. An optimal suffix array construction algorithm. Technical report, Department of Computer Science, Sun Yat-sen University, 2011.

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 A 4/6

slide-71
SLIDE 71

Bibliography V

[NZ07] Ge Nong and Sen Zhang. Optimal lightweight construction of suffix arrays for constant alphabets. In Proc. WADS, volume 4619 of LNCS, pages 613–624. Springer, 2007. [NZC11] Ge Nong, Sen Zhang, and Wai Hong Chan. Two efficient algorithms for linear time suffix array construction. IEEE Trans. Computers, 60(10):1471–1484, 2011. [PST07] Simon J. Puglisi, William F. Smyth, and Andrew Turpin. A taxonomy of suffix array construction algorithms. ACM Comput. Surv., 39(2), 2007. [PT08] Simon J. Puglisi and Andrew Turpin. Space-time tradeoffs for longest-common-prefix array computation. In Proc. ISAAC, volume 5369 of LNCS, pages 124–135. Springer, 2008. [San00] Peter Sanders. Fast priority queues for cached memorys. ACM J. Exp. Algorithmics, 5:Article No. 7, 2000. [Sew00] Julian Seward. On the performance of BWT sorting algorithms. In Data Compression Conference, pages 173–182. IEEE Press, 2000.

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 A 5/6

slide-72
SLIDE 72

Bibliography VI

[SS07] Klaus-Bernd Schürmann and Jens Stoye. An incomplex algorithm for fast suffix array construction.

  • Softw. Pract. Exper., 37(3):309–329, 2007.

Timo Bingmann, Johannes Fischer, and Vitaly Osipov – Inducing Suffix and LCP Arrays in External Memory Institute of Theoretical Informatics – Algorithmics January 7th, 2013 A 6/6