Professional Documents
Culture Documents
Solve smaller instances recursively Obtain solution to original (larger) instance by combining these solutions
3.
Divide-andDivide-and-conquer technique
a problem of size n
a solution to subproblem 1
a solution to subproblem 2
(nd)
a < bd a = bd a > bd
Mergesort
Algorithm: Split array A[1..n] in two and make copies of each half A[1..n in arrays B[1.. n/2 ] and C[1.. n/2 ] Sort arrays B and C Merge sorted arrays B and C into array A as follows:
Repeat the following until no elements remain in one of the arrays:
compare the first elements in the remaining unprocessed portions of the arrays copy the smaller of the two into A, while incrementing the index indicating the unprocessed portion of that array
Once all elements in one of the arrays are processed, copy the remaining unprocessed elements from the other array into A.
Design and Analysis of Algorithms - Unit II
Mergesort Example
8 3 2 9 7 1 5 4
8 3 2 9
7 1 5 4
8 3
2 9
71
5 4
3 8
2 9
1 7
4 5
2 3 8 9
1 4 5 7
1 2 3 4 5 7 8 9
10
Efficiency of mergesort
All cases have same efficiency: ( n log n) Number of comparisons is close to theoretical minimum for comparisoncomparison-based sorting: log n ! n lg n - 1.44 n Space requirement: ( n ) (NOT in-place) (NOT in-
11
Quick-Sort QuickQuickQuick-sort is a randomized sorting algorithm based on the divide-and-conquer divide-andparadigm: Divide: Divide: pick a random pivot) element x (called pivot) and partition S into L elements less than x E elements equal x G elements greater than x Recur: Recur: sort L and G Conquer: Conquer: join L, E and G
x L E G
x
12
Quicksort
Select a pivot (partitioning element) Rearrange the list so that all the elements in the positions before the pivot are smaller than or equal to the pivot and those after the pivot are larger than the pivot Exchange the pivot with the last element in the first (i.e., sublist) the pivot is now in its final position Sort the two sublists p A[i]p A[i]>p
Design and Analysis of Algorithms - Unit II 13
14
Efficiency of quicksort
Best case: split in the middle ( n log n) case: Worst case: sorted array! ( n2) case: Average case: random arrays ( n log n) case: Improvements:
better pivot selection: median of three partitioning avoids worst case in sorted files switch to insertion sort on small subfiles
Considered the method of choice for internal sorting for large files (n 10000) (n
Design and Analysis of Algorithms - Unit II 15
If K = A[m], stop (successful search); A[m otherwise, continue searching by the same method in A[0..m A[0..m-1] if K < A[m] A[m and in A[m+1..n A[m+1..n-1] if K > A[m] A[m
16
17
This is VERY fast: e.g., Cw(106) = 20 BestBest-case: successful Cb (n) = 1, fail Cb (n) = log2 n +1
TL
TR
20
21
Analysis:
Number of comparisons of a tree T with : 2n + 1 2n Number of comparisons made to compute height is the same as number of additions: A(n A(n(T)) = A(n(TL)) + A(n(TR)) +1 for n>0, A(n A(n A(0) = 0 The solution is A(n) = n A(n
22
24
First Divide-and-Conquer Algorithm Divide-andA small example: A B where A = 2135 and B = 4014 A = (21102 + 35), B = (40 102 + 14) So, A B = (21 102 + 35) (40 102 + 14) = 21 40 104 + (21 14 + 35 40) 102 + 35 14 In general, if A = A1A2 and B = B1B2 (where A and B are n-digit, A1, A2, B1, B2 are n/2-digit numbers), n/2 n/2 A B = A1 B110n + (A1 B2 + A2 B1) 10n/2 + A2 B2 Recurrence for the number of one-digit multiplications M(n): oneM(n M(n 4M(n M(n) = 4M(n/2), M(1) = 1 Solution: M(n) = n2 M(n
25
The idea is to decrease the number of multiplications from 4 to 3: (A1 + A2 ) (B1 + B2 ) = A1 B1 + (A1 B2 + A2 B1) + A2 B2, I.e., (A1 B2 + A2 B1) = (A1 + A2 ) (B1 + B2 ) - A1 B1 - A2 B2, which requires only 3 multiplications at the expense of (4-1) extra add/sub. (4Recurrence for the number of multiplications M(n): M(n M(n 3M M(n) = 3M(n/2), M(1) = 1 Solution: M(n) = 3log 2n = nlog 23 n1.585 M(n
Design and Analysis of Algorithms - Unit II
26
M1 + M4 - M5 + M7 = M2 + M4
27
Submatrices:
M1 = (A00 + A11) * (B00 + B11) M2 = (A10 + A11) * B00 M3 = A00 * (B01 - B11) M4 = A11 * (B10 - B00) M5 = (A00 + A01) * B11 M6 = (A10 - A00) * (B00 + B01) M7 = (A01 - A11) * (B10 + B11)
Design and Analysis of Algorithms - Unit II 28
Number of additions: 18
29
Time Analysis
30
Standard vs Strassen
N Standard alg. Strassens alg. Standard alg. Strassens alg. Standard alg. Strassens alg. 100 100 1000 1000 10,000 10,000 Multiplications 1,000,000 411,822 1,000,000,000 264,280,285 1012 0.169*1012 Additions 990,000 2,470,334 999,000,000 1,579,681,709 9.99*1011 1012
31
Greedy Technique
Greedy Technique
Constructs a solution to an optimization problem piece by piece through a sequence of choices that are: feasible, i.e. satisfying the constraints
Defined by an objective function and a set of constraints
locally optimal (with respect to some neighborhood definition) (with definition) greedy (in terms of some measure), and irrevocable For some problems, it yields a globally optimal solution for every instance. For most, does not but can be useful for fast approximations.
Design and Analysis of Algorithms - Unit II 33
ChangeChange-Making Problem
Given unlimited amounts of coins of denominations d1 > > dm , give change for amount n with the least number of coins Q: What are the objective function and constraints? Example: d1 = 25c, d2 =10c, d3 = 5c, d4 = 1c and n = 48c Greedy solution: <1, 2, 0, 3>
Greedy solution is optimal for any amount and normal set of denominations may not be optimal for arbitrary coin denominations For example, d1 = 25c, d2 = 10c, d3 = 1c, and n = 30c
Design and Analysis of Algorithms - Unit II 35
c a
1
6 4
c
1
c a
2 1
a
4 2
d
3
d
3
36
37
Example
4
c
1
c
1
c
1
a
6 2
a
6 2
a
6 2
b
4
d
3
3 4
d c
1
d
3
c
1
a
6 2
a
6 2
d
3
d
3
39
40
41
42
Example
4
c
1
c
1
c
1
a
6 2
a
6 2
a
6 2
b
4
d c
1
d
3
b c
d
3
c
1
a
6 2
a
6 2
a
2
d b
3
d
43
Disjoint Sets
Union of two sets A and B, denoted by A A or x B} B, is the set {x | x
The intersection of two sets A and B, denoted by A set {x| x A and x B}. Two sets A and B are said to be disjoint if A B = J.
B, is the
If S = {1,2,,11} and there are 4 subsets {1,7,10,11} , {1, ,,11} {1, 10, {2,3,5,6}, {4,8} and {9}, these subsets may be labeled as 1, 3, {2, {4, 8 and 9, in this order.
45
Disjoint Sets
A disjoint-set is a collection ={S1, S2,, Sk} of distinct disjointdynamic sets. Each set is identified by a member of the set, called representative. representative. DisjointDisjoint-set data structures can be used to solve the unionunion-find problem Disjoint set operations:
MAKE-SET(x): create a new set with only x. assume x is not MAKE-SET(x already in some other set. UNION(x,y): combine the two sets containing x and y into one UNION(x new set. A new representative is selected. FIND-SET(x): return the representative of the set containing x. FIND-SET(x
Design and Analysis of Algorithms - Unit II 46
The Union-Find problem UnionN balls initially, each ball in its own bag
Label the balls 1, 2, 3, ..., N
47
OBJECTIVE
to design efficient algorithms for Union & Find operations. Approach: Approach: to represent each set as a rooted tree with data elements stored in its nodes. Each element x other than the root has a pointer to its parent p(x) in the tree. The root has a null pointer, and it serves as the name or set representative of the set. This results in a forest in which each tree corresponds to one set. For any element x, let root(x) denote the root of the tree containing x. root( FIND(x) returns root(x). FIND(x root( union(x, y) means UNION(root(x), root(y)). union(x, y) UNION(root( root(
48
UNION(x,y) UNION(FIND(x) , FIND(y) ) UNION(root(x) , root(y) ) UNION(FIND(x FIND(y UNION(root(x root(y UNION(u,v) then let v be the parent of u. Assume u is root(x), v is root(y) Time complexity is O(n)
Union(x, y) Combine the set that contains x with the set that contains y
49
The Union-Find problem UnionAn example with 4 balls Initial: {1}, {2}, {3}, {4} Union {1}, {3} p {1, 3}, {2}, {4} Find 3. Answer: {1, 3} Union {4}, {1,3} p {1, 3, 4}, {2} Find 2. Answer: {2} Find 1. Answer {1, 3, 4}
50
Forest Representation
A forest is a collection of trees Each bag is represented by a rooted tree, with the root being the representative ball
1 5 3 4
Forest Representation
Find(x Find(x)
Traverse from x up to the root
Union(x Union(x, y)
Merge the two trees containing x and y
52
Forest Representation
Initial: Union 1 3:
3
1 1
2 2
4 4
Union 2 4:
3
1 4 1
Find 4:
3 4 Design and Analysis of Algorithms - Unit II
53
Forest Representation
Union 1 4:
3 4 1
Find 4:
3 4
54
55
Path Compression
f e d c c d e f
56
4 c 6 2
d
Example
Tree vertices a(-,0) b(a,3)
3 a 7 5 4
Remaining vertices
b
4
c
3
a
2 7
b d
6 5
e
4 4 2 5
d e c
3
a
6 7 4 4 2 5
d c
d(b,5)
c(b,7) e(d,5+4)
a
3 7
b
6 4 4
c e
c(b,7) e(d,9)
e(d,9)
a
3 2
d
6 5
e
4 59
60