Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
5 views

Module 06. String Algorithms Lecture 1 - 2

Uploaded by

Vishal Gangwar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Module 06. String Algorithms Lecture 1 - 2

Uploaded by

Vishal Gangwar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

Module 06:

String Algorithms
Module Outline:
• Naive String Matching
• Finite Automata Matcher
• Rabin Karp matching algorithm
• Knuth Morris Pratt
• Tries
• Suffix Tree
• Suffix Array
Introduction

 Some real world applications:


• Searching particular patterns in DNA sequences.
• In internet search engines to find Web pages relevant to input queries.
• Electronic surveillance
Example:
Terminology:
Naive String Matching
Problem: Given a String Text[0..n-1] and a String Pattern[0..m-1], find
all occurrences of Pattern[] in Text[]. You may assume that n > m.
Examples:
Input1: Text[] = “TODAY IS A GOOD DAY”, Pattern[] = “GOOD”
Output1: Pattern found at index 11
Input2: Text[] = “A FRIEND IN NEED IS A FRIEND INDEED”, Pattern[] =
“FRIEND”
Output2: Pattern found at index 2, Pattern found at index 22
Naive String Matching
Algorithm:
Naive_String_Matcher(pattern, text) {
int M = strlen(pattern); int N = strlen(text);
for (int s = 0; s <= N - M; s++) {
for (int j = 0; j < M; j++)
if (text [s + j] != pattern[j])
break;
if (j == M)
printf("Pattern found at index %d \n", s);
}
}
Time Complexity: O(N*M)
Example:
Finite Automata Matcher
Example:
Basic Idea:
Example:
Algorithm for FA string matching:
Computation of transition function:
Running Time of
Compute-Transition-Function

Running Time: O(m3 ||)


Outer loop: m ||
Inner loop: runs at most m+1
Pk  Pqa: requires up to m comparisons
Improving Running Time
Much faster procedures for computing the transition function exist. The
time required to compute P can be improved to O(m||).
The time it takes to find the string is linear: O(n).

This brings the total runtime to:


O(n + m||)
Not bad if your string is fairly small relative to the text you are searching in.
Exercise:
Given pattern P=abba, Σ={a,b}, construct its automaton.
Show how the automaton works for text T[1..12]=baabbabbaaba.

You might also like