You are on page 1of 26

Design and Analysis of Algorithms

Dr. Mohamed Ahmed Mohamed Ali

University of Khartoum
Faculty of Mathematical Sciences

Design and Analysis of Algorithms


15/3/2021 1
Brute Force and Exhaustive Search
Brute Force
• Science is as far removed from brute force as this sword from
a crowbar.
—Edward Lytton (1803–1873), Leila, Book II, Chapter I

• Doing a thing well is often a waste of time.


—Robert Byrne, a master pool and billiards player and a writer

Design and Analysis of Algorithms


15/3/2021 2
Brute Force and Exhaustive Search
Brute Force
A straightforward approach usually based on problem statement and defi-
nitions
Examples:
1. Computing an (a > 0, n a nonnegative integer)

2.Computing n!

3. Multiply two n by n matrices

4.Selection sort

5.Sequential search

Design and Analysis of Algorithms Brute


15/3/2021 3
Force and Exhaustive Search
Selection Sort and Bubble Sort
• Selection Sort

– Efficiency?
Design and Analysis of Algorithms Brute
15/3/2021 4
Force and Exhaustive Search
Selection Sort and Bubble Sort
• Bubble Sort

– Efficiency?
Design and Analysis of Algorithms Brute
15/3/2021 5
Force and Exhaustive Search
Sequential Search
• Sequential Search

– Efficiency?
Design and Analysis of Algorithms
15/3/2021 6
Brute Force and Exhaustive Search
String Matching
• pattern: a string of m characters to search for
• text: a (long) string of n characters to search in

• Brute force algorithm:


1. Align pattern at beginning of text
2. moving from 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.

Design and Analysis of Algorithms


15/3/2021 7
Brute Force and Exhaustive Search
String Matching

Design and Analysis of Algorithms


15/3/2021 8
Brute Force and Exhaustive Search
Brute Force String Matching – Examples:
• Pattern: 001011
• Text: 10010101101001100101111010

• Pattern: happy
• Text: It is never too late to have a happy childhood.

Number of comparisons?

Efficiency?

Design and Analysis of Algorithms


15/3/2021 9
Brute Force and Exhaustive Search
Brute Force Strengths and Weaknesses
• Strengths:
– wide applicability
– simplicity
– yields reasonable algorithms for some important problems
• searching
• string matching
• matrix multiplication
– yields standard algorithms for simple computational tasks
• sum/product of n numbers
• finding max/min in a list
• Weaknesses:
– rarely yields efficient algorithms
– some brute force algorithms unacceptably slow
– not as constructive/creative as some other design techniques

Design and Analysis of Algorithms Brute


15/3/2021 10
Force and Exhaustive Search
Exhaustive Search
• A brute force solution to a problem involving search for an element with a special
property, usually among combinatorial objects such a permutations, combina-
tions, 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, perhaps disqualifying infeasible ones and keep-
ing track of the best one found so far
– When search ends, announce the winner

Design and Analysis of Algorithms


15/3/2021 11
Brute Force and Exhaustive Search
Example 1: Traveling Salesman 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
3
8 4
5

c 7 d

Design and Analysis of Algorithms


15/3/2021 12
Brute Force and Exhaustive Search
Traveling 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 = 17

• Efficiency?
Design and Analysis of Algorithms
15/3/2021 13
Brute Force and Exhaustive Search
Example 2: Knapsack 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:
item weight value Knapsack capacity W=16
1 2 $20
2 5 $30
3 10 $50
4 5 $10

Design and Analysis of Algorithms


15/3/2021 14
Brute Force and Exhaustive Search
Knapsack by Exhaustive Search
Subset Total weight Total value
{1} 2 $20
{2} 5 $30 Efficiency?
{3} 10 $50
{4} 5 $10
{1,2} 7 $50
{1,3} 12 $70
{1,4} 7 $30
{2,3} 15 $80
{2,4} 10 $40
{3,4} 15 $60
{1,2,3} 17 not feasible
{1,2,4} 12 $60
{1,3,4} 17 not feasible
{2,3,4} 20 not feasible
{1,2,3,4} 22 not feasible

Design and Analysis of Algorithms


15/3/2021 15
Brute Force and Exhaustive Search
Assignment Problem
There are n people who need to be assigned to execute n jobs, one person
per job.
(That is, each person is assigned to exactly one job and each job is as-
signed to exactly one person.)
Problem: find the minimum total cost.

Design and Analysis of Algorithms


15/3/2021 16
Brute Force and Exhaustive Search
Assignment Problem

Design and Analysis of Algorithms


15/3/2021 17
Brute Force and Exhaustive Search
Assignment Problem

Design and Analysis of Algorithms


15/3/2021 18
Brute Force and Exhaustive Search
Depth-First Search & Breadth-First Search
• Algorithms have proved to be very useful for many applications involv-
ing graphs in artificial intelligence and operations research.

• Efficient investigation of fundamental properties of graphs such as


connectivity and cycle presence(acyclicity).

Design and Analysis of Algorithms


15/3/2021 19
Brute Force and Exhaustive Search
Types of Edges
• Tree edges: edges to a new unvisited vertex

• Back edges: edge leading to a previously visited vertex

• Cross edges: edge leading to a previously visited vertex other than its
immediate predecessor

Design and Analysis of Algorithms


15/3/2021 20
Brute Force and Exhaustive Search
Depth-First Search

Design and Analysis of Algorithms


15/3/2021 21
Brute Force and Exhaustive Search
Breadth-First Search

Design and Analysis of Algorithms


15/3/2021 22
Brute Force and Exhaustive Search
Breadth-First Search
• BFS can be used for finding a path with the fewest number of edges between two
given vertices.

Design and Analysis of Algorithms


15/3/2021 23
Brute Force and Exhaustive Search
Comparison: DFS vs BFS

Design and Analysis of Algorithms


15/3/2021 24
Brute Force and Exhaustive Search
Final Comments
• Brute force is a straightforward approach to solving a problem.

• The principal strengths of the brute-force approach are wide applicability and simplicity; its principal
weakness is the subpar efficiency of most brute-force algorithms.

• Exhaustive search is a brute-force approach to combinatorial problems.


• Exhaustive search algorithms run in a realistic amount of time only on very small instances

• In many cases there are much better alternatives!
– shortest paths
– minimum spanning tree

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

Design and Analysis of Algorithms


15/3/2021 25
Brute Force and Exhaustive Search
END

You might also like