0% found this document useful (0 votes)
5 views

Module 06. String Algorithms Lecture 1 - 2

Uploaded by

Vishal Gangwar
Copyright
© © All Rights Reserved
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
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