SlideShare a Scribd company logo
String algorithms
ast     • Knuth-Morris-Pratt algorithm
ime:       - find pattern P in string T
           - preprocess P (construct Fail array)
           - search time: O(n+m)        n=|T|, m=|P|


oday:   • Data structures for strings
           - trie
           - suffix tree & generalized suffix tree
           - suffix array
        • Many applications
           - e.g. computing common longest substring
Trie data structure

• Data structure for storing a set of strings
• Name comes from “retrieval”, usually pronounced as “try”

• Rooted tree                                          h
• Edges labeled with letters
                                                   a   e i
• Leafs correspond to input strings
                                            d          l       hi


                                      had          d       p
        { had, held, help, hi }
                                                held         help
Trie data structure

• Data structure for storing a set of strings
• Name comes from “retrieval”, usually pronounced as “try”

• Rooted tree                               had
                                            held
• Edges labeled with letters                help
• Leafs correspond to input strings         hi




        { had, held, help, hi }
Trie data structure

• Data structure for storing a set of strings
• Name comes from “retrieval”, usually pronounced as “try”

• Rooted tree                                 h
• Edges labeled with letters
                                            had
• Leafs correspond to input strings         held
                                            help
                                            hi


        { had, held, help, hi }
Trie data structure

• Data structure for storing a set of strings
• Name comes from “retrieval”, usually pronounced as “try”

• Rooted tree                                      h
• Edges labeled with letters
                                             a     e i
• Leafs correspond to input strings
                                       had       held    hi
                                                 help

        { had, held, help, hi }
Trie data structure

• Data structure for storing a set of strings
• Name comes from “retrieval”, usually pronounced as “try”

• Rooted tree                                         h
• Edges labeled with letters
                                                a     e i
• Leafs correspond to input strings
                                            d       held    hi
                                                    help

                                      had
        { had, held, help, hi }
Trie data structure

• Data structure for storing a set of strings
• Name comes from “retrieval”, usually pronounced as “try”

• Rooted tree                                         h
• Edges labeled with letters
                                                a     e i
• Leafs correspond to input strings
                                            d          l    hi


                                      had           held
        { had, held, help, hi }                     help
Trie data structure

• Data structure for storing a set of strings
• Name comes from “retrieval”, usually pronounced as “try”

• Rooted tree                                          h
• Edges labeled with letters
                                                   a   e i
• Leafs correspond to input strings
                                            d          l       hi


                                      had          d       p
        { had, held, help, hi }
                                                held         help
Trie data structure

• Cannot represent strings T and TT'
• Solution: append special symbol $
  to the end of each word
                                                    h

                                                a   e i

                                         d          l       hi


                                   had          d       p
       { had, held, help, hi }
                                             held         help
Trie data structure

• Cannot represent strings T and TT'
• Solution: append special symbol $
  to the end of each word
                                                             h

                                                 $       a   e i

                                    h$
                                                                         $
                                             d               l
                                                                           hi$
                                         $            d          p
  { had$, held$, help$, hi$, h$ }
                                     had$         $                  $

                                                 held$             help$
Trie data structure
• Application: storing dictionaries
• Space: O(m1+...+mk), mi=length of string Ti
• Looking up word of length n: O(n)
   - assuming alphabet has constant size                             h

                                                         $       a
• Alternative to binary trees                                        e i
   - pros and cons (see wikipedia)          h$
                                                                                 $
                                                     d               l
               had
                                                                                   hi$
         h                  held                              d          p
                                                 $
                     help          hi
                                             had$         $                  $
 - all nodes store items, not just leaves
 - unlabeled edges                                       held$             help$
Tries for storing suffixes
 • This lecture: use tries for storing the set of suffixes of string T

                        c        a       o     $

               a             c       o         $        $
                                                                 cacao$
                                                                 acao$
          c     o        a                         o$
                                         $                       cao$
      a                 o                ao$                     ao$
                    $
                                                                 o$
               cao$
  o                     $                                        $

 $                      acao$


cacao$
Reducing space requirements
 • Trick 1: Delete non-branching nodes, merge labels (compact trie)

                              a               $
                     ca
                                         o$
                                                       $
                                                           cacao$
                                  o$                       acao$
                                                  o$
               o$     cao$                                 cao$
                                   ao$                     ao$
   cao$                                                    o$
              cao$
                                                           $

                      acao$


cacao$
Reducing space requirements
•   # leafs: n+1
•   # internal nodes: at most n
•                                                         => O(n) storage
    # edges: at most 2n edges
•   Trick 2: Store edge labels via two pointers into the string
    (begin & end)



                                                             cacao$
                ca          a        o$        $
                                                             acao$
                                                             cao$
                                          o$
    cao$      o$     cao$       o$                 $         ao$
                                                             o$
             cao$     acao$      ao$
    cacao$                                                   $
Suffix trees
• Called the suffix tree for string T [Weiner’73]
• D. Knuth: “algorithm of the year 1973”
• Can be constructed in linear time
   - e.g. [McCreight’76], [Ukkonen’95]
   - algorithms are complicated [will not be covered]
• Used for all sorts of string problems


                                                        cacao$
              ca          a         o$        $
                                                        acao$
                                                        cao$
                                         o$
  cao$      o$     cao$        o$                 $     ao$
                                                        o$
           cao$     acao$       ao$
  cacao$                                                $
Suffix trees for string matching
Does text T contain pattern P?
• Construct suffix tree for T in O(|T|) time
• Query takes O(|P|) time!
• same as Knuth-Morris-Pratt, but...




                                                   cacao$
           ca          a        o$        $
                                                   acao$
                                                   cao$
                                     o$
cao$     o$     cao$       o$                  $   ao$
                                                   o$
         cao$    acao$      ao$
cacao$                                             $
Suffix trees for string matching
• Scenario: text T is fixed, patterns P1,...,Pk come one at a time
   - T is very long
• Time: O(|T| + |P1| + |P2| + ... + |Pk|)
• Knuth-Morris-Pratt can be generalized to multiple patterns
  (Aho-Corasick alg.). Same complexity as above, but requires
  knowledge of P1,...,Pk in advance


                                                           cacao$
            ca          a        o$        $
                                                           acao$
                                                           cao$
                                      o$
cao$      o$     cao$       o$                  $          ao$
                                                           o$
          cao$    acao$      ao$
cacao$                                                     $
Getting extra information
Task: Get all occurrences of P in T (give a list of start positions)

• Can be done in O(|P|+c) time where c is # of occurences
  - Locate the node corresponding to P
  - Traverse all leaves of the subtree rooted at this node



                                                            cacao$
            ca          a        o$        $
                                                            acao$
                                                            cao$
                                      o$
cao$      o$     cao$       o$                   $          ao$
                                                            o$
          cao$    acao$      ao$
cacao$                                                      $
Getting extra information
Task: Get # of occurrences of P in T

• Can be done in O(|P|) time
  - With O(|T|) preprocessing




                                                   cacao$
            ca          a        o$        $
                                                   acao$
                                                   cao$
                                      o$
cao$      o$     cao$       o$                 $   ao$
                                                   o$
         cao$     acao$      ao$
cacao$                                             $
Generalized suffix tree
• Input: a set of strings {T1,...,Tk}
• Generalized suffix tree: tree containing all suffixes of all strings
• Tree for { abba , bac } :                                       abba$     1

                                                                    bba$1
                       a                                 $2
                                      b   c$2       $1              ba$1
                                                                    a$1
                                                c$2       $1   $2
 bba$1            $1              a                                 $1
         c$2                                ba$1

abba$1     ac$2    a$1                      bba$1                   bac$2
                           $1         c$2                           ac$2
                           ba$1       bac$2
                                                                    c$2
Construction of generalized suffix tree for {X, Y}
 • Construct suffix tree for X $1Y $2
 • Edges leading to red leaves are labeled as “...$1Y $2”; delete “Y $2”

                                                             abba$1bac$2
                                                             bba$1bac$2
                                          $1bac$2            ba$1bac$2
                                                             a$1bac$2
...$1bac$2      $1bac$2                    $1bac$2           $1bac$2
                                     ...$1bac$1

abba$1bac$2      a$1bac$2          bba$1bac$2                bac$2
                                                             ac$2
                  $1bac$2
                                                             c$2
                     ba$1bac$2                               $2
Construction of generalized suffix tree for {X, Y}
• Construct suffix tree for X $1Y $2
• Edges leading to red leaves are labeled as “...$1Y $2”; delete “Y $2”

                                                            abba$1bac$2
                                                            bba$1bac$2
                                            $1              ba$1bac$2
                                                            a$1bac$2
    ...$1       $1                           $1             $1bac$2
                                    ...$1

abba$1               a$1            bba$1                   bac$2
                                                            ac$2
                           $1
                                                            c$2
                           ba$1                             $2
Construction of generalized suffix tree {T 1,...,Tk}

• Can use the same trick
  - construct suffix tree for T1 $1 ... Tk $k

• Linear runtime: O(|T1|+...+|Tk|)

• In practice, modify the algorithm (e.g. Ukkonen’s alg.)
    to get a slightly faster performance
Computing common longest subsequence of {T1,T2}
•     Mark each internal node with red (blue)
              if it has at least one red (blue) child
•     Nodes with both colors contain common subsequences
                                                                      abba$1
                                                                      bba$1
                         a                                 $2
                                        b   c$2       $1              ba$1
                                                                      a$1
                                                  c$2       $1   $2
    bba$1           $1              a                                 $1
            c$2                               ba$1

abba$1       ac$2    a$1                      bba$1                   bac$2
                             $1         c$2                           ac$2
                             ba$1       bac$2
                                                                      c$2
Computing common longest subsequence of {T1,...,TK}
Task: For each r = 2,...,K compute the length of the longest sequence
contained in at least r strings
1. Construct generalized suffix tree for {T1,...,TK}




   ...
                                                                        ...
Computing common longest subsequence of {T1,...,TK}
Task: For each r = 2,...,K compute the length of the longest sequence
contained in at least r strings
1. Construct generalized suffix tree for {T1,...,TK}
2. Mark each node v with color k=1,...,K if it has a leaf with that color
3. Compute c(v) = # of colors at v
  - Naive computation: O(nK), n=|T1|+...+|TK|. Can also be done in O(n)

String corresponding to v is contained in exactly c(v) input strings



   ...
                                                                        ...
Suffix array for text T[1..n]
                                     SA[0..n]

mississippi   0        ε               11       • SA[i] = id of the i’th
ississippi    1        i               10         smallest suffix
ssissippi     2        ippi            7
sissippi      3        issippi         4
issippi       4        ississippi      1
                                                • Number k corresponds
ssippi        5        mississippi     0          to suffix T[k+1..n]
sippi         6        pi              9
ippi          7        ppi             8
ppi           8        sippi           6
pi            9        sissippi        3        • Lexicographic order:
i             10       ssippi          5          - X < Xα...
ε             11       ssissippi       2          - Xα... < Xβ... if α<β

  Suffix array: stores suffixes of string T in a lexicographic order
Pattern search from a suffix array

Task: Find pattern P = iss in text T = mississippi
                         m                  n
ε               11
i               10   • All occurrences appear contiguously in the array
ippi            7
issippi         4    • Computing start & end indexes: binary search
ississippi      1
mississippi     0    • Worst-case: O(m log n)
pi              9
ppi             8
sippi           6    • In practice, often O(m + log n)
sissippi        3
ssippi          5    • Can be improved to O(m + log n) worst-case
ssissippi       2       - need to store extra 2n numbers
Construction of suffix arrays



ε             11    • SA[0..n] can be constructed in linear time
i             10
ippi          7        - from a suffix tree
issippi       4
                       - or directly
ississippi    1
mississippi   0         [Kim,Sim,Park,Park’03]
pi            9         [Kärkkäinen&Sanders’03]
ppi           8         [Ko & Aluru’03]
sippi         6
sissippi      3
ssippi        5
ssissippi     2
Summary
• Suffix trees & suffix arrays: two powerful data structures for strings

• Space requirements:
   - suffix trees: linear but with a large constant, e.g. 20 |T|
   - suffix arrays: more efficient, e.g. 5 |T|

• Suffix arrays are more suited to large alphabets
• Practitioners like suffix arrays (simplicity, space efficiency)
• Theoreticians like suffix trees (explicit structure) ε              11
                                                        i             10
                                                        ippi          7
                                                        issippi       4
                                                        ississippi    1
                                                        mississippi   0
                                                        pi            9
                                                        ppi           8
                                                        sippi         6
                                                        sissippi      3
                                                        ssippi        5
                                                        ssissippi     2
Further information on string algorithms

• Dan Gusfield, “Algorithms on Strings, Trees and Sequences:
  Computer Science and Computational Biology”, 1997

• Slides mentioning more recent results:
  http://www.cs.helsinki.fi/u/ukkonen/Erice2005.ppt

More Related Content

More from zukun

ETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCVETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCVzukun
 
ETHZ CV2012: Information
ETHZ CV2012: InformationETHZ CV2012: Information
ETHZ CV2012: Informationzukun
 
Siwei lyu: natural image statistics
Siwei lyu: natural image statisticsSiwei lyu: natural image statistics
Siwei lyu: natural image statisticszukun
 
Lecture9 camera calibration
Lecture9 camera calibrationLecture9 camera calibration
Lecture9 camera calibrationzukun
 
Brunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer visionBrunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer visionzukun
 
Modern features-part-4-evaluation
Modern features-part-4-evaluationModern features-part-4-evaluation
Modern features-part-4-evaluationzukun
 
Modern features-part-3-software
Modern features-part-3-softwareModern features-part-3-software
Modern features-part-3-softwarezukun
 
Modern features-part-2-descriptors
Modern features-part-2-descriptorsModern features-part-2-descriptors
Modern features-part-2-descriptorszukun
 
Modern features-part-1-detectors
Modern features-part-1-detectorsModern features-part-1-detectors
Modern features-part-1-detectorszukun
 
Modern features-part-0-intro
Modern features-part-0-introModern features-part-0-intro
Modern features-part-0-introzukun
 
Lecture 02 internet video search
Lecture 02 internet video searchLecture 02 internet video search
Lecture 02 internet video searchzukun
 
Lecture 01 internet video search
Lecture 01 internet video searchLecture 01 internet video search
Lecture 01 internet video searchzukun
 
Lecture 03 internet video search
Lecture 03 internet video searchLecture 03 internet video search
Lecture 03 internet video searchzukun
 
Icml2012 tutorial representation_learning
Icml2012 tutorial representation_learningIcml2012 tutorial representation_learning
Icml2012 tutorial representation_learningzukun
 
Gephi tutorial: quick start
Gephi tutorial: quick startGephi tutorial: quick start
Gephi tutorial: quick startzukun
 
EM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysisEM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysiszukun
 
Object recognition with pictorial structures
Object recognition with pictorial structuresObject recognition with pictorial structures
Object recognition with pictorial structureszukun
 
Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities zukun
 
Icml2012 learning hierarchies of invariant features
Icml2012 learning hierarchies of invariant featuresIcml2012 learning hierarchies of invariant features
Icml2012 learning hierarchies of invariant featureszukun
 
ECCV2010: Modeling Temporal Structure of Decomposable Motion Segments for Act...
ECCV2010: Modeling Temporal Structure of Decomposable Motion Segments for Act...ECCV2010: Modeling Temporal Structure of Decomposable Motion Segments for Act...
ECCV2010: Modeling Temporal Structure of Decomposable Motion Segments for Act...zukun
 

More from zukun (20)

ETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCVETHZ CV2012: Tutorial openCV
ETHZ CV2012: Tutorial openCV
 
ETHZ CV2012: Information
ETHZ CV2012: InformationETHZ CV2012: Information
ETHZ CV2012: Information
 
Siwei lyu: natural image statistics
Siwei lyu: natural image statisticsSiwei lyu: natural image statistics
Siwei lyu: natural image statistics
 
Lecture9 camera calibration
Lecture9 camera calibrationLecture9 camera calibration
Lecture9 camera calibration
 
Brunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer visionBrunelli 2008: template matching techniques in computer vision
Brunelli 2008: template matching techniques in computer vision
 
Modern features-part-4-evaluation
Modern features-part-4-evaluationModern features-part-4-evaluation
Modern features-part-4-evaluation
 
Modern features-part-3-software
Modern features-part-3-softwareModern features-part-3-software
Modern features-part-3-software
 
Modern features-part-2-descriptors
Modern features-part-2-descriptorsModern features-part-2-descriptors
Modern features-part-2-descriptors
 
Modern features-part-1-detectors
Modern features-part-1-detectorsModern features-part-1-detectors
Modern features-part-1-detectors
 
Modern features-part-0-intro
Modern features-part-0-introModern features-part-0-intro
Modern features-part-0-intro
 
Lecture 02 internet video search
Lecture 02 internet video searchLecture 02 internet video search
Lecture 02 internet video search
 
Lecture 01 internet video search
Lecture 01 internet video searchLecture 01 internet video search
Lecture 01 internet video search
 
Lecture 03 internet video search
Lecture 03 internet video searchLecture 03 internet video search
Lecture 03 internet video search
 
Icml2012 tutorial representation_learning
Icml2012 tutorial representation_learningIcml2012 tutorial representation_learning
Icml2012 tutorial representation_learning
 
Gephi tutorial: quick start
Gephi tutorial: quick startGephi tutorial: quick start
Gephi tutorial: quick start
 
EM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysisEM algorithm and its application in probabilistic latent semantic analysis
EM algorithm and its application in probabilistic latent semantic analysis
 
Object recognition with pictorial structures
Object recognition with pictorial structuresObject recognition with pictorial structures
Object recognition with pictorial structures
 
Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities Iccv2011 learning spatiotemporal graphs of human activities
Iccv2011 learning spatiotemporal graphs of human activities
 
Icml2012 learning hierarchies of invariant features
Icml2012 learning hierarchies of invariant featuresIcml2012 learning hierarchies of invariant features
Icml2012 learning hierarchies of invariant features
 
ECCV2010: Modeling Temporal Structure of Decomposable Motion Segments for Act...
ECCV2010: Modeling Temporal Structure of Decomposable Motion Segments for Act...ECCV2010: Modeling Temporal Structure of Decomposable Motion Segments for Act...
ECCV2010: Modeling Temporal Structure of Decomposable Motion Segments for Act...
 

Recently uploaded

Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
Celine George
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
Jisc
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
Pavel ( NSTU)
 
Overview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with MechanismOverview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with Mechanism
DeeptiGupta154
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
Tamralipta Mahavidyalaya
 
Basic phrases for greeting and assisting costumers
Basic phrases for greeting and assisting costumersBasic phrases for greeting and assisting costumers
Basic phrases for greeting and assisting costumers
PedroFerreira53928
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
MysoreMuleSoftMeetup
 
Language Across the Curriculm LAC B.Ed.
Language Across the  Curriculm LAC B.Ed.Language Across the  Curriculm LAC B.Ed.
Language Across the Curriculm LAC B.Ed.
Atul Kumar Singh
 
ESC Beyond Borders _From EU to You_ InfoPack general.pdf
ESC Beyond Borders _From EU to You_ InfoPack general.pdfESC Beyond Borders _From EU to You_ InfoPack general.pdf
ESC Beyond Borders _From EU to You_ InfoPack general.pdf
Fundacja Rozwoju Społeczeństwa Przedsiębiorczego
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
JosvitaDsouza2
 
Introduction to Quality Improvement Essentials
Introduction to Quality Improvement EssentialsIntroduction to Quality Improvement Essentials
Introduction to Quality Improvement Essentials
Excellence Foundation for South Sudan
 
Digital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and ResearchDigital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and Research
Vikramjit Singh
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
Special education needs
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
siemaillard
 
Instructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxInstructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptx
Jheel Barad
 
PART A. Introduction to Costumer Service
PART A. Introduction to Costumer ServicePART A. Introduction to Costumer Service
PART A. Introduction to Costumer Service
PedroFerreira53928
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
Thiyagu K
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
siemaillard
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
Delapenabediema
 

Recently uploaded (20)

Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
 
Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
Overview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with MechanismOverview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with Mechanism
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
 
Basic phrases for greeting and assisting costumers
Basic phrases for greeting and assisting costumersBasic phrases for greeting and assisting costumers
Basic phrases for greeting and assisting costumers
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
 
Language Across the Curriculm LAC B.Ed.
Language Across the  Curriculm LAC B.Ed.Language Across the  Curriculm LAC B.Ed.
Language Across the Curriculm LAC B.Ed.
 
ESC Beyond Borders _From EU to You_ InfoPack general.pdf
ESC Beyond Borders _From EU to You_ InfoPack general.pdfESC Beyond Borders _From EU to You_ InfoPack general.pdf
ESC Beyond Borders _From EU to You_ InfoPack general.pdf
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
 
Introduction to Quality Improvement Essentials
Introduction to Quality Improvement EssentialsIntroduction to Quality Improvement Essentials
Introduction to Quality Improvement Essentials
 
Digital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and ResearchDigital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and Research
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
Instructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxInstructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptx
 
PART A. Introduction to Costumer Service
PART A. Introduction to Costumer ServicePART A. Introduction to Costumer Service
PART A. Introduction to Costumer Service
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
 
The Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official PublicationThe Challenger.pdf DNHS Official Publication
The Challenger.pdf DNHS Official Publication
 

Advances in discrete energy minimisation for computer vision

  • 1. String algorithms ast • Knuth-Morris-Pratt algorithm ime: - find pattern P in string T - preprocess P (construct Fail array) - search time: O(n+m) n=|T|, m=|P| oday: • Data structures for strings - trie - suffix tree & generalized suffix tree - suffix array • Many applications - e.g. computing common longest substring
  • 2. Trie data structure • Data structure for storing a set of strings • Name comes from “retrieval”, usually pronounced as “try” • Rooted tree h • Edges labeled with letters a e i • Leafs correspond to input strings d l hi had d p { had, held, help, hi } held help
  • 3. Trie data structure • Data structure for storing a set of strings • Name comes from “retrieval”, usually pronounced as “try” • Rooted tree had held • Edges labeled with letters help • Leafs correspond to input strings hi { had, held, help, hi }
  • 4. Trie data structure • Data structure for storing a set of strings • Name comes from “retrieval”, usually pronounced as “try” • Rooted tree h • Edges labeled with letters had • Leafs correspond to input strings held help hi { had, held, help, hi }
  • 5. Trie data structure • Data structure for storing a set of strings • Name comes from “retrieval”, usually pronounced as “try” • Rooted tree h • Edges labeled with letters a e i • Leafs correspond to input strings had held hi help { had, held, help, hi }
  • 6. Trie data structure • Data structure for storing a set of strings • Name comes from “retrieval”, usually pronounced as “try” • Rooted tree h • Edges labeled with letters a e i • Leafs correspond to input strings d held hi help had { had, held, help, hi }
  • 7. Trie data structure • Data structure for storing a set of strings • Name comes from “retrieval”, usually pronounced as “try” • Rooted tree h • Edges labeled with letters a e i • Leafs correspond to input strings d l hi had held { had, held, help, hi } help
  • 8. Trie data structure • Data structure for storing a set of strings • Name comes from “retrieval”, usually pronounced as “try” • Rooted tree h • Edges labeled with letters a e i • Leafs correspond to input strings d l hi had d p { had, held, help, hi } held help
  • 9. Trie data structure • Cannot represent strings T and TT' • Solution: append special symbol $ to the end of each word h a e i d l hi had d p { had, held, help, hi } held help
  • 10. Trie data structure • Cannot represent strings T and TT' • Solution: append special symbol $ to the end of each word h $ a e i h$ $ d l hi$ $ d p { had$, held$, help$, hi$, h$ } had$ $ $ held$ help$
  • 11. Trie data structure • Application: storing dictionaries • Space: O(m1+...+mk), mi=length of string Ti • Looking up word of length n: O(n) - assuming alphabet has constant size h $ a • Alternative to binary trees e i - pros and cons (see wikipedia) h$ $ d l had hi$ h held d p $ help hi had$ $ $ - all nodes store items, not just leaves - unlabeled edges held$ help$
  • 12. Tries for storing suffixes • This lecture: use tries for storing the set of suffixes of string T c a o $ a c o $ $ cacao$ acao$ c o a o$ $ cao$ a o ao$ ao$ $ o$ cao$ o $ $ $ acao$ cacao$
  • 13. Reducing space requirements • Trick 1: Delete non-branching nodes, merge labels (compact trie) a $ ca o$ $ cacao$ o$ acao$ o$ o$ cao$ cao$ ao$ ao$ cao$ o$ cao$ $ acao$ cacao$
  • 14. Reducing space requirements • # leafs: n+1 • # internal nodes: at most n • => O(n) storage # edges: at most 2n edges • Trick 2: Store edge labels via two pointers into the string (begin & end) cacao$ ca a o$ $ acao$ cao$ o$ cao$ o$ cao$ o$ $ ao$ o$ cao$ acao$ ao$ cacao$ $
  • 15. Suffix trees • Called the suffix tree for string T [Weiner’73] • D. Knuth: “algorithm of the year 1973” • Can be constructed in linear time - e.g. [McCreight’76], [Ukkonen’95] - algorithms are complicated [will not be covered] • Used for all sorts of string problems cacao$ ca a o$ $ acao$ cao$ o$ cao$ o$ cao$ o$ $ ao$ o$ cao$ acao$ ao$ cacao$ $
  • 16. Suffix trees for string matching Does text T contain pattern P? • Construct suffix tree for T in O(|T|) time • Query takes O(|P|) time! • same as Knuth-Morris-Pratt, but... cacao$ ca a o$ $ acao$ cao$ o$ cao$ o$ cao$ o$ $ ao$ o$ cao$ acao$ ao$ cacao$ $
  • 17. Suffix trees for string matching • Scenario: text T is fixed, patterns P1,...,Pk come one at a time - T is very long • Time: O(|T| + |P1| + |P2| + ... + |Pk|) • Knuth-Morris-Pratt can be generalized to multiple patterns (Aho-Corasick alg.). Same complexity as above, but requires knowledge of P1,...,Pk in advance cacao$ ca a o$ $ acao$ cao$ o$ cao$ o$ cao$ o$ $ ao$ o$ cao$ acao$ ao$ cacao$ $
  • 18. Getting extra information Task: Get all occurrences of P in T (give a list of start positions) • Can be done in O(|P|+c) time where c is # of occurences - Locate the node corresponding to P - Traverse all leaves of the subtree rooted at this node cacao$ ca a o$ $ acao$ cao$ o$ cao$ o$ cao$ o$ $ ao$ o$ cao$ acao$ ao$ cacao$ $
  • 19. Getting extra information Task: Get # of occurrences of P in T • Can be done in O(|P|) time - With O(|T|) preprocessing cacao$ ca a o$ $ acao$ cao$ o$ cao$ o$ cao$ o$ $ ao$ o$ cao$ acao$ ao$ cacao$ $
  • 20. Generalized suffix tree • Input: a set of strings {T1,...,Tk} • Generalized suffix tree: tree containing all suffixes of all strings • Tree for { abba , bac } : abba$ 1 bba$1 a $2 b c$2 $1 ba$1 a$1 c$2 $1 $2 bba$1 $1 a $1 c$2 ba$1 abba$1 ac$2 a$1 bba$1 bac$2 $1 c$2 ac$2 ba$1 bac$2 c$2
  • 21. Construction of generalized suffix tree for {X, Y} • Construct suffix tree for X $1Y $2 • Edges leading to red leaves are labeled as “...$1Y $2”; delete “Y $2” abba$1bac$2 bba$1bac$2 $1bac$2 ba$1bac$2 a$1bac$2 ...$1bac$2 $1bac$2 $1bac$2 $1bac$2 ...$1bac$1 abba$1bac$2 a$1bac$2 bba$1bac$2 bac$2 ac$2 $1bac$2 c$2 ba$1bac$2 $2
  • 22. Construction of generalized suffix tree for {X, Y} • Construct suffix tree for X $1Y $2 • Edges leading to red leaves are labeled as “...$1Y $2”; delete “Y $2” abba$1bac$2 bba$1bac$2 $1 ba$1bac$2 a$1bac$2 ...$1 $1 $1 $1bac$2 ...$1 abba$1 a$1 bba$1 bac$2 ac$2 $1 c$2 ba$1 $2
  • 23. Construction of generalized suffix tree {T 1,...,Tk} • Can use the same trick - construct suffix tree for T1 $1 ... Tk $k • Linear runtime: O(|T1|+...+|Tk|) • In practice, modify the algorithm (e.g. Ukkonen’s alg.) to get a slightly faster performance
  • 24. Computing common longest subsequence of {T1,T2} • Mark each internal node with red (blue) if it has at least one red (blue) child • Nodes with both colors contain common subsequences abba$1 bba$1 a $2 b c$2 $1 ba$1 a$1 c$2 $1 $2 bba$1 $1 a $1 c$2 ba$1 abba$1 ac$2 a$1 bba$1 bac$2 $1 c$2 ac$2 ba$1 bac$2 c$2
  • 25. Computing common longest subsequence of {T1,...,TK} Task: For each r = 2,...,K compute the length of the longest sequence contained in at least r strings 1. Construct generalized suffix tree for {T1,...,TK} ... ...
  • 26. Computing common longest subsequence of {T1,...,TK} Task: For each r = 2,...,K compute the length of the longest sequence contained in at least r strings 1. Construct generalized suffix tree for {T1,...,TK} 2. Mark each node v with color k=1,...,K if it has a leaf with that color 3. Compute c(v) = # of colors at v - Naive computation: O(nK), n=|T1|+...+|TK|. Can also be done in O(n) String corresponding to v is contained in exactly c(v) input strings ... ...
  • 27. Suffix array for text T[1..n] SA[0..n] mississippi 0 ε 11 • SA[i] = id of the i’th ississippi 1 i 10 smallest suffix ssissippi 2 ippi 7 sissippi 3 issippi 4 issippi 4 ississippi 1 • Number k corresponds ssippi 5 mississippi 0 to suffix T[k+1..n] sippi 6 pi 9 ippi 7 ppi 8 ppi 8 sippi 6 pi 9 sissippi 3 • Lexicographic order: i 10 ssippi 5 - X < Xα... ε 11 ssissippi 2 - Xα... < Xβ... if α<β Suffix array: stores suffixes of string T in a lexicographic order
  • 28. Pattern search from a suffix array Task: Find pattern P = iss in text T = mississippi m n ε 11 i 10 • All occurrences appear contiguously in the array ippi 7 issippi 4 • Computing start & end indexes: binary search ississippi 1 mississippi 0 • Worst-case: O(m log n) pi 9 ppi 8 sippi 6 • In practice, often O(m + log n) sissippi 3 ssippi 5 • Can be improved to O(m + log n) worst-case ssissippi 2 - need to store extra 2n numbers
  • 29. Construction of suffix arrays ε 11 • SA[0..n] can be constructed in linear time i 10 ippi 7 - from a suffix tree issippi 4 - or directly ississippi 1 mississippi 0 [Kim,Sim,Park,Park’03] pi 9 [Kärkkäinen&Sanders’03] ppi 8 [Ko & Aluru’03] sippi 6 sissippi 3 ssippi 5 ssissippi 2
  • 30. Summary • Suffix trees & suffix arrays: two powerful data structures for strings • Space requirements: - suffix trees: linear but with a large constant, e.g. 20 |T| - suffix arrays: more efficient, e.g. 5 |T| • Suffix arrays are more suited to large alphabets • Practitioners like suffix arrays (simplicity, space efficiency) • Theoreticians like suffix trees (explicit structure) ε 11 i 10 ippi 7 issippi 4 ississippi 1 mississippi 0 pi 9 ppi 8 sippi 6 sissippi 3 ssippi 5 ssissippi 2
  • 31. Further information on string algorithms • Dan Gusfield, “Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology”, 1997 • Slides mentioning more recent results: http://www.cs.helsinki.fi/u/ukkonen/Erice2005.ppt