31
Theory of Algorithms: Brute Force Michelle Kuttel and Sonia Berman (mkuttel | [email protected])

Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

  • Upload
    ngonhi

  • View
    233

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Theory of Algorithms:Brute Force

Michelle Kuttel and Sonia Berman

(mkuttel | [email protected])

Page 2: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Objectives

To introduce the brute-force mind set

To show a variety of brute-force solutions:Brute-Force String Matching

Polynomial Evaluation

Closest-Pair

Convex-Hull

Exhaustive Search

To discuss the strengths and weaknesses of a brute-force strategy

Page 3: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force

A straightforward approach usually directly based on problem statement and definitions

Motto: Just do it!

Crude but often effective

Examples already encountered:Computing an (a > 0, n a nonnegative integer) by multiplying a together n times

Computation of n! using recursion

Multiplying two n by n matrices

Selection sort

Page 4: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute-Force Sorting

What is the most straight-forward approach to sorting?

selection sort?• (n-1)n/2 O(n2) comparisons• however, number of key swaps is n-1 O(n)

Bubble sort?• (n-1)n/2 - O(n2) comparisons• number of key swaps depends on input• Worst case?

4

Page 5: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force String Matching

Problem: Find a substring in some text that matches a patternPattern: a string of m characters to search forText: a (long) string of n characters to search in

1. Align pattern at beginning of text2. Moving left to right, compare each character of pattern

to the corresponding character in text UNTIL• All characters are found to match (successful search);

or• A mismatch is detected

3. WHILE pattern is not found and the text is not yet exhausted, realign pattern one position to the right and repeat step 2.

Page 6: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute-Force String Matching

Example:Pattern: AKA Text: ABRAKADABRATrace: AKA

AKA AKA AKA

Number of Comparisons: In the worst case, m comparisons before shifting, for each of n-m+1 tries

Efficiency: Θ(nm)

Page 7: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Polynomial Evaluation

Problem: Find the value of polynomial p(x) = anxn + an-1xn-1 +… + a1x1 + a0

at a point x = x0

Algorithm:

Efficiency? Improvements?

Page 8: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Polynomial Evaluation

Problem: Find the value of polynomial p(x) = anxn + an-1xn-1 +… + a1x1 + a0

at a point x = x0

Algorithm:

Efficiency? Improvements?

p ← 0.0for i ← n down to 0 do power ← 1 for j ← 1 to i do power ← power * x p ← p + a[i] * powerreturn p

Page 9: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest Pair

Page 10: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest PairProblem:

Find the two points that are closest together in a set of n 2-D points P1 = (x1, y1), …, Pn = (xn, yn)

Using Cartesian coordinates and Euclidean distance

Page 11: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest PairProblem:

Find the two points that are closest together in a set of n 2-D points P1 = (x1, y1), …, Pn = (xn, yn)

Using Cartesian coordinates and Euclidean distance

Algorithm:

Page 12: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest PairProblem:

Find the two points that are closest together in a set of n 2-D points P1 = (x1, y1), …, Pn = (xn, yn)

Using Cartesian coordinates and Euclidean distance

Algorithm:

Page 13: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest PairProblem:

Find the two points that are closest together in a set of n 2-D points P1 = (x1, y1), …, Pn = (xn, yn)

Using Cartesian coordinates and Euclidean distance

Algorithm:

Page 14: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest PairProblem:

Find the two points that are closest together in a set of n 2-D points P1 = (x1, y1), …, Pn = (xn, yn)

Using Cartesian coordinates and Euclidean distance

Algorithm:

Page 15: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest PairProblem:

Find the two points that are closest together in a set of n 2-D points P1 = (x1, y1), …, Pn = (xn, yn)

Using Cartesian coordinates and Euclidean distance

Algorithm:

Page 16: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest PairProblem:

Find the two points that are closest together in a set of n 2-D points P1 = (x1, y1), …, Pn = (xn, yn)

Using Cartesian coordinates and Euclidean distance

Algorithm:

Page 17: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest PairProblem:

Find the two points that are closest together in a set of n 2-D points P1 = (x1, y1), …, Pn = (xn, yn)

Using Cartesian coordinates and Euclidean distance

Algorithm:

Efficiency: Θ(n2)

Page 18: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Closest PairProblem:

Find the two points that are closest together in a set of n 2-D points P1 = (x1, y1), …, Pn = (xn, yn)

Using Cartesian coordinates and Euclidean distance

Algorithm:

Efficiency: Θ(n2)

dmin ← ∞for i ← 1 to n-1 do for j ← i+1 to n do d ← sqrt((xi - xj)2 + (yi - yj)2) if d < dmin dmin ← d; index1 ← i; index2 ← jreturn index1, index2

Page 19: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

The Convex Hull Problem

Problem: Find the convex hull enclosing n 2-D points

Convex Hull: If S is a set of points then the Convex Hull of S is the smallest convex set containing S

Convex Set: A set of points in the plane is convex if for any two points P and Q, the line segment joining P and Q belongs to the set

ConvexNon-Convex

Page 20: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

The Convex Hull Problem

Problem: Find the convex hull enclosing n 2-D points

Convex Hull: If S is a set of points then the Convex Hull of S is the smallest convex set containing S

Convex Set: A set of points in the plane is convex if for any two points P and Q, the line segment joining P and Q belongs to the set

ConvexNon-Convex

Page 21: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

The Convex Hull Problem

Problem: Find the convex hull enclosing n 2-D points

Convex Hull: If S is a set of points then the Convex Hull of S is the smallest convex set containing S

Convex Set: A set of points in the plane is convex if for any two points P and Q, the line segment joining P and Q belongs to the set

ConvexNon-Convex

Page 22: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

The Convex Hull Problem

Problem: Find the convex hull enclosing n 2-D points

Convex Hull: If S is a set of points then the Convex Hull of S is the smallest convex set containing S

Convex Set: A set of points in the plane is convex if for any two points P and Q, the line segment joining P and Q belongs to the set

ConvexNon-Convex

Page 23: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

The Convex Hull Problem

Problem: Find the convex hull enclosing n 2-D points

Convex Hull: If S is a set of points then the Convex Hull of S is the smallest convex set containing S

Convex Set: A set of points in the plane is convex if for any two points P and Q, the line segment joining P and Q belongs to the set

ConvexNon-Convex

Page 24: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Brute Force Convex Hull

Algorithm: For each pair of points p1 and p2

Determine whether all other points lie to the same side of the straight line through p1 and p2

Efficiency: for n(n-1)/2 point pairs, check sidedness of (n-2) others O(n3)

P1

P2

P3

P4

P5

P6

P7P8

P9

Page 25: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Pros and Cons of Brute Force

Strengths:Wide applicability

Simplicity

Yields reasonable algorithms for some important problems and standard algorithms for simple computational tasks

A good yardstick for better algorithms

Sometimes doing better is not worth the bother

Weaknesses:Rarely produces efficient algorithms

Some brute force algorithms are infeasibly slow

Not as creative as some other design techniques

Page 26: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Exhaustive Search

Definition:A brute force solution to the search for an element with a special propertyUsually among combinatorial objects such a permutations or subsetssuggests generating each and every element of the problem’s domain

Method:1. Construct a way of listing all potential solutions to the

problem in a systematic manner• All solutions are eventually listed• No solution is repeated

2. Evaluate solutions one by one (disqualifying infeasible ones) keeping track of the best one found so far

3. When search ends, announce the winner

Page 27: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Travelling Salesman Problem

Problem:Given n cities with known distances between each pair

Find the shortest tour that passes through all the cities exactly once before returning to the starting city

Alternatively: Find shortest Hamiltonian Circuit in a weighted connected graph

Example: a b

c d

8

2

7

53 4

Page 28: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Travelling Salesman by Exhaustive Search

Tour Cost . a→b→c→d→a 2+3+7+5 = 17

a→b→d→c→a 2+4+7+8 = 21

a→c→b→d→a 8+3+4+5 = 20

a→c→d→b→a 8+7+4+2 = 21 a→d→b→c→a 5+4+3+8 = 20

a→d→c→b→a 5+7+3+2 = 17Improvements:

Start and end at one particular cityRemove tours that differ only in direction

Efficiency: (n-1)!/2 = O(n!)

Page 29: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Knapsack Problem

Problem: Given n itemsweights: w1 , w2 … wn

values: v1 , v2 … vn

a knapsack of capacity W Find the most valuable subset of the items that fit into the knapsack

Example (W = 16): Item Weight Value

1 2kg R200

2 5kg R300

3 10kg R500

4 5kg R100

Page 30: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Knapsack by Exhaustive Search

Efficiency: Ω(2n)

Subset Total Wgt

Total Value

1 2 kg R200

2 5 kg R300

3 10 kg R500

4 5 kg R100

1,2 7 kg R500

1,3 12 kg R700

1,4 7 kg R300

2,3 15 kg R800

Subset Total Wgt

Total Value

2,4 10 kg R400

3,4 15 kg R600

1,2,3 17 kg n/a

1,2,4 12 kg R600

1,3,4 17 kg n/a

2,3,4 20 kg n/a

1,2,3,4 22 kg n/a

Page 31: Theory of Algorithms: Brute Force - perisastry.com · Objectives To introduce the brute-force mind set To show a variety of brute-force solutions: Brute-Force String Matching Polynomial

Final Comments on Exhaustive Search

Exhaustive search algorithms run in a realistic amount of time only on very small instances In many cases there are much better alternatives! In some cases exhaustive search (or variation) is the only known solutionand parallel solutions can speed it up!