1 unit-i brute force analysis and design of algorithms chapter 3:

17
1 UNIT-I UNIT-I BRUTE FORCE BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

Upload: harvey-lindsey

Post on 17-Jan-2018

221 views

Category:

Documents


0 download

DESCRIPTION

3 BRUTE FORCE   Brute force is a straightforward approach to solve a problem, usually directly based on the problem statement and definitions of the concepts involved.   Brute force is applicable to a very wide variety of problems.   For some important problems (e.g., sorting, searching, matrix multiplication, string matching) the brute-force approach yields reasonable algorithms of at least some practical value with no limitation on instance size.   The expense of designing a more efficient algorithm may be unjustifiable if only few instances of a problem need to be solved. Brute force can solve this with acceptable speed.   Even if too inefficient in general, a brute-force algorithm can still be useful for solving small-size instances of a problem.   A brute-force algorithm can serve an important theoretical or educational purpose.

TRANSCRIPT

Page 1: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

11

UNIT-IUNIT-I

BRUTE FORCEBRUTE FORCE

ANALYSIS AND DESIGN OF ALGORITHMS

CHAPTER 3:

Page 2: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

22

OutlineOutline Brute-Force - Selection Sort - Bubble Sort - Sequential Search - Brute-Force String Matching

Page 3: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

33

BRUTE FORCE Brute force is a straightforward approach to solve a problem,

usually directly based on the problem statement and definitions of the concepts involved.

Brute force is applicable to a very wide variety of problems.

For some important problems (e.g., sorting, searching, matrix multiplication, string matching) the brute-force approach yields reasonable algorithms of at least some practical value with no limitation on instance size.

The expense of designing a more efficient algorithm may be unjustifiable if only few instances of a problem need to be solved. Brute force can solve this with acceptable speed.

Even if too inefficient in general, a brute-force algorithm can still be useful for solving small-size instances of a problem.

A brute-force algorithm can serve an important theoretical or educational purpose.

Page 4: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

44

SELECTION SORT Scan the entire given list to find its smallest element and

exchange it with the first element, putting the smallest element in its final position in the sorted list.

Then, scan the list, starting with the second element , to find the smallest among the last n-1 elements and exchange it with the second element, putting the second smallest element in its final position.

Generally, on the ith pass through the list, the algorithm searches for the smallest item among the last n-i elements and swaps it with Ai

A0 ≤ A1 ≤ . . . ≤ Ai-1 | Ai, . . . , Amin, . . . , An-1 in their final positions the last n-i elements

After n-1 passes, the list is sorted.

Page 5: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

55

ALGORITHM SelectionSort(A[0…n-1]) //Sorts a given array by selection sort //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]

SELECTION SORT

Page 6: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

66

Example:

Input: | 89 45 68 90 29 34 17 17 | 45 68 90 29 34 89

17 29 | 68 90 45 34 89 17 29 34 | 90 45 68 89 17 29 34 45 | 90 68 89 17 29 34 45 68 | 90 89

Output: 17 29 34 45 68 89 | 90

SELECTION SORT

Page 7: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

77

Analysis of Selection Sort Algorithm

Input Size metric: Number of elements n. Basic operation: Key comparison The number of times the basic operation is

executed depends only on the array size. n-2 n-1 n-2 n-2

C(n) = ∑ ∑ 1 = ∑ [(n - 1) - (i + 1) + 1] = ∑ (n – 1 - i).

i=0 j=i+1 i=0 i=0

= n(n-1) Є Θ(n2) 2

Page 8: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

88

BUBBLE SORT Compare adjacent elements of the list and exchange them if they out of order. This is done repeatedly till the end of the list. After first pass, the largest element will be placed in the last position in the list. The next pass bubbles up the second largest element, and so on. After n-1 passes, the list is sorted. Pass i (0 ≤ i ≤ n-2) of the bubble sort can be represented by the following diagram: ? A0, . . . , Aj ↔ Aj+1, . . . , An-i-1 | An-i ≤ . . . ≤ An-1 in their final positions

Page 9: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

99

ALGORITHM BubbleSort(A[0…n-1]) //Sorts a given array by bubble sort //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 for j ← 0 to n – 2 - i do if A[j + 1] < A[j] swap A[j] and A[j

+ 1]

BUBBLE SORT

Page 10: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

1010

Example: 89 ↔ 68 45 20 68 ↔ 45 20

89 68 89 ↔ 45 20 45 68 ↔ 20

89 68 45 89 ↔ 20 45 20 68

89 68 45 20 89 PASS 1 PASS 2

45 ↔ 20 68 89 20 45 68 89 PASS 3

BUBBLE SORT

Page 11: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

1111

Analysis of Bubble Sort Algorithm Input Size metric: Number of elements n. Basic operation: Key comparison The number of times the basic operation is executed

depends only on the array size. n-2 n-2-i n-2 n-2 C(n) = ∑ ∑ 1 = ∑ [(n - 2- i ) - 0 + 1] = ∑ (n – 1 - i). i=0 j=0 i=0 i=0

= n(n-1) Є Θ(n2) 2 The number of key swaps depends on the input. Sworst(n) = C(n) = n(n-1) Є Θ(n2) 2

Page 12: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

1212

Sequential Search and Brute-Force String Matching

Sequential Search:If the search key is appended to the end of the list, the search for the key will have to be successful, and therefore a check for the list’s end on each iteration of the algorithm can be eliminated.

ALGORITHM SequentialSearch2(A[0…n], k) //Implements sequential search with a search key as a sentinel //Input: An array A of n elements and a search key K //Output: The index of the first element in A[0…n-1] whose value

is // equal to K or -1 if no such element is found A[n] ← K i ← 0 while A[i] ≠ K do i ← i + 1 if i < n return i else return -1

Page 13: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

1313

Brute-Force String Matching Given a string of n characters called the text and a string of m characters (m ≤ n) called the pattern, find a substring of the text

that matches the pattern. 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: t0 . . . ti . . . ti+j . . . ti+m-1 . . . tn-1 text T ↨ ↨ ↨ p0 . . . pj . . . pm-1 pattern P 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 of the characters match or a mismatching pair is encountered.

If a mismatch pair is encountered, then shift the pattern one position to the right and resume character comparisons, starting again with the first character of the pattern and its counterpart in the text.

Note that the last position in the text which can still be a beginning of a matching substring is n – m (provided text’s positions are indexed from 0 to n – 1).

Page 14: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

1414

ALGORITHM BruteForceStringMatch(T[0…n-1], P[0…m-1]) //Implements brute-force string matching //Input: An array T[0…n-1] of n characters representing // a text and an array P[0…m-1] of m characters // representing a pattern //Output: The index of the first character in the text that // starts a matching substring or -1 if the

search is // unsuccessful 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

Brute-Force String Matching

Page 15: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

1515

N O B O D Y _ N O T I C E D _ H I M

N O T N O T N O T N O T N O T N O T N O T N O T

FIGURE: Example of Brute-Force string matching.

Page 16: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

1616

Analysis of Brute-Force String Matching Algorithm

Input Size metric: Number of characters in the text i.e., n. Basic operation: Key comparison The number of times the basic operation is executed depends

not only on the array size but also on pattern of input. n-m m-1 n-m n-m Cworst(n) = ∑ ∑ 1 = ∑ [(m - 1) - 0 + 1] = ∑ m. i=0 j=0 i=0 i=0 n-m = m ∑ 1 = m ((n - m) – 0 + 1) = mn – m2 + m i=0 ≈ mn Є Θ(mn) Cbest(n) =Θ(m)

Caverage(n)=Θ(n)

Page 17: 1 UNIT-I BRUTE FORCE ANALYSIS AND DESIGN OF ALGORITHMS CHAPTER 3:

1717

END OF CHAPTER 3END OF CHAPTER 3