15-853Page 1 15-853: Algorithms in the Real World Suffix Trees.

Slides:



Advertisements
Similar presentations
Combinatorial Pattern Matching CS 466 Saurabh Sinha.
Advertisements

Introduction to Computer Science 2 Lecture 7: Extended binary trees
Suffix Trees Construction and Applications João Carreira 2008.
Suffix Tree. Suffix Tree Representation S=xabxac Represent every edge using its start and end text location.
Suffix Trees. 2 Outline Introduction Suffix Trees (ST) Building STs in linear time: Ukkonen’s algorithm Applications of ST.
Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU Linear Time Construction of Suffix Tree.
Two implementation issues Alphabet size Generalizing to multiple strings.
Suffix Trees Specialized form of keyword trees New ideas –preprocess text T, not pattern P O(m) preprocess time O(n+k) search time –k is number of occurrences.
Suffix Trees and Suffix Arrays
1 Suffix Trees Charles Yan Suffix Trees: Motivations Substring problem: One is given a text T of length m. After O (m) preprocessing time, one.
SUFFIX TREES From exact to approximate string matching. 17 dicembre 2003 Luca Bortolussi.
296.3: Algorithms in the Real World
© 2004 Goodrich, Tamassia Tries1. © 2004 Goodrich, Tamassia Tries2 Preprocessing Strings Preprocessing the pattern speeds up pattern matching queries.
1 Prof. Dr. Th. Ottmann Theory I Algorithm Design and Analysis (12 - Text search: suffix trees)
1 Data structures for Pattern Matching Suffix trees and suffix arrays are a basic data structure in pattern matching Reported by: Olga Sergeeva, Saint.
3 -1 Chapter 3 String Matching String Matching Problem Given a text string T of length n and a pattern string P of length m, the exact string matching.
Tries Standard Tries Compressed Tries Suffix Tries.
Combinatorial Pattern Matching CS 466 Saurabh Sinha.
Tries Search for ‘bell’ O(n) by KMP algorithm O(dm) in a trie Tries
Motivation  DNA sequencing processes large chains into subsequences of ~500 characters long  Assembling all pieces, produces a single sequence but… –At.
Presented By Dr. Shazzad Hosain Asst. Prof. EECS, NSU Linear Time Construction of Suffix Tree.
Suffix Trees String … any sequence of characters. Substring of string S … string composed of characters i through j, i ate is.
1 Applications of Suffix Trees Charles Yan Exact String Matching |P|=n, |T|=m P and T are both known at the same time Boyer-Moore, or Suffix.
Full-Text Indexing via Burrows-Wheeler Transform Wing-Kai Hon Oct 18, 2006.
Suffix trees and suffix arrays presentation by Haim Kaplan.
Sequence Alignment Variations Computing alignments using only O(m) space rather than O(mn) space. Computing alignments with bounded difference Exclusion.
On-line Construction of Suffix Tree Esko Ukkonen Algorithmica Vol. 14, No. 3, pp , 1995.
Algorithms and Data Structures. /course/eleg67701-f/Topic-1b2 Outline  Data Structures  Space Complexity  Case Study: string matching Array implementation.
Aho-Corasick Algorithm Generalizes KMP to handle sets of strings New ideas –keyword trees –failure functions/links –output links.
UNIVERSITY OF SOUTH CAROLINA College of Engineering & Information Technology Bioinformatics Algorithms and Data Structures Chapter 12.3: Exclusion Methods.
Building Suffix Trees in O(m) time Weiner had first linear time algorithm in 1973 McCreight developed a more space efficient algorithm in 1976 Ukkonen.
Survey: String Matching with k Mismatches Moshe Lewenstein Bar Ilan University.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 20: Binary Trees.
1 Exact Set Matching Charles Yan Exact Set Matching Goal: To find all occurrences in text T of any pattern in a set of patterns P={p 1,p 2,…,p.
Binary Trees Chapter 6.
String Matching. Problem is to find if a pattern P[1..m] occurs within text T[1..n] Simple solution: Naïve String Matching –Match each position in the.
Chapter Tow Search Trees BY HUSSEIN SALIM QASIM WESAM HRBI FADHEEL CS 6310 ADVANCE DATA STRUCTURE AND ALGORITHM DR. ELISE DE DONCKER 1.
UNC Chapel Hill M. C. Lin Point Location Reading: Chapter 6 of the Textbook Driving Applications –Knowing Where You Are in GIS Related Applications –Triangulation.
Introduction n – length of text, m – length of search pattern string Generally suffix tree construction takes O(n) time, O(n) space and searching takes.
1. 2 Overview  Suffix tries  On-line construction of suffix tries in quadratic time  Suffix trees  On-line construction of suffix trees in linear.
Computer Algorithms Submitted by: Rishi Jethwa Suvarna Angal.
CSIT 402 Data Structures II
MCS 101: Algorithms Instructor Neelima Gupta
UNIVERSITY OF SOUTH CAROLINA College of Engineering & Information Technology Bioinformatics Algorithms and Data Structures Chapter 1: Exact String Matching.
B + -Trees. Motivation An AVL tree with N nodes is an excellent data structure for searching, indexing, etc. The Big-Oh analysis shows that most operations.
Tries1. 2 Outline and Reading Standard tries (§9.2.1) Compressed tries (§9.2.2) Suffix tries (§9.2.3)
MCS 101: Algorithms Instructor Neelima Gupta
Suffix trees. Trie A tree representing a set of strings. a b c e e f d b f e g { aeef ad bbfe bbfg c }
1 Binary Search Trees  Average case and worst case Big O for –insertion –deletion –access  Balance is important. Unbalanced trees give worse than log.
Applications of Suffix Trees Dr. Amar Mukherjee CAP 5937 – ST: Bioinformatics University of central Florida.
Suffix Tree 6 Mar MinKoo Seo. Contents  Basic Text Searching  Introduction to Suffix Tree  Suffix Trees and Exact Matching  Longest Common Substring.
Chapter 11. Chapter Summary  Introduction to trees (11.1)  Application of trees (11.2)  Tree traversal (11.3)  Spanning trees (11.4)
Advanced Data Structures Lecture 8 Mingmin Xie. Agenda Overview Trie Suffix Tree Suffix Array, LCP Construction Applications.
Nov String algorithms, Q Ukkonen’s suffix tree algorithm ● Recall McCreight’s approach: – For i = 1.. n+1, build compressed trie of {x[j..n]$
Tries 4/16/2018 8:59 AM Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and.
15-853:Algorithms in the Real World
Andrzej Ehrenfeucht, University of Colorado, Boulder
B+ Tree.
Ukkonen's suffix tree construction algorithm
String Processing.
Strings: Tries, Suffix Trees
Suffix trees.
Suffix trees and suffix arrays
Tries 2/23/2019 8:29 AM Tries 2/23/2019 8:29 AM Tries.
Suffix Trees String … any sequence of characters.
Tries 2/27/2019 5:37 PM Tries Tries.
Chap 3 String Matching 3 -.
Strings: Tries, Suffix Trees
Presentation transcript:

15-853Page : Algorithms in the Real World Suffix Trees

15-853Page 2 Exact String Matching Given a text T of length m and pattern P of length n “Quickly” find an occurrence (or all occurrences) of P in T A Naïve solution: Compare P with T[i…i+n] for all i --- O(nm) time How about O(n+m) time? (Knuth Morris Pratt) How about O(m) preprocessing time and O(n) search time?

15-853Page 3 Suffix Trees Preprocess the text in O(m) time and search in O(n) time Idea: –Construct a tree containing all suffixes of text along the paths from the root to the leaves –For search, just follow the appropriate path

15-853Page 4 Suffix Trees x ab x a c c a b a x c c c c a x b A suffix tree for the string x a b x a c Search for the string a b x

15-853Page 5 Constructing Suffix trees Naive O(m 2 ) algo For every i, add the suffix S[i.. m] to the current tree c a x b 3 a b a x c 2 x ab x a c 1

15-853Page 6 Constructing Suffix trees Naive O(m 2 ) algo For every i, add the suffix S[i.. m] to the current tree x ab x a c c a b a x c c a x b

15-853Page 7 Constructing Suffix trees Naive O(m 2 ) algo For every i, add the suffix S[i.. m] to the current tree x ab x a c c a b a x c c c a x b 3 c

15-853Page 8 Ukkonen’s linear-time algorithm We will start with an O(m 3 ) algorithm and then give a series of improvements In stage i, we construct a suffix tree T i for S[1..i] Incrementing T i to T i+1 naively takes O(i 2 ) time because we insert each of the i suffixes Thus a total of O(m 3 ) time

15-853Page 9 Going from T i to T i+1 In the j th substage of stage i+1, we insert S[j..i+1] into T i. Let S[j..i] =  Three cases –Rule 1: The path  ends on a leaf ) add S[i+1] to the label of the last edge –Rule 2: The path  continues with characters other than S[i+1] ) create a new leaf node and split the path labeled  –Rule 3: A path labeled  S[i+1] already exists ) do nothing.

15-853Page 10 Idea #1 : Suffix Links In each substage, we first search for some string in the tree and then insert a new node/edge/label Can we speed up looking for strings in the tree? In any substage, we look for a suffix of the strings searched in previous substages Idea: Put a pointer from an internal node labeled x  to the node labeled  Such a link is called a “Suffix Link”

15-853Page 11 Idea #1 : Suffix Links x ab x a c c a b a x c c c a x b c d SP 1 Add the letter d d SP 2 d SP 3 d SP 4 d SP 5 d SP 6

15-853Page 12 Suffix Links – Bounding the time Steps in each substage –Go up 1 link to the nearest internal node –Follow a suffix link to the suffix node –Follow the path for the remaining string First two steps together make up O(m) in each stage The third step follows only as many links as the length of the string S[1.. i] Thus the total time per stage is O(m)

15-853Page 13 Maintaining Suffix Links Whenever a node labeled x  is created, in the following substage a node labeled  is created. Why? When a new node is created, add a suffix link from it to the root, and if required, add a suffix link from its predecessor to it.

15-853Page 14 Going from O(m 2 ) to O(m) Size of the tree itself can be O(m 2 ) Can we even hope to do better than O(m 2 )? But notice that there are only 2m edges! – Why? Idea: represent labels of edges as intervals Can easily modify the entire process to work on intervals

15-853Page 15 Idea #2 : Getting rid of Rule 3 Recall Rule 3: A path labeled S[j.. i+1] already exists ) do nothing. If S[j.. i+1] already exists, then S[j+1.. i+1] exists too and we will again apply Rule 3 in the next substage Whenever we encounter Rule 3, this stage is over – skip to the next stage.

15-853Page 16 Idea #3 : Fast-forwarding Rules 1 & 2 Rule 1 applies whenever a path ends in a leaf Note that a leaf node always stays a leaf node – the only change is to append the new character to its edge using Rule 1 An application of Rule 2 in substage j creates a new leaf node This node is then accessed using Rule 1 in substage j in all the following stages

15-853Page 17 Idea #3 : Fast-forwarding Rules 1 & 2 Fast-forward Rule 1 and 2 –Whenever Rule 2 creates a node, instead of labeling the last edge with only one character, implicitly label it with the entire remaining suffix Each leaf edge is labeled only once!

15-853Page 18 Loop Structure Rule 2 gets applied once per j Rule 3 gets applied once per i i i+1 i+2 i+3 j j+2 j+1 rule 2 (follow suffix link) rule 3 j+2rule 3 j+2rule 3 j+2rule 2 j+3rule 3

15-853Page 19 Another Way to Think About It insert finger increment when S[j..i] not in tree (rule 2) 1)insert S[j..n] into tree by branching at S[j..i-1] 2)create suffix pointer to new node at S[j..i-1] if there is one 3)use parent suffix pointer to move finger to j+1 search finger increment when S[j..i] in tree (rule 3) j i S Invariants: 1.j is never after i 2.S[j..i-1] is always in the tree

15-853Page 20 An example x c a b b c b c x a b x a c a x x x a a a c c c Leaf edge labels are updated by using a variable to denote the end of the interval

15-853Page 21 Complexity Analysis Rule 3 is used only once in every stage For every j, Rule 1 & 2 are applied only once in the j th substage of all the stages. Each application of a rule takes O(1) steps Other overheads are O(1) per stage Total time is O(m)

15-853Page 22 Extending to multiple lists Suppose we want to match a pattern with a dictionary of k strings Concatenate all the strings (interspersed with special characters) and construct a common suffix tree Time taken = O(km) Unneccesarily complicated tree; needs special characters

15-853Page 23 Multiple lists – Better algorithm First construct a suffix tree on the first string, then insert suffixes of the second string and so on Each leaf node should store values corresponding to each string O(km) as before

15-853Page 24 Longest Common Substring Find the longest string that is a substring of both S 1 and S 2 Construct a common suffix tree for both Any node that has leaf nodes labeled by S 1 and S 2 in the subtree rooted at it gives a common substring The “deepest” such node is the required substring Can be found in linear time by a tree traversal.

15-853Page 25 Common substrings of M strings Given M strings of total length n, find for every k, the length l k of the longest string that is a substring of at least k of the strings Construct a common suffix tree For every internal node, find the number of distinctly labeled leaves in the subtree rooted at the node Report l k by a single tree traversal O(Mn) time – not linear!

15-853Page 26 Lempel-Ziv compression Recall that at each stage, we output a pair (p i, l i ) where S[p i.. p i +l i ] = S[i.. i+l i ] Find all pairs (p i,l i ) in linear time Construct a suffix tree for S Label each internal node with the minimum of labels of all leaves below it – this is the first place in S where it occurs. Call this label c v. For every i, search for the string S[i.. m] stopping just before c v ¸ i. This gives us l i and p i.