100% found this document useful (1 vote)
126 views

Lecture 37 String Matching

The document discusses different string matching algorithms, beginning with a definition of string matching as finding a substring in a text. It then describes the naive/standard string matching algorithm and provides an example. Finally, it introduces the finite automata string matching algorithm, explaining how it uses states and transitions to efficiently search for patterns in a text.

Uploaded by

Ritik chaudhary
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
100% found this document useful (1 vote)
126 views

Lecture 37 String Matching

The document discusses different string matching algorithms, beginning with a definition of string matching as finding a substring in a text. It then describes the naive/standard string matching algorithm and provides an example. Finally, it introduces the finite automata string matching algorithm, explaining how it uses states and transitions to efficiently search for patterns in a text.

Uploaded by

Ritik chaudhary
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/ 12

DR.

APJ ABDUL KALAM TECHNICAL UNIVERSITY

Branch - CSE
Design and Analysis of Algorithms
Lecture – 37

String Matching Algorithms: Naïve String Matching


and Finite Automata String Matching
By

Mr. Prabhat Singh


Assistant Professor
Department of Computer Science & Engineering
ABES Engineering College, Ghaziabad
Basic Definition of String Matching
String Matching Algorithm is also called "String Searching Algorithm."

String Matching Algorithms: Given a text array, T [1.....n], of n character and a


pattern array, P [1......m], of m characters. The problems are to find an integer s,
called valid shift where 0 ≤ s < n-m and T [s+1......s + m] = P [1......m].
In other words, to find even if P in T, i.e., where P is a substring of T. The item of P
and T are character drawn from some finite alphabet such as {0, 1} or {A, B .....Z, a,
b..... z}.
Given a string T [1......n], the substrings are represented as T [i......j] for some 0≤i ≤
j≤n-1, the string formed by the characters in T from index i to index j, inclusive. This
process that a string is a substring of itself (take i = 0 and j =m).
Different Types of String Matching Algorithms
Algorithms used for String Matching:
There are different types of method is used to finding the string:
• The Naive String Matching Algorithm
• Finite Automata
• The Rabin-Karp-Algorithm
• The Knuth-Morris-Pratt Algorithm
• The Boyer-Moore Algorithm

String Matching Algorithm: Given a Text and a Pattern, we have to search a


pattern in a text and return the number of valid shift after which pattern occurs in a
text.
Naïve or Standard String Matching Algorithm:
Naïve or Standard Matching Algorithms: Naïve approach tests all the possible
placement of Pattern P [1.......m] relative to text T [1......n]. We try shift s = 0, 1.......n-
m, successively and for each shift s. Compare T [s+1.......s + m] to P [1......m].
NAIVE-STRING-MATCHER (T, P)
1. n ← length [T]
2. m ← length [P]
3. for s ← 0 to n -m
4. do if P [1.....m] = T [s + 1....s + m]
5. then print "Pattern occurs with shift" s

Analysis: This for loop from 3 to 5 executes for n-m + 1(we need at least m characters
at the end) times and in iteration we are doing m comparisons.
So the total complexity is O (n-m+1)m.
Example on Naïve String Matching Algorithm:
Let T = 1011101110 & P = 111 . Find valid Shift using Naïve String Matching
Algorithm.
Example on Naïve String Matching Algorithm:
Example on Naïve String Matching Algorithm:
Finite Automata String Matching Algorithm:
Finite Automata:
A finite automaton M is a 5-tuple (Q, q0,A,∑δ), where
• Q is a finite set of states,
• q0 ∈ Q is the start state,
• A ⊆ Q is a notable set of accepting states,
• ∑ is a finite input alphabet,
• δ is a function from Q x ∑ into Q called the transition function of M.
The finite automaton starts in state q0 and reads the characters of its input string
one at a time. If the automaton is in state q and reads input character a, it moves
from state q to state δ (q, a).
Whenever its current state q is a member of A, the machine M has accepted the
string read so far. An input that is not allowed is rejected.
Finite Automata String Matching Algorithm:
FINITE- AUTOMATON-MATCHER (T,δ, m):
1. n ← length [T]
2. q ← 0
3. For i ← 1 to n
4. do q ← δ (q, T[i])
5. If q =m
6. then s ←i - m
7. Print "Pattern occurs with shift s" s

The primary loop structure of FINITE- AUTOMATON-MATCHER implies that its


running time on a text string of length n is O (n).
Example on Finite Automata String Matching:
Example: Suppose a finite automaton which accepts even number of a's where ∑ =
{a, b, c}. Number of a’s should be greater than zero.
Example on Finite Automata String Matching:
THANK YOU

You might also like