2. Algorithm Design Techniques
• Various design techniques exist:
– Classifying algorithms based on design ideas
or commonality.
– General-problem solving strategies.
Brute force
Divide-and-conquer
Decrease-and-conquer
Transform-and-conquer
Counting Algorithm
Dynamic programming
Greedy techniques
Back tracking 2Instructor: Sadia Arshid, DCS&SE
3. Brute Force
• Brute force - the simplest of the design
strategies
– Is a straightforward approach to solving a
problem, usually directly based on the
problem’s statement and definitions of the
concepts involved.
– Just do it - the brute-force strategy is easiest
to apply.
– Results in an algorithm that can be improved
with a modest amount of time.
3Instructor: Sadia Arshid, DCS&SE
4. Brute Force(Contd…)
• Brute force is important due to its wide
applicability and simplicity.
• Weakness is subpar efficiency of most
brute-force algorithms.
• Important examples:
– Selection sort, String matching, Convex-hull
problem, and Exhaustive search
4Instructor: Sadia Arshid, DCS&SE
5. Selection Sort
• Scan the list repeatedly to find the
elements, one at a time, in an
nondecreasing order.
– On the ith pass through the list, search for the
smallest item among the last n - i elements
and swap it with A[i]. After n - 1 passes, the
list is sorted.
5Instructor: Sadia Arshid, DCS&SE
6. Algorithm SelectionSort (A[0..n-1])
//Sorts a given array
//Input: An array A[0..n-1] of orderable elements
//Output: Array A[0..n-1] sorted in ascending order
for i ← 0 to n - 2 do
min ← i
for j ← i + 1 to n - 1 do
if A[j] < A[min]
min ← j
swap A[i] and A[min]
6Instructor: Sadia Arshid, DCS&SE
7. • Input Size: number of Elements in Array
• Basic Operation: Comparison of array
Elements A[j] < A[min]
• Case Complexity: Every Case
7Instructor: Sadia Arshid, DCS&SE
9. Brute-Force String Matching
• Align the pattern against the first m characters of
the text and start matching the corresponding
pairs of characters from left to right until all m
pairs match. But, if a mismatching pair is found,
then the pattern is shift one position to the right
and character comparisons are resumed.
• The goal is to find i - the index of the leftmost
character of the first matching substring in the
text
– such that ti = p0,….ti+j = pj, …..ti+m-1 = pm-1
9Instructor: Sadia Arshid, DCS&SE
10. Algorithm BruteForceStringMatching (T[0..n - 1], P[0..m - 1])
//Implements string matching
//Input: An array T[0..n - 1] of n characters representing a text
// an array P[0..m - 1] of m characters representing a pattern
//Output: The position of the first character in the text that starts the first
// matching substring if the search is successful and -1 otherwise.
for i ← 0 to n - m do
j ← 0
while j < m and P[j] = T[i + j] do
j ← j + 1
if j = m return i
return -1
10Instructor: Sadia Arshid, DCS&SE