Daa Unit2 CF
Daa Unit2 CF
10 4 6
UNIT II:
2
Disjoint set operations, union and find algorithms, AND/OR graphs, Connected Components and 1
Spanning trees, Bi-connected components.
Greedy method: General method, applications- Job sequencing with deadlines, Knapsack
9 problem,
Spanning trees, Minimum cost spanning trees, Single source shortest path problem.
5
1
/ \
7 8 9 2
In this representation each set is represented as a tree. Nodes are linked from the child
toparent rather than usual method of linking from parent to child.
UNION operation:
Union(i,j) requires two tree with roots i and j be joined. S1 U S2 isobtained by
making any one of the sets as sub tree of other.
1
5
9 5
7 8 1
2 1 7
8
Simple Algorithm for Union:
Algorithm Union(i,j)
{
//replace the disjoint sets with roots i and j, I not equal to j by theirunion Integer
i,j;
P[j] :=i;
}
Example:
Implement following sequence of operations Union(1,3),Union(2,5),Union(1,2)
Solution:
Initially parent array contains zeros.
0 0 0 0 0 0
1 2 3 4 5 6
0 0 1 0 0 0
1 2 3 4 5 6
0 0 1 0 2 0
1 2 3 4 5 6
0 1 1 0 2 0
1 2 3 4 5 6
3 2
5
Process the following sequence of union operations Union(1,2),Union(2,3) Union(n-1,n)
Degenerate Tree:
( n-1 )
\ /
{
j:=i;
while(p[j]>0) do
j:=p[j]; return j;
}
Find Operation: Find(i) implies that it finds the root node of ith node, in other words it
returns the name of the set i.
3
Find(1)=0
Find(3)=1, since its parent is 1. (i.e, root is 1)
Example:
Considering
3
2
5
Array Representation
P[i] 0 1 1 2
i 1 2 3 5
Find( 5 ) = 1
Find( 2 ) = 1
Find( 3 ) = 1
The root node represents all the nodes in the tree. Time Complexity of 、n’ find
operations is O(n 2 ) .
To improve the performance of union and find algorithms by avoiding the
creation of degenerate tree. To accomplish this, we use weighting rule for
Union(i,j).
Weighting Rule for Union(i,j)
1,2) 3 n
Union(
1
2
n
1 4
2
3
:
:
:
Union(1,n)
2 n
3 ·
Collapsing Rule for Find(i)
Spanning Trees:
A spanning tree is a subset of Graph G, which has all the vertices covered with minimum
possible number of edges. Hence, a spanning tree does not have cycles and it cannot be
disconnected..
By this definition, we can draw a conclusion that every connected and undirected Graph G has
at least one spanning tree. A disconnected graph does not have any spanning tree, as it cannot
be spanned to all its vertices.
We found three spanning trees off one complete graph. A complete undirected graph can
have maximum nn-2number of spanning trees, where n is the number of nodes. In the above
addressed example, n is 3, hence 33-2 = 3spanning trees are possible.
GeneralPropertiesofSpanningTree
We now understand that one graph can have more than one spanning tree. Following are a
few properties of the spanning tree connected to graph G −
• A connected graph G can have more than one spanning tree.
• All possible spanning trees of graph G, have the same number of edges and vertices.
• Removing one edge from the spanning tree will make the graph disconnected, i.e. the spanning
tree is minimally connected.
• Adding one edge to the spanning tree will create a circuit or loop, i.e. the spanning tree is
maximally acyclic.
MathematicalPropertiesofSpanningTree
• Spanning tree has n-1 edges, where n is the number of nodes (vertices).
• From a complete graph, by removing maximum e - n + 1 edges, we can construct a spanning tree.
Thus, we can conclude that spanning trees are a subset of connected Graph G and
disconnected graphs do not have spanning tree.
ApplicationofSpanningTree
Spanning tree is basically used to find a minimum path to connect all nodes in a graph.
Common application of spanning trees are −
• Civil Network Planning
• Cluster Analysis
AND/OR GRAPH:
And/or graph is a specialization of hypergraph which connects nodes by sets of arcs rather
than by a single arcs. A hypergraph is defined as follows:
A hypergraph consists of: N, a set of nodes,
H, a set of hyperarcs defined by ordered pairs, in which the first implement of the pair is a node
of N and the second implement is the subset of N.
An ordinary graph is a special case of hypergraph in which all the sets of decendent nodes have
a cardinality of 1.
Hyperarcs also known as K-connectors, where K is the cardinality of the set of decendent nodes.
If K = 1, the descendent may be thought of as an OR nodes. If K > 1, the elements of the set
of decendents may be thought of as AND nodes. In this case the connector is drawn with
individual edges from the parent node to each of the decendent nodes; these individual edges are
then joined with a curved link. And/or graph for the expression P and Q -> R is follows:
The K-connector is represented as a fan of arrows with a single tie is shown above. The
and/or graphs consists of nodes labelled by global databases. Nodes labelled by compound
databases have sets of successor nodes. These successor nodes are called AND nodes, in
order to process the compound database to termination, all the compound databases must be
processed to termination. For example consider, consider a boy who collects stamps (M). He has
for the purpose ofexchange a winning conker (C), a bat (B) and a small toy animal (A). In his
class there are friends who are also keen collectors of different items and will make the following
exchanges.
4. 1 small toy animal (A) for two bats (B, B) and astamp (M).
The problem is how to carry out the exchanges so that all his exchangable items are converted
into stamps (M). This task can be expressed more briefly as:
1. Initial state = (C, B, A)
2. Transformation rules:
a. If C then (D, S)
b. If C then (B, M)
c. If B then (M, M)
1. The components can either be arranged in some fixed order at the time they
are generated (or).
The more flexible system is to reorder dynamically as the processing unfolds. It can
be represented by and/or graph. The solution to the exchange problem will be:
Swap conker for a bat and a stamp, then exchange this bat for two stamps. Swap
hisown bat for two more stamps, and finally swap the small toy animal for two bats and a
stamp. The two bats can be exchanged for two stamps.
The previous exchange problem, when implemented as an and/or graph looks as follows:
Example 1:
:>
component, consisting of the whole graph.
Biconnecte
o d
Component
s
Articulation Point
Bridge
DESIGN AND ANALYSIS OF ALGORITHM AY:2023-24
L (u) = min {DFN (u), min {L (w) l w is a child of u}, min {DFN
(w) | (u, w) is a back edge}}.
L (u) is the lowest depth first number that can be reached from ‘u’ using a path
of descendents followed by at most one back edge. It follows that, If ‘u’ is not the root
then ‘u’ is an articulation point iff ‘u’ has a child ‘w’ such that:
1
5
9 5
7 8 1
2 1 7
8
Simple Algorithm for Union:
Algorithm Union(i,j)
{
//replace the disjoint sets with roots i and j, I not equal to j by theirunion Integer
i,j;
P[j] :=i;
}
Example:
Implement following sequence of operations Union(1,3),Union(2,5),Union(1,2)
Solution:
Initially parent array contains zeros.
0 0 0 0 0 0
1 2 3 4 5 6
0 0 1 0 0 0
1 2 3 4 5 6
0 0 1 0 2 0
1 2 3 4 5 6
0 1 1 0 2 0
1 2 3 4 5 6
3 2
5
Process the following sequence of union operations Union(1,2),Union(2,3) Union(n-1,n)
Degenerate Tree:
( n-1 )
\ /
{
j:=i;
while(p[j]>0) do
j:=p[j]; return j;
}
Find Operation: Find(i) implies that it finds the root node of ith node, in other words it
returns the name of the set i.
3
Find(1)=0
Find(3)=1, since its parent is 1. (i.e, root is 1)
Example:
Considering
3
2
5
Array Representation
P[i] 0 1 1 2
i 1 2 3 5
Find( 5 ) = 1
Find( 2 ) = 1
Find( 3 ) = 1
The root node represents all the nodes in the tree. Time Complexity of 、n’ find
operations is O(n 2 ) .
To improve the performance of union and find algorithms by avoiding the
creation of degenerate tree. To accomplish this, we use weighting rule for
Union(i,j).
Weighting Rule for Union(i,j)
Union(1,2)
3 n
1
2
Union(1,3)
n
1 4
2
3
:
:
:
Union(1,n)
2 n
3 ·
Collapsing Rule for Find(i)
Spanning Trees:
A spanning tree is a subset of Graph G, which has all the vertices covered with minimum
possible number of edges. Hence, a spanning tree does not have cycles and it cannot be
disconnected..
By this definition, we can draw a conclusion that every connected and undirected Graph G has
at least one spanning tree. A disconnected graph does not have any spanning tree, as it cannot
be spanned to all its vertices.
We found three spanning trees off one complete graph. A complete undirected graph can
have maximum nn-2number of spanning trees, where n is the number of nodes. In the above
addressed example, n is 3, hence 33-2 = 3spanning trees are possible.
GeneralPropertiesofSpanningTree
We now understand that one graph can have more than one spanning tree. Following are a
few properties of the spanning tree connected to graph G −
• A connected graph G can have more than one spanning tree.
• All possible spanning trees of graph G, have the same number of edges and vertices.
• Removing one edge from the spanning tree will make the graph disconnected, i.e. the spanning
tree is minimally connected.
• Adding one edge to the spanning tree will create a circuit or loop, i.e. the spanning tree is
maximally acyclic.
MathematicalPropertiesofSpanningTree
• Spanning tree has n-1 edges, where n is the number of nodes (vertices).
• From a complete graph, by removing maximum e - n + 1 edges, we can construct a spanning tree.
Thus, we can conclude that spanning trees are a subset of connected Graph G and
disconnected graphs do not have spanning tree.
ApplicationofSpanningTree
Spanning tree is basically used to find a minimum path to connect all nodes in a graph.
Common application of spanning trees are −
• Civil Network Planning
• Cluster Analysis
AND/OR GRAPH:
And/or graph is a specialization of hypergraph which connects nodes by sets of arcs rather
than by a single arcs. A hypergraph is defined as follows:
A hypergraph consists of: N, a set of nodes,
H, a set of hyperarcs defined by ordered pairs, in which the first implement of the pair is a node
of N and the second implement is the subset of N.
An ordinary graph is a special case of hypergraph in which all the sets of decendent nodes have
a cardinality of 1.
Hyperarcs also known as K-connectors, where K is the cardinality of the set of decendent nodes.
If K = 1, the descendent may be thought of as an OR nodes. If K > 1, the elements of the set
of decendents may be thought of as AND nodes. In this case the connector is drawn with
individual edges from the parent node to each of the decendent nodes; these individual edges are
then joined with a curved link. And/or graph for the expression P and Q -> R is follows:
The K-connector is represented as a fan of arrows with a single tie is shown above. The
and/or graphs consists of nodes labelled by global databases. Nodes labelled by compound
databases have sets of successor nodes. These successor nodes are called AND nodes, in
order to process the compound database to termination, all the compound databases must be
processed to termination. For example consider, consider a boy who collects stamps (M). He has
for the purpose ofexchange a winning conker (C), a bat (B) and a small toy animal (A). In his
class there are friends who are also keen collectors of different items and will make the following
exchanges.
4. 1 small toy animal (A) for two bats (B, B) and astamp (M).
The problem is how to carry out the exchanges so that all his exchangable items are converted
into stamps (M). This task can be expressed more briefly as:
1. Initial state = (C, B, A)
2. Transformation rules:
a. If C then (D, S)
b. If C then (B, M)
c. If B then (M, M)
1. The components can either be arranged in some fixed order at the time they
are generated (or).
The more flexible system is to reorder dynamically as the processing unfolds. It can
be represented by and/or graph. The solution to the exchange problem will be:
Swap conker for a bat and a stamp, then exchange this bat for two stamps. Swap
hisown bat for two more stamps, and finally swap the small toy animal for two bats and a
stamp. The two bats can be exchanged for two stamps.
The previous exchange problem, when implemented as an and/or graph looks as follows:
Example 1:
Biconnected Components:
Let G = (V, E) be a connected undirected graph. Consider the following definitions:
Let us consider the typical case of vertex v, where v is not a leaf and v is not the root.
Let w1, w2, . . . . . . . wk be the children of v. For each child there is a subtree of the DFS
tree rooted at this child. If for some child, there is no back edge going to a proper ancestor
of v, then if we remove v, this subtree becomes disconnected from the rest of the graph,
and hence vis an articulation point.
L (u) = min {DFN (u), min {L (w) l w is a child of u}, min {DFN
(w) | (u, w) is a back edge}}.
L (u) is the lowest depth first number that can be reached from ‘u’ using a path
of descendents followed by at most one back edge. It follows that, If ‘u’ is not the root
then ‘u’ is an articulation point iff ‘u’ has a child ‘w’ such that:
BACKTRACKING
General Method:
The solution is based on finding one or more vectors that maximize, minimize, or satisfy
a criterion function P (x1, , xn). Form a solution and check at every step
if this has any chance of success. If the solution at any point seems not promising,
ignore it. All solutions requires a set of constraints divided into two categories: explicit
and implicit constraints.
Definition 1: Explicit constraints are rules that restrict each xi to take on values only
from a given set. Explicit constraints depend on the particular instance Iof
problem being solved. All tuples that satisfy the explicit constraints
define a possible solution space for I.
Definition 2: Implicit constraints are rules that determine which of the tuples in the
solution space of I satisfy the criterion function. Thus, implicit constraints
describe the way in which the xi’s must relate to each other.
Explicit constraints using 8-tuple formation, for this problem are S= {1, 2, 3, 4,
5, 6, 7, 8}.
The implicit constraints for this problem are that no two queens can be the
same (i.e., all queens must be on different columns) and no two queens can be
on the same diagonal.
Backtracking is the procedure whereby, after determining that a node can lead to
nothing but dead end, we go back (backtrack) to the nodes parent and proceed with the
search on the next child.
A backtracking algorithm need not actually create a tree. Rather, it only needs to
keep track of the values in the current branch being investigated. This is the way
we implement backtracking algorithm. We say that the state space tree exists
implicitly in the algorithm because it is not actuallyconstructed.
State space is the set of paths from root node to other nodes. State space tree is
the tree organization of the solution space. The state space trees are called static trees.
This terminology follows from the observation that the tree organizations are
independent of the problem instance being solved. For some problems it is
advantageous to use different tree organizations for different problem instance.
In this case the tree organization is determined dynamically as the solution space
is being searched. Tree organizations that are problem instance dependent are called
dynamic trees.
Terminology:
Answer states are those solution states for which the path from root
node to s defines a tuple that is a member of theset of solutions.
Live node is a node that has been generated but whose children have not yet
been generated.
E-node is a live node whose children are currently being explored. In other
words, an E-node is a node currently being expanded.
Dead node is a generated node that is not to be expanded or explored any further.
All children of a dead node have already been expanded.
Branch and Bound refers to all state space search methods in which all
children of an E-node are generated before any other live node can become
theE-node.
N-Queens Problem:
The implicit constraints for this problem are that no two x i ’s can be the same
(i.e., aII queens must be on different columns) and no two queens can be
on the same diagonal.
This realization reduces the size of the solution space from 8 8 tuples to 8! Tuples.
The promising function must check whether two queens are in the same
column or diagonal:
Suppose two queens are placed at positions (i, j) and (k, l) Then:
i - j = k - l.
This implies, j - l = i - k
• Diag 135 conflict:
i + j = k + l. This implies, j - l = k - i
Therefore, two queens lie on the same diagonal if and only if:
Ij - l I = Ii – k I
Where, j be the column of object in row i forth the i th queen and l be the
column of object in row 、k’ for the k queen.
To check the diagonal clashes, let us take the following tile configurati on:
*
In this example, we
* have:
*
i 1 2 3 4 5 6 7 8
*
* xi 2 5 1 8 4 7 3 6
*
Example:
*
*
*
*
Step 1:
Add to the sequence the next number in the sequence 1, 2, . . . , 8
not yet used.
Step 2:
If this new sequence is feasible and has length 8 then STOP with a
solution. If the new sequence is feasible and has length less then 8,
repeat Step 1.
Step 3:
If the sequence is not feasible, then backtrack through the sequence
until we find the most recent place at which we can exchange a value.
Go back to Step 1.
Remarks
1 2 3 4 5 6 7 8
7 5 3 1
lj - ll = l 1 - 2 l = 1
7 5 3 1* 2* li - k l = l4 - 5 l = 1
7 5 3 1 4
lj - ll = l7 - 2 l = 5
7* 5 3 1 4 2* li - k l= l1 -6l= 5
lj - ll = l3 - 6 l = 3
7 5 3* 1 4 6* li - k l = l3 - 6 l = 3
7 5 3 1 4 8
lj - ll = l4 - 2 l = 2
7 5 3 1 4* 8 2* li - k l = l5 - 7 l = 2
lj - ll = l4 - 6 l = 2
7 5 3 1 4* 8 6* li - k l = l5 - 7 l = 2
7 5 3 1 4 8 Backtrack
7 5 3 1 4 Backtrack
7 5 3 1 6
lj - ll = l 1 - 2 l = 1
7* 5 3 1 6 2* li - k l = l7 - 6 l = 1
7 5 3 1 6 4
7 5 3 1 6 4 2
lj - ll = l3 - 8 l = 5
7 5 3* 1 6 4 2 8* li - k l = l3 - 8 l = 5
7 5 3 1 6 4 2 Backtrack
7 5 3 1 6 4 Backtrack
7 5 3 1 6 8
7 5 3 1 6 8 2
7 5 3 1 6 8 2 4 SOLUTION
*
*
*
*
*
*
*
*
1 1 1
1 1 1
. . 2 2
. . . 2 2
. . .
3
. . 4
4 - Queens Problem:
Let us see how backtracking works on the 4-queens problem. We start with the root
node as the only live node. This becomes the E-node. We generate one child. Let us
assume that the children are generated in ascending order. Let us assume that
the children are generated in ascending order. Thus node number 2 of figure is
generated and the path is now (1). This corresponds to placing queen 1 on column
1. Node 2 becomes the E-node. Node 3 is generated and immediately killed. The
next node generated is node 8 and the path becomes (1, 3). Node 8 becomes
the E-node. However, it gets killed as all its children represent board configurations
that cannot lead to an answer node. We backtrack to node 2 and generate another
child, node 13. The path is now (1, 4). The board configurations as backtracking
proceeds is as follows:
1
2
. 3
1
2
3
. . . .
(e) (f) (g) (h)
The above figure shows graphically the steps that the backtracking algorithm
goes through as it tries to find a solution. The dots indicate placements of a queen,
which were tried and rejected because another queen was attacking.
In Figure (b) the second queen is placed on columns 1 and 2 and finally settles on
column 3. In figure (c) the algorithm tries all four columns and is unable to place the
next queen on a square. Backtracking now takes place. In figure (d) the second
queen is moved to the next possible column, column 4 and the third queen is
placed on column 2. The boards in Figure (e), (f), (g), and (h) show the remaining
steps that the algorithm goes through until a solution is found.
Complexity Analysis:
= nn +1 − 1
1 + n + n +n +□+ n
2 3 n n− 1
5
x3 =4 x3 =4
= 19, 173,
13
961 nodes
14 S
Sum of Subsets:
Given positive numbers wi, 1 ≤ i ≤ n, and m, this probIem requires finding aII
subsets of wi whose sums are 、m,.
All solutions are k- tupIes, 1 ≤ k ≤ n .
Explicit constraints:
• x i Є {j I j is an integer and 1 ≤ j ≤n}.
Implicit constraints:
A p o s s ib le s o lut io n s p ac e org a n is at io n f or t h e
su m of t he s u b set s pro ble m.
The tree corresponds to the variable tuple size formulation. The edges are
labeled such that an edge from a level i node to a level i+1 node represents a
value for x i . At each node, the solution space is partitioned into sub - solution
spaces. All paths from the root node to any node in the tree define the
solution space, since any such path corresponds to a subset satisfying the
explicit constraints.
The possible paths are (1), (1, 2), (1, 2, 3), (1, 2, 3, 4), (1, 2, 4), (1, 3, 4), (2), (2, 3),
and so on. Thus, the left mot sub-tree defines all subsets containing w1, the next
sub-tree defines all subsets containing w2 but not w1, and so on.
Graph Coloring (for planar graphs):
Given any map, if the regions are to be colored in such a way that no two
adjacent regions have the same color, only four colors are needed.
For many years it was known that five colors were sufficient to color any map, but no
map that required more than four colors had ever been found. After several
hundred years, this problem was solved by a group of mathematicians with the
help of a computer. They showed that in fact fourcolors are sufficient for planar
graphs.
The function m-coloring will begin by first assigning the graph to its adjacency matrix,
setting the array x [] to zero. The colors are represented by the integers 1, 2, . . . , m
and the solutions are given by the n-tuple (x1, x2, . . ., xn), where xi is the color of
node i.
O x2
2 3 3 1 2
O O O
} 1 / 3 1 2
if (j = n+1) then return;
2 3 1
2
// New color
5
/\ 3
found
O
3 /
1
x3
Example:
1 1
2
2
4 3
Gra p h
O/ O
\ 2 2 3 3 1 3 1 3 1 3 1 1 2 2
2
Hamiltonian Cycles:
1 2 3 4 1 2 3
8 7 6 5 4
Graph G1 Graph G2