design and analysis of algorithms maximum-subarray problem and matrix multiplication haidong xue...

18
Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Upload: asher-melton

Post on 17-Dec-2015

227 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Design and Analysis of AlgorithmsMaximum-subarray problem and matrix

multiplication

Haidong XueSummer 2012, at GSU

Page 2: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Maximum-subarray problemback ground

• If you know the price of certain stock from day i to day j;

• You can only buy and sell one share once• How to maximize your profit?

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1660

70

80

90

100

110

120

day #

Price

Page 3: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Maximum-subarray problemback ground

• What is the brute-force solution?max = -infinity;for each day pair p { if(p.priceDifference>max) max=p.priceDifference;}

Time complexity? pairs, so O()

Page 4: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Maximum-subarray problemback ground

• If we know the price difference of each 2 contiguous days

• The solution can be found from the maximum-subarray

• Maximum-subarray of array A is:– A subarray of A– Nonempty– Contiguous– Whose values have the the largest sum

Page 5: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Maximum-subarray problemback ground

Day 0 1 2 3 4Price 10 11 7 10 6Difference 1 -4 3 -4

What is the solution? Buy on day 2, sell on day 3

Sub-array 1-1 1-2 1-3 1-4 2-2 2-3 2-4 3-3 3-4 4-4Sum 1 -3 0 -4 -4 -1 -5 3 -1 -4

Can be solve it by the maximum-subarray of difference array?

Page 6: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Maximum-subarray problem – divide-and-conquer algorithm

• How to divide?– Divide to 2 arrays

• What is the base case?• How to combine the sub problem solutions to the current

solution? – A fact:

• when divide array A[i, …, j] into A[i, …, mid] and A[mid+1, …, j]• A sub array must be in one of them

– A[i, …, mid] // the left array– A[mid+1, …, j] // the right array– A[ …, mid, mid+1….] // the array across the midpoint

– The maximum subarray is the largest sub-array among maximum subarrays of those 3

Page 7: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Maximum-subarray problem – divide-and-conquer algorithm

• Input: array A[i, …, j]• Ouput: sum of maximum-subarray, start point of maximum-

subarray, end point of maximum-subarray• FindMaxSubarray:1. if(j<=i) return (A[i], i, j);2. mid = floor(i+j); 3. (sumCross, startCross, endCross) = FindMaxCrossingSubarray(A,

i, j, mid);4. (sumLeft, startLeft, endLeft) = FindMaxSubarray(A, i, mid);5. (sumRight, startRight, endRight) = FindMaxSubarray(A, mid+1,

j);6. Return the largest one from those 3

Page 8: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Maximum-subarray problem – divide-and-conquer algorithm

FindMaxCrossingSubarray(A, i, j, mid)1. Scan A[i, mid] once, find the largest A[left,

mid]2. Scan A[mid+1, j] once, find the largest

A[mid+1, right]3. Return (sum of A[left, mid] and A[mid+1,

right], left, right)

Let’s try it in Java

Page 9: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

1 -4 3 2Target array :

All the sub arrays: 1

-4

3

2

1 -4

-4 3

3 2

1 -4 3

-4 3 2

1 -4 3 2

1

-4

3

2

-3

-1

5

0

1

2

Max!

Page 10: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

1 -4 3 2Target array :

All the sub arrays: 1

-4

3

2

1 -4

-4 3

3 2

1 -4 3

-4 3 2

1 -4 3 2

1

-4

3

2

-3

-1

5

0

1

2

Divide target array into 2 arrays

We then have 3 types of subarrays:

The ones belong to the left array

The ones belong to the right array

The ones crossing the mid point

The problem can be then solved by:

1. Find the max in left sub arrays

2. Find the max in right sub arrays

3. Find the max in crossing sub arrays

4. Choose the largest one from those 3 as the final result

Page 11: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

1 -4 3 2FindMaxSub ( )

1. Find the max in left sub arrays

2. Find the max in right sub arrays

3. Find the max in crossing sub arrays

4. Choose the largest one from those 3 as the final result

1 -4FindMaxSub ( )

3 2FindMaxSub ( )

Scan once, and scan once1 -4 3 2

Page 12: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

3. Find the max in crossing sub arrays

1 -4 3 2

-4 Sum=-4

1 -4 Sum=-3 largest

3 Sum=3

3 Sum=52 largest

The largest crossing subarray is :

Page 13: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Maximum-subarray problem – divide-and-conquer algorithm

• What is the time complexity?• FindMaxSubarray:1. if(j<=i) return (A[i], i, j);2. mid = floor(i+j); 3. (sumCross, startCross, endCross) =

FindMaxCrossingSubarray(A, i, j, mid);4. (sumLeft, startLeft, endLeft) = FindMaxSubarray(A, i, mid);5. (sumRight, startRight, endRight) = FindMaxSubarray(A,

mid+1, j);6. Return the largest one from those 3

(n)

Page 14: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Matrix multiplication

• How to multiply two matrices?

• Given matrix

• For each , we need • There are so =

=

Time Complexity?

Page 15: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Matrix multiplicationdivide-and-conquer algorithm

• C=AB

• Recurrence equation?• ()

Page 16: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Matrix multiplicationdivide-and-conquer algorithm

• ()• What is the time complexity?• From Master method we know it is ()

Page 17: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Matrix multiplicationStrassen’s algorithm

• ()

• ()

Page 18: Design and Analysis of Algorithms Maximum-subarray problem and matrix multiplication Haidong Xue Summer 2012, at GSU

Matrix multiplicationStrassen’s algorithm

• Strassen’s algorithm• 1. Perform 10 times matrix addition or

subtraction to make from • 2. Perform 7 times matrix multiplication to

make to from • 3. Perform matrix addition or matrix

subtraction to obtain , , and ()= ()