- 186 Views
- Uploaded on
- Presentation posted in: General

Theory of Algorithms: Brute Force

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Theory of Algorithms:Brute Force

James Gain and Edwin Blake

{jgain | edwin} @cs.uct.ac.za

Department of Computer Science

University of Cape Town

August - October 2004

- To introduce the brute force mind set
- To show a variety of brute-force solutions:
- Brute-Force String Matching
- Polynomial Evaluation
- Closest-Pair and Convex-Hull by Brute Force
- Exhaustive Search

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

- 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

- Problem: Find a substring in some text that matches a pattern
- Pattern: a string of m characters to search for
- Text: a (long) string of n characters to search in
- Algorithm:
- Align pattern at beginning of text
- 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

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

- Example:
- Pattern: AKA
- Text: ABRAKADABRA
- Trace: AKA
- AKA
- AKA
- AKA

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

- Efficiency:(nm)

- Problem: Find the value of polynomial p(x) = anxn+ an-1xn-1 +… + a1x1 + a0 at a point x = x0
- Algorithm:
- Efficiency?

- p 0.0
- for in down to 0 do
- power 1
- for j 1 to i do
- power power * x

- p p + a[i] * power
- return p

- for j 1 to i do

- Problem:
- 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 i1 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 j

- return index1, index2

- 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

Convex

Non-Convex

P4

P9

- 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)

P2

P8

P7

P3

P5

P1

P6

- 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 infeasibly slow
- Not as creative as some other design techniques

- Definition:
- A brute force solution to the search for an element with a special property,
- Usually among combinatorial objects such a permutations, combinations, or subsets of a set

- Method:
- Construct a way of listing all potential solutions to the problem in a systematic manner
- All solutions are eventually listed
- No solution is repeated

- Evaluate solutions one by one (disqualifying infeasible ones) keeping track of the best one found so far
- When search ends, announce the winner

- 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:

2

a

b

5

3

4

8

c

d

7

Tour Cost . abcda 2+3+7+5 = 17

abdca 2+4+7+8 = 21

acbda 8+3+4+5 = 20

acdba 8+7+4+2 = 21

adbca 5+4+3+8 = 20

adcba 5+7+3+2 = 17

- Improvements:
- Start and end at one particular city
- Remove tours that differ only in direction

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

- Problem: Given n items
- weights: 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):

- Efficiency:Ω(2n)

- Combinatorics uses Decrease (by one) and Conquer Algorithms
- Subsets: generate all 2n subsets of A = {a1, …, an}
- Divide into subsets of {a1, …, an-1} that contain an and those that don’t
- Sneaky Solution: establish a correspondence between bit strings and subsets. Bit n denotes presence (1) or absence (0) of element an
- Generate numbers from 0 to 2n-1 convert to bit strings interpret as subsets
- Examples: 000 = Ø , 010 = {a2} , 110 = {a1, a2}

- Permutations: generate all n! reorderings of {1, …, n}
- Generate all (n-1)! permutations of {1, …, n-1}
- Insert n into each possible position (starting from the right or left, alternately)
- Implemented by the Johnson-Trotter algorithm

- Satisfies Minimal-Change requirement
- Next permutation obtained by swapping two elements of previous
- Useful for updating style algorithms

- Example:
- Start: 1
- Insert 2: 12 21
- Insert 3: 123 132 312 321 231 213

- Exhaustive search algorithms run in a realistic amount of time only on very small instances
- In many cases there are much better alternatives!
- Euler circuits
- Shortest paths
- Minimum spanning tree
- Assignment problem

- In some cases exhaustive search (or variation) is the only known solution