You are on page 1of 16

King Fahd University of Petroleum & Minerals

Information & Computer Science Department

ICS 353: Design and Analysis of Algorithms

Backtracking

ICS 353: Design and Analysis of Algorithms

Reading Assignment
M. Alsuwaiyel, Introduction to Algorithms:
Design Techniques and Analysis, World
Scientific Publishing Co., Inc. 1999.
Chapter 13, Sections 1, 2 and 4.

Backtracking

ICS 353: Design and Analysis of Algorithms

Backtracking

Coping with Hard Problems


There are three useful methodologies that could be used to
cope with problems having no efficient algorithm to solve:
A methodic examination of the implicit state space induced by the
problem instance under study.
suitable for problems that exhibit good average time complexity.

A probabilistic notion of accuracy where a solution is a simple


decision maker or test that can accurately perform one task (either
passing or failing the alternative) and not say much about the
complementary option. An iteration through this test will enable the
construction of the solution or the increase in the confidence level in
the solution to the desired degree.
Obtain an approximate solution
Only some classes of hard problems admit such polynomial time
approximations.

Backtracking belongs to the first category.

ICS 353: Design and Analysis of Algorithms

Backtracking

Backtracking
A systematic technique of searching
To reduce the search space
Can be considered as an organized exhaustive
search

ICS 353: Design and Analysis of Algorithms

Backtracking

3-Coloring Problem
Optimization Problem
Input: G = (V, E), an undirected graph with n vertices and
m edges.
Output: A 3-coloring of G, if possible.

A coloring can be represented as an n-tuple (c1,


c2, ..., cn)
The number of different possible colorings for a
graph is ...........
These possibilities can be represented as a complete
ternary tree

ICS 353: Design and Analysis of Algorithms

3-Coloring: Search Tree

Search tree of all possible colorings of


a graph with 4 vertices
(When could this be for a graph
with 5 vertices?)

Backtracking

ICS 353: Design and Analysis of Algorithms

Example

Backtracking

ICS 353: Design and Analysis of Algorithms

Backtracking

Example
In the example
Nodes are generated in a depth-first search
manner
No need to store the whole search tree, just the
current active path
What is the time complexity of the algorithm in
the worst case

ICS 353: Design and Analysis of Algorithms

Algorithm 3-ColorRec

Backtracking

ICS 353: Design and Analysis of Algorithms

10

Algorithm 3-ColorIter

Backtracking

ICS 353: Design and Analysis of Algorithms

11

Backtracking

The General Backtracking Method


Assume that the solution is of the form (x1, x2,
..., xi) where 0 i n and n is a constant that
depends on the problem formulation.
Here, the solution is assumed to satisfy certain
constraints.
i in the case of the 3-coloring problem is fixed.
i may vary from one solution to another.

ICS 353: Design and Analysis of Algorithms

12

Backtracking

The General Backtracking Method: Example


Consider the following version of the Partition
Problem
Input: X = {x1, x2, ..., xn} a set of n integers,
and an integer y.
Output: Find a subset Y X such that the sum
of its elements is equal to y.
For example, consider X = {10, 20, 30, 40, 50, 60}
and y = 50. There is more than one solution to this
problem: What are they and what is their length?

ICS 353: Design and Analysis of Algorithms

Backtracking

The General Backtracking Algorithm (1)

Each xi in the solution vector belongs to a finite linearly


ordered set Xi.
The backtracking algorithm considers the elements of the
Cartesian product X1 X2 ... Xn in lexicographic order.

13

Initially starting with the empty vector.

Suppose that the algorithm has detected the partial


solution (x1, x2, ..., xj). It then considers the vector v = (x1,
x2, ..., xj, xj+1). We have the following cases:
1. If v represents a final solution to the problem, the algorithm
records it as a solution and either terminates in case only one
solution is desired or continues to find other solutions.
2. (The advance Step): If v represents a partial solution, the
algorithm advances by choosing the least element in the set
Xj+2.

ICS 353: Design and Analysis of Algorithms

14

Backtracking

The General Backtracking Algorithm (2)


3. If v is neither a final nor a partial solution, we have
two sub-cases:
a.

If there are still more elements to choose from in the set


Xj+1, the algorithm sets xj+1 to the next member of Xj+1.

b. (The Backtrack Step): If there are no more elements to


choose from in the set Xj+1, the algorithm backtracks by
setting xj to the next member of Xj . If again there are no
more elements to choose from in the set Xj , the algorithm
backtracks by setting xj1 to the next member of Xj1, and so
on.

ICS 353: Design and Analysis of Algorithms

15

BacktrackRec

Backtracking

ICS 353: Design and Analysis of Algorithms

16

BacktrackIter

Backtracking

You might also like