burrows wheeler transformation algorithmen...

164
0 Gog: Burrows Wheeler Transformation – Algorithmen II Institut für Theoretische Informatik Algorithmik II Institut für Theoretische Informatik - Algorithmik II Burrows Wheeler Transformation – Algorithmen II Simon Gog – [email protected] http://algo2.iti.kit.edu/AlgorithmenII_WS17.php KIT – Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Upload: others

Post on 19-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

0 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Institut für Theoretische Informatik - Algorithmik II

Burrows Wheeler Transformation –Algorithmen IISimon Gog – [email protected]://algo2.iti.kit.edu/AlgorithmenII_WS17.php

KIT – Universität des Landes Baden-Württemberg undnationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Page 2: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationEinführung

1 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Burrows, Wheeler (1983, 1994)“nur” eine Umordnung des Textes,→ gruppiert Zeichen mit ähnlichem Kontext, reversibel

ursprünglich eingeführt zur Textkompression→ Teilschritt von bzip2

später auch für Textindizierung verwendet→ z.B. Rückwärtssuche, Berechnung des LCP-Array

Page 3: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $1 2 3 4 5 6 7 8 9

T =

Page 4: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $n g $

g n g $n g n g $

a n g n g $l a n g n g $

a l a n g n g $l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

T =

Page 5: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $

n g $

g n g $

n g n g $

a n g n g $

l a n g n g $

a l a n g n g $

l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

T =

Page 6: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $

n g $

g n g $

n g n g $

a n g n g $

l a n g n g $

a l a n g n g $

l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

SAT =

Page 7: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $

n g $

g n g $

n g n g $

a n g n g $

l a n g n g $

a l a n g n g $

l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

SAT =

$

a

langng$ ngng$

g

ng$

$

la

ng

ng$

langng$ngng$

$12 34

56 78

9

Page 8: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $

n g $

g n g $

n g n g $

a n g n g $

l a n g n g $

a l a n g n g $

l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

SAT =

$

a

langng$ ngng$

g

ng$

la

ng

ng$

langng$ngng$

$12 34

56 78

$9

Page 9: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $

n g $

g n g $

n g n g $

a n g n g $

l a n g n g $

a l a n g n g $

l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

SAT =

$

a

langng$ ngng$

g

ng$

$

la

ng

ng$

langng$ngng$

$12 34

56 78

9

Page 10: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $

n g $

g n g $

n g n g $

a n g n g $

l a n g n g $

a l a n g n g $

l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

SAT =

$

a

langng$ ngng$

g

ng$

la

ng

ng$

langng$ngng$

$12 34

56 78

$9

Page 11: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $

n g $

g n g $

n g n g $

a n g n g $

l a n g n g $

a l a n g n g $

l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

SAT =

$

a

langng$ ngng$

g

ng$

la

ng

ng$

langng$ngng$

$12 34

56 78

$9

Page 12: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $

n g $

g n g $

n g n g $

a n g n g $

l a n g n g $

a l a n g n g $

l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

SAT =

$

a

langng$ ngng$

g

ng$

la

ng

ng$

langng$ngng$

$12 34

56 78

$9

Page 13: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWiederholung: Suffix-Arrays (und Suffixbäume)

2 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Textindizierung→ schnelle Suche in Textenkann in O(n) erzeugt werden(DC3-Algorithmus)

DefinitionSA[i ] = Index des i-ten sortierten SuffixSA[i ] = (einer Zeichenkette T )

l a l a n g n g $$

g $

n g $

g n g $

n g n g $

a n g n g $

l a n g n g $

a l a n g n g $

l a l a n g n g $

1 2 3 4 5 6 7 8 9

1

2

3

4

5

6

7

8

9

SAT =

$

a

langng$ ngng$

g

ng$

la

ng

ng$

langng$ngng$

$12 34

56 78

$9

usw.

Page 14: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |

T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $1 2 3 4 5 6 7 8 9

T =

Page 15: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |

T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $a l a n g n g $ l

1 2 3 4 5 6 7 8 9

T =

Page 16: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |

T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $a l a n g n g $ ll a n g n g $ l a

1 2 3 4 5 6 7 8 9

T =

Page 17: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |

T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $a l a n g n g $ ll a n g n g $ l aa n g n g $ l a l

1 2 3 4 5 6 7 8 9

T =

Page 18: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |

T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $a l a n g n g $ ll a n g n g $ l aa n g n g $ l a l

1 2 3 4 5 6 7 8 9

T =

...

Page 19: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |

T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $a l a n g n g $ ll a n g n g $ l aa n g n g $ l a ln g n g $ l a l ag n g $ l a l a nn g $ l a l a n gg $ l a l a n g n$ l a l a n g n g

1 2 3 4 5 6 7 8 9

T =

Page 20: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |

T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $a l a n g n g $ ll a n g n g $ l aa n g n g $ l a ln g n g $ l a l ag n g $ l a l a nn g $ l a l a n gg $ l a l a n g n$ l a l a n g n g

1 2 3 4 5 6 7 8 9

T = T (1)

T (6)

T (n)

Page 21: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |

T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $a l a n g n g $ ll a n g n g $ l aa n g n g $ l a ln g n g $ l a l ag n g $ l a l a nn g $ l a l a n gg $ l a l a n g n$ l a l a n g n g

1 2 3 4 5 6 7 8 9

T = T (1)

T (6)

T (n)

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g

sortiere Zeilen

Page 22: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $a l a n g n g $ ll a n g n g $ l aa n g n g $ l a ln g n g $ l a l ag n g $ l a l a nn g $ l a l a n gg $ l a l a n g n$ l a l a n g n g

1 2 3 4 5 6 7 8 9

T = T (1)

T (6)

T (n)

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g

TBWT

sortiere Zeilen

Page 23: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationTransformation

3 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T (i) = T zyklisch ab Position i , Länge n = |T |T = lalangng$ → T BWT = gllnn$aga O(n2 + n log n)

l a l a n g n g $a l a n g n g $ ll a n g n g $ l aa n g n g $ l a ln g n g $ l a l ag n g $ l a l a nn g $ l a l a n gg $ l a l a n g n$ l a l a n g n g

1 2 3 4 5 6 7 8 9

T = T (1)

T (6)

T (n)

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g

TBWT = LF

T (n)

sortiere Zeilen

Page 24: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationEigenschaften

4 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

BWT in O(n) berechenbar

Zeilen enthalten sortierte SuffixeZeichen in letzer Spalteentspricht Zeichen vor Suffix in T

T BWT [i ] = L[i ] = T [SA[i ]− 1]= T (SA[i ])[n](T BWT [i ] ist das Zeichen vor dem i-ten Suffix in T )

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g 1

2

3

4

5

6

7

8

9

l a l a n g n g $1 2 3 4 5 6 7 8 9

T =

Page 25: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationEigenschaften

4 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

BWT in O(n) berechenbar

Zeilen enthalten sortierte SuffixeZeichen in letzer Spalteentspricht Zeichen vor Suffix in T

T BWT [i ] = L[i ] = T [SA[i ]− 1]= T (SA[i ])[n](T BWT [i ] ist das Zeichen vor dem i-ten Suffix in T )

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g 1

2

3

4

5

6

7

8

9

l a l a n g n g $1 2 3 4 5 6 7 8 9

T =

Page 26: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationEigenschaften

4 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

BWT in O(n) berechenbar

Zeilen enthalten sortierte SuffixeZeichen in letzer Spalteentspricht Zeichen vor Suffix in T

T BWT [i ] = L[i ] = T [SA[i ]− 1]= T (SA[i ])[n](T BWT [i ] ist das Zeichen vor dem i-ten Suffix in T )

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g 1

2

3

4

5

6

7

8

9

l a l a n g n g $1 2 3 4 5 6 7 8 9

T =

Page 27: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationEigenschaften

4 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

BWT in O(n) berechenbar

Zeilen enthalten sortierte SuffixeZeichen in letzer Spalteentspricht Zeichen vor Suffix in T

T BWT [i ] = L[i ] = T [SA[i ]− 1]= T (SA[i ])[n](T BWT [i ] ist das Zeichen vor dem i-ten Suffix in T )

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g 1

2

3

4

5

6

7

8

9

TBWT = L

l a l a n g n g $1 2 3 4 5 6 7 8 9

T =

Page 28: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationEigenschaften

4 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

BWT in O(n) berechenbar

Zeilen enthalten sortierte SuffixeZeichen in letzer Spalteentspricht Zeichen vor Suffix in T

T BWT [i ] = L[i ] = T [SA[i ]− 1]= T (SA[i ])[n](T BWT [i ] ist das Zeichen vor dem i-ten Suffix in T )

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g

TBWT = L

1

2

3

4

5

6

7

8

9

SA

1

2

3

4

5

6

7

8

9

l a l a n g n g $1 2 3 4 5 6 7 8 9

T =

Page 29: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – Vorüberlegungen

5 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

betrachte Matrix aus Transformationerste Zeile enthält Lösung T (n)

T BWT = L gegebenF leicht zu bestimmen (sortiere L)L ist immer Spalte vor F (zyklisch)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g

TBWT = L

Page 30: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – Vorüberlegungen

5 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

betrachte Matrix aus Transformationerste Zeile enthält Lösung T (n)

T BWT = L gegebenF leicht zu bestimmen (sortiere L)L ist immer Spalte vor F (zyklisch)

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g

TBWT = L

T (n)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 31: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – Vorüberlegungen

5 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

betrachte Matrix aus Transformationerste Zeile enthält Lösung T (n)

T BWT = L gegebenF leicht zu bestimmen (sortiere L)L ist immer Spalte vor F (zyklisch)

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g

TBWT = L

T (n)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 32: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – Vorüberlegungen

5 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

betrachte Matrix aus Transformationerste Zeile enthält Lösung T (n)

T BWT = L gegebenF leicht zu bestimmen (sortiere L)L ist immer Spalte vor F (zyklisch)

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g

TBWT = LF

T (n)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 33: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – Vorüberlegungen

5 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

betrachte Matrix aus Transformationerste Zeile enthält Lösung T (n)

T BWT = L gegebenF leicht zu bestimmen (sortiere L)L ist immer Spalte vor F (zyklisch)

l a l a n g n g $

a l a n g n g $ l

l a n g n g $ l a

a n g n g $ l a l

n g n g $ l a l a

g n g $ l a l a n

n g $ l a l a n g

g $ l a l a n g n

$ l a l a n g n g

TBWT = LF

T (n)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 34: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – Vorüberlegungen

5 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

betrachte Matrix aus Transformationerste Zeile enthält Lösung T (n)

T BWT = L gegebenF leicht zu bestimmen (sortiere L)L ist immer Spalte vor F (zyklisch)

la l a n g n g $

al a n g n g $ l

la n g n g $ l a

an g n g $ l a l

ng n g $ l a l a

gn g $ l a l a n

ng $ l a l a n g

g$ l a l a n g n

$l a l a n g n g

L F

T (1)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 35: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – Vorüberlegungen

5 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

betrachte Matrix aus Transformationerste Zeile enthält Lösung T (n)

T BWT = L gegebenF leicht zu bestimmen (sortiere L)L ist immer Spalte vor F (zyklisch)

l a l an g n g $

a l a ng n g $ l

l a n gn g $ l a

a n g ng $ l a l

n g n g$ l a l a

g n g $l a l a n

n g $ la l a n g

g $ l al a n g n

$ l a la n g n g

L F

T (4)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 36: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – Vorüberlegungen

5 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

betrachte Matrix aus Transformationerste Zeile enthält Lösung T (n)

T BWT = L gegebenF leicht zu bestimmen (sortiere L)L ist immer Spalte vor F (zyklisch)

l a l a n g ng $

a l a n g n g$ l

l a n g n g $l a

a n g n g $ la l

n g n g $ l al a

g n g $ l a la n

n g $ l a l an g

g $ l a l a ng n

$ l a l a n gn g

L F

T (7)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 37: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 38: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

$

l

a

l

a

n

g

n

g

TBWT

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =

Page 39: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

$

l

a

l

a

n

g

n

g

sortiert

nach

letzterSpalte

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

F

Page 40: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

TBWT

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

F

Page 41: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

sortiert

nach

vorletzterSpalte

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

F

Page 42: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

TBWT

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

F

Page 43: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

$

l

a

l

a

n

g

n

g$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

sortiert

nach

drittletzter

Spalte

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

F

Page 44: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

$

l

a

l

a

n

g

n

g$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

TBWT

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

F

Page 45: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

1 2 3 4 5 6 7 8 9

TBWT =

. . .

l al an gng $

$

l

a

l

a

n

g

n

g$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

TBWTF

Page 46: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

$

l

a

l

a

n

g

n

g$

l

a

l

a

n

g

n

g$

l

a

l

a

n

g

n

g$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g$

l

a

l

a

n

g

n

g$

l

a

l

a

n

g

n

g

$

l

a

l

a

n

g

n

g

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 47: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation

6 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

schreibe T BWT in Spaltenformsortiere zeilenweiseschreibe T BWT in Spaltenform davorwiederhole bis |T BWT | mal sortiert

T BWT = gllnn$aga → T = lalangng$ O(n2 log n)

$

l

a

l

a

n

g

n

$

l

a

l

a

n

g

g$

l

a

l

a

n

n

g$

l

a

l

a

g

n

g

$

l

a

l

n

g

n

g

$

l

a

a

n

g

n

g$

l

l

a

n

g

n

g$

a

l

a

n

g

n

g

l

a

l

a

n

g

n

g

gngnalal$ T (n)

1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

Page 48: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

7 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Wie lautet das Vorgängerzeichen?→ last-to-front mapping LF [·]→ (Position in L[·] an der Vorgänger steht)

LF [6] = ?

$

l

a

l

a

n

g

n

g

TBWT

1 2 3 4 5 6 7 8 9

TBWT =

T = ?l al an gng $

Page 49: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

7 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Wie lautet das Vorgängerzeichen?→ last-to-front mapping LF [·]→ (Position in L[·] an der Vorgänger steht)

LF [6] = ?

$

l

a

l

a

n

g

n

g

TBWT

1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

Page 50: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

7 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Wie lautet das Vorgängerzeichen?→ last-to-front mapping LF [·]→ (Position in L[·] an der Vorgänger steht)

LF [6] = ?

$

l

a

l

a

n

g

n

g

TBWT

1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

?

?

Page 51: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

7 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Wie lautet das Vorgängerzeichen?→ last-to-front mapping LF [·]→ (Position in L[·] an der Vorgänger steht)

LF [6] = ?

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

?

?

$

l

a

l

a

n

g

n

g

F TBWT = L

. . .

1

2

3

4

5

6

7

8

9

. . .

. . .

Page 52: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

7 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Wie lautet das Vorgängerzeichen?→ last-to-front mapping LF [·]→ (Position in L[·] an der Vorgänger steht)

LF [6] = 1(LF [6] ist die Position in F [·] an der L[6] steht)

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

?$

l

a

l

a

n

g

n

g

F TBWT = L

. . .

1

2

3

4

5

6

7

8

9

. . .

. . .

g

Page 53: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

7 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Wie lautet das Vorgängerzeichen?→ last-to-front mapping LF [·]→ (Position in L[·] an der Vorgänger steht)

LF [i ] = j ⇔ T (SA[j ]) = (T (SA[i ]))(n) ⇔ SA[i ] = SA[j ]− 1 (mod n)(LF [i ] ist die Position in F [·] an der L[i ] steht)

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

?$

l

a

l

a

n

g

n

g

F TBWT = L

. . .

1

2

3

4

5

6

7

8

9

. . .

. . .

g

Page 54: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

8 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T BWT hat Struktur, so dass gilt

→ gleiche Zeichen besitzengleiche Reihenfolge in F [·] und L[·]

→ falls L[i ] = L[j ] mit i < j ,dann LF [i ] < LF [j ]

Grund: α < β lexikographisch (nach Konstruktion)

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $ $

l

a

l

a

n

g

n

g

F TBWT = L

. . .

1

2

3

4

5

6

7

8

9

. . .

. . .

Page 55: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

8 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T BWT hat Struktur, so dass gilt

→ gleiche Zeichen besitzengleiche Reihenfolge in F [·] und L[·]

→ falls L[i ] = L[j ] mit i < j ,dann LF [i ] < LF [j ]

Grund: α < β lexikographisch (nach Konstruktion)

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $ $

l

a

l

a

n

g

n

g

F TBWT = L

. . .

1

2

3

4

5

6

7

8

9

. . .

. . .

Page 56: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

8 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T BWT hat Struktur, so dass gilt

→ gleiche Zeichen besitzengleiche Reihenfolge in F [·] und L[·]

→ falls L[i ] = L[j ] mit i < j ,dann LF [i ] < LF [j ]

Grund: α < β lexikographisch (nach Konstruktion)

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $ $

l

a

l

a

n

g

n

g

F TBWT = L

. . .

1

2

3

4

5

6

7

8

9

. . .

. . .

LF [1]

LF [8]

<

Page 57: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation – weitere Überlegungen

8 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

T BWT hat Struktur, so dass gilt

→ gleiche Zeichen besitzengleiche Reihenfolge in F [·] und L[·]

→ falls L[i ] = L[j ] mit i < j ,dann LF [i ] < LF [j ]

Grund: α < β lexikographisch (nach Konstruktion)

g

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

gg

F TBWT = L

i

j

α

β

α

β

LF [i]

LF [j]

Page 58: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationBerechnung von LF [·]

9 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

LF [·] nur aus T BWT [·] berechenbar

LF [i ] = C(L[i ]) + occ[i ]C(a) = #Zeichen kleiner als aocc[i ] = #Zeichen gleich L[i ] in L[1..i ]

(LF [i ] ist Position in F [·], an der L[i ] steht)

C(·), occ[·] in O(n) berechenbar→ LF [·] auch in O(n) berechenbar

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

LF

Page 59: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationBerechnung von LF [·]

9 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

LF [·] nur aus T BWT [·] berechenbar

LF [i ] = C(L[i ]) + occ[i ]C(a) = #Zeichen kleiner als aocc[i ] = #Zeichen gleich L[i ] in L[1..i ]

(LF [i ] ist Position in F [·], an der L[i ] steht)

C(·), occ[·] in O(n) berechenbar→ LF [·] auch in O(n) berechenbar

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

LF

Page 60: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationBerechnung von LF [·]

9 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

LF [·] nur aus T BWT [·] berechenbar

LF [i ] = C(L[i ]) + occ[i ]C(a) = #Zeichen kleiner als aocc[i ] = #Zeichen gleich L[i ] in L[1..i ]

(LF [i ] ist Position in F [·], an der L[i ] steht)

C(·), occ[·] in O(n) berechenbar→ LF [·] auch in O(n) berechenbar

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

LF

$

l

a

l

a

n

g

n

g

F

. . .

. . .

. . .

Page 61: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationBerechnung von LF [·]

9 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

LF [·] nur aus T BWT [·] berechenbar

LF [i ] = C(L[i ]) + occ[i ]C(a) = #Zeichen kleiner als aocc[i ] = #Zeichen gleich L[i ] in L[1..i ]

(LF [i ] ist Position in F [·], an der L[i ] steht)

C(·), occ[·] in O(n) berechenbar→ LF [·] auch in O(n) berechenbar

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

LF

$

l

a

l

a

n

g

n

g

F

. . .

. . .

. . .5

Page 62: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationBerechnung von LF [·]

9 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

LF [·] nur aus T BWT [·] berechenbar

LF [i ] = C(L[i ]) + occ[i ]C(a) = #Zeichen kleiner als aocc[i ] = #Zeichen gleich L[i ] in L[1..i ]

(LF [i ] ist Position in F [·], an der L[i ] steht)

C(·), occ[·] in O(n) berechenbar→ LF [·] auch in O(n) berechenbar

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

LF

$

l

a

l

a

n

g

n

g

F

. . .

. . .

. . .5

Page 63: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ng000 0 0h =occ =

LF

(zahlt Zeichen)

Page 64: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ng000 0 0occ = h =

LF

(zahlt Zeichen)

Page 65: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ng100 0 0occ = h =

LF

(zahlt Zeichen)

Page 66: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ng100 0 0occ = 1 h =

LF

(zahlt Zeichen)

Page 67: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ng100 1 0occ = 1 h =

LF

(zahlt Zeichen)1

Page 68: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ng100 2 0occ = 1 h =

LF

(zahlt Zeichen)1 2

Page 69: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ng100 2 0occ = 1 h =

LF

(zahlt Zeichen)1 2 . . .

Page 70: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ng221 2 2occ = 1 1 2 1 2 1 1 2 2 h =

LF

(zahlt Zeichen)

Page 71: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ng221 2 2occ = 1 1 2 1 2 1 1 2 2 h =

310 5 7C =

LF

(Prafixsumme von h)

Page 72: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationAblauf der Berechnung von LF [·]

10 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

initialisiere occ und hlaufe durch T BWT = L (i = 1..n)

h( L[i ] ) = h( L[i ] ) + 1occ( L[i ] ) = h( L[i ] )

bilde exkl. Präfixsumme von h→ CLF [i ] = C(L[i ]) + occ[i ]

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

$ la ngocc = 1 1 2 1 2 1 1 2 2

1

6

2

7

3

9

5

8

4

LF

221 2 2h =

310 5 7C =

Page 73: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation mit LF [·]

11 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Berechnung von T von rechts nach linksInitialisierung: T [n] = $ ⇒ LF (?) = 1 (immer!)L[1] = g ⇒ T [n− 1] = g ⇒ LF (1) = 4L[4] = n ⇒ T [n− 2] = n ⇒ LF (4) = 8. . .

Allgemein: T [n− i ] = L[LF (LF (. . . (LF (1)) . . .))] (i − 1) LF Anwendungen

Rücktransformation in O(n) (ohne Zusatzinformationen)

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT = l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

1

6

2

7

3

9

5

8

4

LF

T =

Page 74: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation mit LF [·]

11 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Berechnung von T von rechts nach linksInitialisierung: T [n] = $ ⇒ LF (?) = 1 (immer!)L[1] = g ⇒ T [n− 1] = g ⇒ LF (1) = 4L[4] = n ⇒ T [n− 2] = n ⇒ LF (4) = 8. . .

Allgemein: T [n− i ] = L[LF (LF (. . . (LF (1)) . . .))] (i − 1) LF Anwendungen

Rücktransformation in O(n) (ohne Zusatzinformationen)

1

6

2

7

3

9

5

8

4

LF

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

Page 75: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation mit LF [·]

11 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Berechnung von T von rechts nach linksInitialisierung: T [n] = $ ⇒ LF (?) = 1 (immer!)L[1] = g ⇒ T [n− 1] = g ⇒ LF (1) = 4L[4] = n ⇒ T [n− 2] = n ⇒ LF (4) = 8. . .

Allgemein: T [n− i ] = L[LF (LF (. . . (LF (1)) . . .))] (i − 1) LF Anwendungen

Rücktransformation in O(n) (ohne Zusatzinformationen)

1

6

2

7

3

9

5

8

4

LF

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

?

?

Page 76: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation mit LF [·]

11 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Berechnung von T von rechts nach linksInitialisierung: T [n] = $ ⇒ LF (?) = 1 (immer!)L[1] = g ⇒ T [n− 1] = g ⇒ LF (1) = 4L[4] = n ⇒ T [n− 2] = n ⇒ LF (4) = 8. . .

Allgemein: T [n− i ] = L[LF (LF (. . . (LF (1)) . . .))] (i − 1) LF Anwendungen

Rücktransformation in O(n) (ohne Zusatzinformationen)

1

6

2

7

3

9

5

8

4

LF

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

?

?

Page 77: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation mit LF [·]

11 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Berechnung von T von rechts nach linksInitialisierung: T [n] = $ ⇒ LF (?) = 1 (immer!)L[1] = g ⇒ T [n− 1] = g ⇒ LF (1) = 4L[4] = n ⇒ T [n− 2] = n ⇒ LF (4) = 8. . .

Allgemein: T [n− i ] = L[LF (LF (. . . (LF (1)) . . .))] (i − 1) LF Anwendungen

Rücktransformation in O(n) (ohne Zusatzinformationen)

1

6

2

7

3

9

5

8

4

LF

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

g

Page 78: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation mit LF [·]

11 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Berechnung von T von rechts nach linksInitialisierung: T [n] = $ ⇒ LF (?) = 1 (immer!)L[1] = g ⇒ T [n− 1] = g ⇒ LF (1) = 4L[4] = n ⇒ T [n− 2] = n ⇒ LF (4) = 8. . .

Allgemein: T [n− i ] = L[LF (LF (. . . (LF (1)) . . .))] (i − 1) LF Anwendungen

Rücktransformation in O(n) (ohne Zusatzinformationen)

1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

gn

1

6

2

7

3

9

5

8

4

LF

$

l

a

l

a

n

g

n

g

TBWT = L

1

2

3

4

5

6

7

8

9

Page 79: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation mit LF [·]

11 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Berechnung von T von rechts nach linksInitialisierung: T [n] = $ ⇒ LF (?) = 1 (immer!)L[1] = g ⇒ T [n− 1] = g ⇒ LF (1) = 4L[4] = n ⇒ T [n− 2] = n ⇒ LF (4) = 8. . .

Allgemein: T [n− i ] = L[LF (LF (. . . (LF (1)) . . .))] (i − 1) LF Anwendungen

Rücktransformation in O(n) (ohne Zusatzinformationen)

1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

gng

1

6

2

7

3

9

5

8

4

LF

$

l

a

l

a

n

g

n

g

TBWT = L

1

2

3

4

5

6

7

8

9

. . .

Page 80: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation mit LF [·]

11 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Berechnung von T von rechts nach linksInitialisierung: T [n] = $ ⇒ LF (?) = 1 (immer!)L[1] = g ⇒ T [n− 1] = g ⇒ LF (1) = 4L[4] = n ⇒ T [n− 2] = n ⇒ LF (4) = 8. . .

Allgemein: T [n− i ] = L[LF (LF (. . . (LF (1)) . . .))] (i − 1) LF Anwendungen

Rücktransformation in O(n) (ohne Zusatzinformationen)

1

6

2

7

3

9

5

8

4

LF

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

gnl la a gn

Page 81: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationRücktransformation mit LF [·]

11 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Berechnung von T von rechts nach linksInitialisierung: T [n] = $ ⇒ LF (?) = 1 (immer!)L[1] = g ⇒ T [n− 1] = g ⇒ LF (1) = 4L[4] = n ⇒ T [n− 2] = n ⇒ LF (4) = 8. . .

Allgemein: T [n− i ] = L[LF (LF (. . . (LF (1)) . . .))] (i − 1) LF Anwendungen

Rücktransformation in O(n) (ohne Zusatzinformationen)

1

6

2

7

3

9

5

8

4

LF

$

l

a

l

a

n

g

n

g1 2 3 4 5 6 7 8 9

TBWT =

T = $l al an gng $

TBWT = L

1

2

3

4

5

6

7

8

9

gnl la a gn

Page 82: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWas bringt die BWT?

12 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

benötigt gleichen Platz, verwendet gleiche Zeichen wie T→ scheinbar keine Vorteile ?!?

Permutation einfach umkehrbar(benötigt keine Zusatzinformationen, O(n))Zeichen mit ähnlichem Kontext gruppiert→ vereinfacht Komprimierung

besonders gut auf Texten mitvielen gleichen Substrings→ Beispiel: englischer Text

(u.a. viele “the”, . . . )

(Außerdem: Vorgänger von Suffixen einfach bestimmbar→ Indizierung / Suche)

Page 83: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWas bringt die BWT?

12 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

benötigt gleichen Platz, verwendet gleiche Zeichen wie T→ scheinbar keine Vorteile ?!?

Permutation einfach umkehrbar(benötigt keine Zusatzinformationen, O(n))Zeichen mit ähnlichem Kontext gruppiert→ vereinfacht Komprimierung

besonders gut auf Texten mitvielen gleichen Substrings→ Beispiel: englischer Text

(u.a. viele “the”, . . . )

(Außerdem: Vorgänger von Suffixen einfach bestimmbar→ Indizierung / Suche)

Page 84: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWas bringt die BWT?

12 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

benötigt gleichen Platz, verwendet gleiche Zeichen wie T→ scheinbar keine Vorteile ?!?

Permutation einfach umkehrbar(benötigt keine Zusatzinformationen, O(n))Zeichen mit ähnlichem Kontext gruppiert→ vereinfacht Komprimierung

besonders gut auf Texten mitvielen gleichen Substrings→ Beispiel: englischer Text

(u.a. viele “the”, . . . )

(Außerdem: Vorgänger von Suffixen einfach bestimmbar→ Indizierung / Suche)

Page 85: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWas bringt die BWT?

12 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

benötigt gleichen Platz, verwendet gleiche Zeichen wie T→ scheinbar keine Vorteile ?!?

Permutation einfach umkehrbar(benötigt keine Zusatzinformationen, O(n))Zeichen mit ähnlichem Kontext gruppiert→ vereinfacht Komprimierung

besonders gut auf Texten mitvielen gleichen Substrings→ Beispiel: englischer Text

(u.a. viele “the”, . . . )

(Außerdem: Vorgänger von Suffixen einfach bestimmbar→ Indizierung / Suche)

t h e . . .t h e . . .t h e . . .

...

...

. . .

. . .

. . . ...

...

...

...

Page 86: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWas bringt die BWT?

12 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

benötigt gleichen Platz, verwendet gleiche Zeichen wie T→ scheinbar keine Vorteile ?!?

Permutation einfach umkehrbar(benötigt keine Zusatzinformationen, O(n))Zeichen mit ähnlichem Kontext gruppiert→ vereinfacht Komprimierung

besonders gut auf Texten mitvielen gleichen Substrings→ Beispiel: englischer Text

(u.a. viele “the”, . . . )

(Außerdem: Vorgänger von Suffixen einfach bestimmbar→ Indizierung / Suche)

t h e . . .t h e . . .t h e . . ....

. . .

. . .

. . .

th e . . .th e . . .th e . . .

.... . .. . .. . .

...

...

...

...

Page 87: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWas bringt die BWT?

12 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

benötigt gleichen Platz, verwendet gleiche Zeichen wie T→ scheinbar keine Vorteile ?!?

Permutation einfach umkehrbar(benötigt keine Zusatzinformationen, O(n))Zeichen mit ähnlichem Kontext gruppiert→ vereinfacht Komprimierung

besonders gut auf Texten mitvielen gleichen Substrings→ Beispiel: englischer Text

(u.a. viele “the”, . . . )

(Außerdem: Vorgänger von Suffixen einfach bestimmbar→ Indizierung / Suche)

TBWT

t h e . . .t h e . . .t h e . . ....

. . .

. . .

. . . ...

th e . . .th e . . .th e . . .

.... . .. . .. . .

... ...

...

Page 88: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationWas bringt die BWT?

12 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

benötigt gleichen Platz, verwendet gleiche Zeichen wie T→ scheinbar keine Vorteile ?!?

Permutation einfach umkehrbar(benötigt keine Zusatzinformationen, O(n))Zeichen mit ähnlichem Kontext gruppiert→ vereinfacht Komprimierung

besonders gut auf Texten mitvielen gleichen Substrings→ Beispiel: englischer Text

(u.a. viele “the”, . . . )

(Außerdem: Vorgänger von Suffixen einfach bestimmbar→ Indizierung / Suche)

TBWT

t h e . . .t h e . . .t h e . . ....

. . .

. . .

. . . ...

th e . . .th e . . .th e . . .

.... . .. . .. . .

... ...

...

Page 89: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression

13 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

gegeben: Text Tgesucht : komprimierter Text C

bzip2 (1996)(Huffmann Kodierung)erzeuge Burrows-Wheeler-TransformationMove-To-Front (MTF) KodierungHuffmann Kodierung(eigentliche Kompression)

Page 90: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

Page 91: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =

l ng$Y = a1 2 3 4 5

R =

Page 92: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =

l ng$Y = a1 2 3 4 5

R = 3

Page 93: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =l ng$

Y =

a1 2 3 4 5

3R = l ng $ a

Page 94: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =l ng$

Y =

a1 2 3 4 5

3R = l ng $ a4

Page 95: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =

l ng $Y = a43R =

l ng$ a1 2 3 4 5

l ng $ a

Page 96: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =

l ng $Y = a43R =

l ng$ a1 2 3 4 5

l ng $ a1

Page 97: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =

Y =143R =

l ng $ a

l ng$ a1 2 3 4 5

l ng $ a

l ng $ a

Page 98: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =

Y =143R =

l ng $ a

l ng$ a1 2 3 4 5

l ng $ a

l ng $ a. . .

...

Page 99: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

l al an gng $1 2 3 4 5 6 7 8 9

TBWT =

Y =1 54 25 413 5R =

n

l ng $ a

l ng$ a1 2 3 4 5

l ng $ a

l ng $ a

nl g $ al g $ an l g $an lg $an lg $an lg$ a

Page 100: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

1 2 3 4 5 6 7 8 9

TBWT =

Y =R =

1 2 3

ca b

a b ca b ca b c10 11 12

a b c d13

4

d

Page 101: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Move-To-Front (MTF) Kodierung

14 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

nutzt lokale Redundanzerzeugt kleine Zahlen für gleiche Zeichen, die nahe beieinander sind

Ablaufinitialisiere Y mit Alphabet von T BWT

durchlaufe T BWT (i = 1..n), generiere R[1..n]R[i ] = Position von T BWT [i ] in YSchiebe T BWT [i ] an den Anfang von Y

1 2 3 4 5 6 7 8 9

TBWT =

Y =1 121 3R =

1 2 3

ca b

a b ca b ca b c10 11 12

a b c

1 1 1 1 11 1

cab

c ab

d13

4

4

d

d

d

c ab d

...

...

...

Page 102: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

15 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

präfixfreie Codes variabler Längekönnen greedy konstruiert werden

Ablauferzeuge binären Baum bottom-up

nimm seltenste 2 Zeichen(-gruppen)erzeuge neuen Knoten, der beide Zeichen(-gruppen) repräsentiert,neue Häufigkeit = Summe beider Häufigkeiten

Beschriftungen der Baumkanten (links:0, rechts:1)ergeben Zeichenkodierungen

Page 103: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

15 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

präfixfreie Codes variabler Längekönnen greedy konstruiert werden

Ablauferzeuge binären Baum bottom-up

nimm seltenste 2 Zeichen(-gruppen)erzeuge neuen Knoten, der beide Zeichen(-gruppen) repräsentiert,neue Häufigkeit = Summe beider Häufigkeiten

Beschriftungen der Baumkanten (links:0, rechts:1)ergeben Zeichenkodierungen

B CD A D

(2)

(3)(1) (1)(2) (2)

(9)

1

1

0

0

0 10 1

(4)

(5)

Page 104: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

1 54 25 413 5R =

a l a n g n g $T = l

Page 105: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

1 54 25 413 5R =

234

1

5

112

2

3

Symbol Haufigkeit

a l a n g n g $T = l

Page 106: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

1 54 25 413 5R =

2 34 1 5

234

1

5

112

2

3

Symbol

(3)(1) (1)(2) (2)

a l a n g n g $T = l

Haufigkeit

Page 107: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

1 54 25 413 5R =

2 34 1 5

(2)

(3)(2) (2)

0 1

234

1

5

112

2

3

Symbol

a l a n g n g $T = l

(1) (1)

Haufigkeit

Page 108: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

1 54 25 413 5R =

2 34 1 5

(4) (2)

(3)(1) (1)

0 10 1

234

1

5

112

2

3

Symbol

a l a n g n g $T = l

(2) (2)

Haufigkeit

Page 109: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

1 54 25 413 5R =

2 34 1

(4)

(1) (1)(2) (2)

(5)

1

0

0 10 1

234

1

5

112

2

3

Symbol

a l a n g n g $T = l

5

(2)

(3)

Haufigkeit

Page 110: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

1 54 25 413 5R =

2 34 1 5

(2)

(3)(1) (1)(2) (2)

(9)

1

1

0

0

0 10 1

234

1

5

112

2

3

Symbol

a l a n g n g $T = l

(4)

(5)Haufigkeit

Page 111: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

1 54 25 413 5R =

2 34 1 5

234

1

5

112

2

3

Symbol

(4) (2)

(3)(1) (1)(2) (2)

(5)

(9)

1

1

0

0

0 10 1

Code

011001010011

a l a n g n g $T = l

Haufigkeit

Page 112: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

1 54 25 413 5R =

2 34 1 5

234

1

5

112

2

3

Symbol

(4) (2)

(3)(1) (1)(2) (2)

(5)

(9)

1

1

0

0

0 10 1

Code

011001010011

101 00 0011 11 110101 100 20 Bits

a l a n g n g $T = l

Haufigkeit

Page 113: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationKompression: Huffmann Kodierung

16 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

l $a g n

agl

$

n

222

1

2

Symbol

(4) (3)

(2)(2) (1)(2) (2)

(5)

(8)

1

1

0

0

0 10 1

Code

101000110011

100 00 1101 0111 101 21 Bitsa l a n g n g $T = l

100 00

Haufigkeit

Page 114: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Burrows-Wheeler-TransformationZusammenfassung

17 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

erzeugt (sinnvolle) Permutation der Eingabe(gruppiert Zeichen mit ähnlichem Kontext nahe beieinander)

keine Zusatzinformation für Rücktransformation nötig(alle Informationen in Struktur der Permutation)

Hin- und Rücktransformation in O(n)(einfache Papier-und-Bleistift-Methode existiert auch)

Vorverarbeitung (statischer) Texte(Komprimierung, Indizierung, Suche)

Page 115: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Suche in derBurrwos-Wheeler-Transformation

18 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Index basierend auf der Burrows-Wheeler-Transformation (BWT)Vergleich des Musters von rechts nach linksZeitkomplexität: O(m log σ)

Ferragina &Manzini (2000)

BWT [i ] = T [SA[i ]− 1 mod n]Unkomprimierte Größe: n log σ BitsKomprimierte Größe: nHk (T ) Bits (+Kontextinformation)

BWT

Page 116: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

19 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i SA[i ] BWT T [SA[i ]..n− 1]0 18 a $1 17 r a$2 10 r abarbara$3 7 d abrabarbara$4 0 $ abracadabrabarbara$5 3 r acadabrabarbara$6 5 c adabrabarbara$7 15 b ara$8 12 b arbara$9 14 r bara$

10 11 a barbara$11 8 a brabarbara$12 1 a bracadabrabarbara$13 4 a cadabrabarbara$14 6 a dabrabarbara$15 16 a ra$16 9 b rabarbara$17 2 b racadabrabarbara$18 13 a rbara$

BWT [i ] = T [SA[i ]− 1], forSA[i ] > 0BWT [i ] = T [n− 1], forSA[i ] = 0I.e. BWT [i ] is the characterpreceding suffix SA[i ]

Page 117: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

20 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

Array C contains for each c ∈ Σthe position of the first suffix inSA which starts with c:

$ a b c d r r+10 1 9 13 14 15 19

Operation rank(i ,X ,BWT )returns how often characterX ∈ Σ occurs in the prefixBWT [0..i − 1].Example: search for P = bar .

Page 118: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

21 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Initial interval: [sp0,ep0] = [0..n− 1]Determine interval for r :sp1 = C[r ]+rank(sp0, r ,BWT )ep1 = C[r ]+rank(ep0+1, r ,BWT )−1

Page 119: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

21 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Initial interval: [sp0,ep0] = [0..n− 1]Determine interval for r :sp1 = 15+rank(0, r ,BWT )ep1 = 15+rank(19, r ,BWT )

Page 120: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

21 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Initial interval: [sp0,ep0] = [0..n− 1]Determine interval for r :sp1 = 15+0ep1 = 15+rank(19, r ,BWT )− 1

Page 121: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

21 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Initial interval: [sp0,ep0] = [0..n− 1]Determine interval for r :sp1 = 15+0 = 15ep1 = 15+4− 1 = 18

Page 122: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

22 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp1,ep1] = [15..18]Determine interval for ar :sp2 = C[a]+rank(sp1,a,BWT )ep2 = C[a]+rank(ep1+1,a,BWT )−1

Page 123: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

22 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp1,ep1] = [15..18]Determine interval for ar :sp2 = 1+rank(15,a,BWT )ep2 = 1+rank(ep1,a,BWT )

Page 124: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

22 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp1,ep1] = [15..18]Determine interval for ar :sp2 = 1+rank(15,a,BWT )ep2 = 1+rank(ep1,a,BWT )

Page 125: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

22 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp1,ep1] = [15..18]Determine interval for ar :sp2 = 1+6ep2 = 1+rank(19,a,BWT )− 1

Page 126: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

22 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp1,ep1] = [15..18]Determine interval for ar :sp2 = 1+6 = 7ep2 = 1+8− 1 = 8

Page 127: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

23 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp2,ep2] = [7..8]Determine interval for bar :sp3 = C[b]+rank(sp2,b,BWT )ep3 = C[b]+rank(ep2+1,b,BWT )−1

Page 128: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

23 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp2,ep2] = [7..8]Determine interval for bar :sp3 = 9+rank(7,b,BWT )ep3 = 9+rank(ep1,b,BWT )

Page 129: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

23 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp2,ep2] = [7..8]Determine interval for bar :sp3 = 9+rank(7,b,BWT )ep3 = 9+rank(ep1,b,BWT )

Page 130: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

23 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp2,ep2] = [7..8]Determine interval for bar :sp3 = 9+0ep3 = 9+rank(9,b,BWT )−1

Page 131: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward Search

23 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

i BWT T [SA[i ]..n− 1]0 a $1 r a$2 r abarbara$3 d abrabarbara$4 $ abracadabrabarbara$5 r acadabrabarbara$6 c adabrabarbara$7 b ara$8 b arbara$9 r bara$

10 a barbara$11 a brabarbara$12 a bracadabrabarbara$13 a cadabrabarbara$14 a dabrabarbara$15 a ra$16 b rabarbara$17 b racadabrabarbara$18 a rbara$

C$ a b c d r0 1 9 13 14 15

Search backwards for bar .Interval: [sp2,ep2] = [7..8]Determine interval for bar :sp3 = 9+0 = 9ep3 = 9+2− 1 = 10

Page 132: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward SearchSummary

24 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Only C and a data structure R supporting the rank operation on BWTare required for existence and count queries.Space: σ log n bits for C + space for RTime: O(m · trank ), where trank is time for one rank operation.Independent from n?Next: How to implement rank?

Constant time and o(n) extra space solution on bitvectors(Jacobson 1989)Solution on general sequences: Wavelet Tree(Grossi & Vitter 2003)

Rank operation

Page 133: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Backward SearchSummary

24 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Only C and a data structure R supporting the rank operation on BWTare required for existence and count queries.Space: σ log n bits for C + space for RTime: O(m · trank ), where trank is time for one rank operation.Independent from n? If trank is independent from nNext: How to implement rank?

Constant time and o(n) extra space solution on bitvectors(Jacobson 1989)Solution on general sequences: Wavelet Tree(Grossi & Vitter 2003)

Rank operation

Page 134: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Wavelet Tree Example: Calculate Rank

25 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

arrd$rcbbraaaaaabba0111011001000000000

a$bbaaaaaabba0011000000110

a$aaaaaaa101111111

$

0

aaaaaaaa

10

bbbb

1

0

rrdrcr110101

dc10

c

0

d

10

rrrr

1

1

a = 001

rank(11,a,WT ) = rank(rank(rank(11,0,bε) = 5,0,b0) = 3,1,b00) = 2

Page 135: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Wavelet Tree Example: Calculate Rank

25 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

arrd$rcbbraaaaaabba0111011001000000000

a$bbaaaaaabba0011000000110

a$aaaaaaa101111111

$

0

aaaaaaaa

10

bbbb

1

0

rrdrcr110101

dc10

c

0

d

10

rrrr

1

1

a = 001

rank(11,a,WT ) = rank(rank(rank(11,0,bε) = 5,0,b0) = 3,1,b00) = 2

Page 136: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Wavelet Tree Example: Calculate Rank

25 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

arrd$rcbbraaaaaabba0111011001000000000

a$bbaaaaaabba0011000000110

a$aaaaaaa101111111

$

0

aaaaaaaa

10

bbbb

1

0

rrdrcr110101

dc10

c

0

d

10

rrrr

1

1

a = 001

rank(11,a,WT ) = rank(rank(rank(11,0,bε) = 5,0,b0) = 3,1,b00) = 2

Page 137: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Wavelet Tree Example: Calculate Rank

25 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

arrd$rcbbraaaaaabba0111011001000000000

a$bbaaaaaabba0011000000110

a$aaaaaaa101111111

$

0

aaaaaaaa

10

bbbb

1

0

rrdrcr110101

dc10

c

0

d

10

rrrr

1

1

a = 001

rank(11,a,WT ) = rank(rank(rank(11,0,bε) = 5,0,b0) = 3,1,b00) = 2

Page 138: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

o(n) space / constant query time

26 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Given bitvector B of length n bitsDivide B into superblocks of size L

For each superblock SBj store Σ(j−1)L−1i=0 B[i ] in log n bits

Divide each superblock into blocks of size S

For each block Bk of superblock j store Σ(j−1)L+kS−1i=(j−1)L B[i ] in log L bits

If blocks are small enough, we can pre-compute a table which stores allanswers for every block and position (four Russian-Tick).

Solution

L = log2 nS = 1

2 log n

Final space: O( nlog n + n log log n

log n +√

n log n log log n) bits

Page 139: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Huffman-shaped Wavelet Tree

27 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

arrd$rcbbraaaaaabba1000000000111111001

rrd$rcbbrbb11001000100

d$cbbbb0001111

d$c100

$c01

$

0

c

10

d

10

bbbb

10

rrrr

10

aaaaaaaa

1

Char c codeword(c)$ 00000a 1b 001c 00001d 0001r 01

Avg. depth: H0(BWT ). Total space: ≈ nH0 + 2σ log n bits

Page 140: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Practical Performance of FM-Index

28 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Page 141: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct Data Structures

29 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

DefinitionA succinct data structure uses space „close” to the information-theoreticallower bound, but still supports operations time-efficiently.Let L be the information-theoretical lower bound to represent a class ofobjects. Then a data structure which still supports time-efficientoperations is called

implicit, if it takes L + O(1) bits of spacesuccinct, if it takes L + o(L) bits of spacecompact, if it takes O(L) bits of space

Page 142: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

30 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

First consider binary treesNumber of n-node binary trees: Cn = 1

n+1 (2nn )

We need log Cn = 2n + o(n) bits (using Sterling’s Approximation)Operations: parent(v), leftchild(v), rightchild(v)

Page 143: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

30 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

First consider binary treesNumber of n-node binary trees: Cn = 1

n+1 (2nn )

We need log Cn = 2n + o(n) bits (using Sterling’s Approximation)Operations: parent(v), leftchild(v), rightchild(v)

Page 144: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

30 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

First consider binary treesNumber of n-node binary trees: Cn = 1

n+1 (2nn )

We need log Cn = 2n + o(n) bits (using Sterling’s Approximation)Operations: parent(v), leftchild(v), rightchild(v)

Page 145: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

30 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

First consider binary treesNumber of n-node binary trees: Cn = 1

n+1 (2nn )

We need log Cn = 2n + o(n) bits (using Sterling’s Approximation)Operations: parent(v), leftchild(v), rightchild(v)

Page 146: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

30 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

First consider binary treesNumber of n-node binary trees: Cn = 1

n+1 (2nn )

We need log Cn = 2n + o(n) bits (using Sterling’s Approximation)Operations: parent(v), leftchild(v), rightchild(v)

7 8 9 10 11 12 13 14

3 4 5 6

1 2

0

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

Page 147: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

30 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

First consider binary treesNumber of n-node binary trees: Cn = 1

n+1 (2nn )

We need log Cn = 2n + o(n) bits (using Sterling’s Approximation)Operations: parent(v), leftchild(v), rightchild(v)

7 8 9 10 11 12 13 14

3 4 5 6

1 2

0

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

1 1 1 1 1 1 1 1 10 0 0 0 0 0

Page 148: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

31 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

In a very balanced binary tree (like in a heap) operations are easyLet 0 be the root identifier

parent(v) = b v−12 c for v > 0

leftchild(v) = 2v + 1rightchild(v) = 2v + 2

Page 149: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Child operation in detail

32 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

7 8 9 10 11 12 13 14

3 4 5 6

1 2

0

w=leftchild(v )

Mark P(v)P(w) = {children ofP(v)}∪w is at position|P(w)| =2P(v) + 1 = 2v + 1

Let δ(v) be the distance of a node v to the root nodeP(v) := {w | δ(w) ≤ δ(v) ∧w < v}Note: |P(v)| = v

Page 150: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Child operation in detail

32 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

7 8 9 10 11 12 13 14

3 4 5 6

1 2

0

w=leftchild(v )

Mark P(v)P(w) = {children ofP(v)}∪w is at position|P(w)| =2P(v) + 1 = 2v + 1

Let δ(v) be the distance of a node v to the root nodeP(v) := {w | δ(w) ≤ δ(v) ∧w < v}Note: |P(v)| = v

Page 151: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Child operation in detail

32 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

7 8 9 10 11 12 13 14

3 4 5 6

1 2

0

w=leftchild(v )

Mark P(v)P(w) = {children ofP(v)}∪w is at position|P(w)| =2P(v) + 1 = 2v + 1

Let δ(v) be the distance of a node v to the root nodeP(v) := {w | δ(w) ≤ δ(v) ∧w < v}Note: |P(v)| = v

Page 152: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Child operation in detail

32 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

7 8 9 10 11 12 13 14

3 4 5 6

1 2

0

w=leftchild(v )

Mark P(v)P(w) = {children ofP(v)}∪ {root}w is at position|P(w)| =2P(v) + 1 = 2v + 1

Let δ(v) be the distance of a node v to the root nodeP(v) := {w | δ(w) ≤ δ(v) ∧w < v}Note: |P(v)| = v

Page 153: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Child operation in detail

32 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

7 8 9 10 11 12 13 14

3 4 5 6

1 2

0

w=leftchild(v )

Mark P(v)P(w) = {children ofP(v)}∪ {root}w is at position|P(w)| =2P(v) + 1 = 2v + 1

Let δ(v) be the distance of a node v to the root nodeP(v) := {w | δ(w) ≤ δ(v) ∧w < v}Note: |P(v)| = v

Page 154: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

33 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Probelm with previous approach:For unbalanced trees the space would be 2d bits, where d is themaximum depth of a node.

Proposal of Jacobson (FOCS 1989):

1. Mark all the nodes of the tree with a 1.2. Add external nodes to the tree, and mark them all with 0-bits.3. Read off the bits marking the nodes of the tree in (left-to-right)

level-order.

Page 155: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

34 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

b = 10

0

rank(0,1,b) = 0

11

1

rank(1,1,b) = 1

12

2

rank(2,1,b) = 2

13

3

3

14

4

4

05

5

16

6

5

07

7

08

8

19

9

6

010

10

111

11

7

112

12

8

013

13

014

14

015

15

016

16

017

17

018

18

Page 156: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

Succinct representation of trees

35 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

b contains n set bits and is of length 2n + 1.A node is represented by the positon of its corresponing 1-bit in b.

leftchild(v) = 2 · rank(v) + 1rightchild(v) = 2 · rank(v) + 2parent(v) also possible in constant time (homework)

Total space (including rank and select): 2n + o(n) bits

Jacobson also considered rooted, ordered tree with degree higher than 2.

Page 157: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

LOUDS – level order unary degreesequence

36 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Page 158: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

LOUDS – level order unary degreesequence

36 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

pseudo root

Page 159: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

LOUDS – level order unary degreesequence

36 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

pseudo root01

0001

001 1 01

01 01 1

1 1

unary encoding of out degree

Page 160: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

LOUDS – level order unary degreesequence

36 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

pseudo root01

0001

001 1 01

01 01 1

1 1

unary encoding of out degree

LOUDS sequence = 0100010011010101111(concatenation of unary codes in level order)

Page 161: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

LOUDS – level order unary degreesequence

37 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Each node (excpet the pseudo root) is represented twiceOnce as „0” in the child list of its parentOnce as the terminal („1”) in its child list

Represent node v by the index of its corresponding „0”I.e. root corresponds to „0”

Page 162: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

LOUDS – level order unary degreesequence

38 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

00 is_leaf(v )01 id ← rank(v ,0,LOUDS)02 p ← select(id + 2,1,LOUDS)03 if LOUDS[p− 1] = 1 then04 return true05 return false

00 out_degree(v )01 if is_leaf (v) then02 return 003 id ← rank(v ,0,LOUDS)04 return select(id + 2,1,LOUDS)− select(id + 1,1,LOUDS)− 1

Page 163: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

LOUDS – level order unary degreesequence

39 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Get i-th child (i ∈ [1,out_degree(v)]) of v and parent:

00 child(v ,i)01 if i > out_degree(v) then02 return ⊥03 id ← rank(v ,0,LOUDS)04 return select(id + 1,1,LOUDS) + i

00 parent(v )01 if is_root(v) then02 return ⊥01 pid ← rank(v ,1,LOUDS)04 return select(pid ,0,LOUDS)

Page 164: Burrows Wheeler Transformation Algorithmen IIalgo2.iti.kit.edu/documents/AlgorithmenII_WS17/kapitel_06_bwt_and... · nur eine Umordnung des Textes,! gruppiert Zeichen mit ähnlichem

LOUDS – level order unary degreesequence

40 Gog:Burrows Wheeler Transformation – Algorithmen II

Institut für Theoretische InformatikAlgorithmik II

Conclusion

Total space for LOUDS representation is 2n + 1 + o(n) bitsAll operations take constant time