SlideShare a Scribd company logo
1 of 8
The Maximum Subarray Problem
Defining problem , its brute force
solution, divide and conquer
solution
Presented by: Kamran Ashraf
Formal Problem Definition
• Given a sequence of numbers <a1,a2,…..an> we
work to find a subsequence of A that is
contiguous and whose values have the maximum
sum.
• Maximum Subarray problem is only challenging
when having both positive and negative
numbers.
Example…
Here, the subarray A[8…11] is the Maximum
Subarray, with sum 43, has the greatest sum of
any contiguous subarray of array A.
Brute Force Solution
To solve the Maximum Subarray Problem we can use
brute force solution however in brute force we will
have to compare all possible continuous subarray
which will increase running time. Brute force will
result in Ѳ(n2), and the best we can hope for is to
evaluate each pair in constant time which will result in
Ὠ(n2).
Divide and Conquer is a more efficient method for
solving large number of problems resulting in
Ѳ(nlogn).
Divide and Conquer Solution
• First we Divide the array A [low … high] into two
subarrays A [low … mid] (left) and A [mid +1 …
high] (right).
• We recursively find the maximum subarray of A
[low … mid] (left), and the maximum of A [mid
+1 … high] (right).
• We also find maximum crossing subarray that
crosses the midpoint.
• Finally we take a subarray with the largest sum
out of three.
Example…
Time Analysis
• Find-Max-Cross-Subarray takes: Ѳ (n) time
• Two recursive calls on input size n/2 takes:
2T(n/2) time
• Hence:
T(n) = 2T(n/2) + Ѳ (n)
T(n) = Ѳ (n log n)
Pseudo Code
Max-subarray(A, Left, Right)
if (Right == Left)
return (left, right, A[left])
else mid= [(left+right)/2]
L1=Find-Maximum-Subarray(A,left,mid)
R1=Find-Maximum-Subarray(A,mid+1,right)
M1=Find-Max-Crossing-Subarray(A,left,mid,right)
If sum(L1) > sum(R1) and sum(L1) > sum(M1)
Return L1
elseif sum(R1) > sum(L1) and sum(R1) > sum(M1)
Return R1
Else return M1

More Related Content

What's hot

What Is Dynamic Programming? | Dynamic Programming Explained | Programming Fo...
What Is Dynamic Programming? | Dynamic Programming Explained | Programming Fo...What Is Dynamic Programming? | Dynamic Programming Explained | Programming Fo...
What Is Dynamic Programming? | Dynamic Programming Explained | Programming Fo...
Simplilearn
 
Dinive conquer algorithm
Dinive conquer algorithmDinive conquer algorithm
Dinive conquer algorithm
Mohd Arif
 
Stressen's matrix multiplication
Stressen's matrix multiplicationStressen's matrix multiplication
Stressen's matrix multiplication
Kumar
 

What's hot (20)

Matrix chain multiplication
Matrix chain multiplicationMatrix chain multiplication
Matrix chain multiplication
 
Divide and Conquer - Part 1
Divide and Conquer - Part 1Divide and Conquer - Part 1
Divide and Conquer - Part 1
 
Sum of subset problem.pptx
Sum of subset problem.pptxSum of subset problem.pptx
Sum of subset problem.pptx
 
Greedy Algorithm - Knapsack Problem
Greedy Algorithm - Knapsack ProblemGreedy Algorithm - Knapsack Problem
Greedy Algorithm - Knapsack Problem
 
Approximation Algorithms
Approximation AlgorithmsApproximation Algorithms
Approximation Algorithms
 
Daa notes 1
Daa notes 1Daa notes 1
Daa notes 1
 
Fractional Knapsack Problem
Fractional Knapsack ProblemFractional Knapsack Problem
Fractional Knapsack Problem
 
Randomized algorithms ver 1.0
Randomized algorithms ver 1.0Randomized algorithms ver 1.0
Randomized algorithms ver 1.0
 
5.2 divide and conquer
5.2 divide and conquer5.2 divide and conquer
5.2 divide and conquer
 
Backtracking
BacktrackingBacktracking
Backtracking
 
What Is Dynamic Programming? | Dynamic Programming Explained | Programming Fo...
What Is Dynamic Programming? | Dynamic Programming Explained | Programming Fo...What Is Dynamic Programming? | Dynamic Programming Explained | Programming Fo...
What Is Dynamic Programming? | Dynamic Programming Explained | Programming Fo...
 
Dinive conquer algorithm
Dinive conquer algorithmDinive conquer algorithm
Dinive conquer algorithm
 
Stressen's matrix multiplication
Stressen's matrix multiplicationStressen's matrix multiplication
Stressen's matrix multiplication
 
Maximum Matching in General Graphs
Maximum Matching in General GraphsMaximum Matching in General Graphs
Maximum Matching in General Graphs
 
Divide and conquer
Divide and conquerDivide and conquer
Divide and conquer
 
CMSC 56 | Lecture 15: Closures of Relations
CMSC 56 | Lecture 15: Closures of RelationsCMSC 56 | Lecture 15: Closures of Relations
CMSC 56 | Lecture 15: Closures of Relations
 
Graph coloring problem
Graph coloring problemGraph coloring problem
Graph coloring problem
 
Topological Sort
Topological SortTopological Sort
Topological Sort
 
BackTracking Algorithm: Technique and Examples
BackTracking Algorithm: Technique and ExamplesBackTracking Algorithm: Technique and Examples
BackTracking Algorithm: Technique and Examples
 
Branch and bound
Branch and boundBranch and bound
Branch and bound
 

Viewers also liked

Ubiquitous Computing
Ubiquitous ComputingUbiquitous Computing
Ubiquitous Computing
Kamran Ashraf
 
Lecture 8 dynamic programming
Lecture 8 dynamic programmingLecture 8 dynamic programming
Lecture 8 dynamic programming
Oye Tu
 

Viewers also liked (9)

Ubiquitous Computing
Ubiquitous ComputingUbiquitous Computing
Ubiquitous Computing
 
Longest Common Subsequence
Longest Common SubsequenceLongest Common Subsequence
Longest Common Subsequence
 
Longest common subsequence lcs
Longest common subsequence  lcsLongest common subsequence  lcs
Longest common subsequence lcs
 
Dynamic Programming - Part II
Dynamic Programming - Part IIDynamic Programming - Part II
Dynamic Programming - Part II
 
Dynamic Programming - Part 1
Dynamic Programming - Part 1Dynamic Programming - Part 1
Dynamic Programming - Part 1
 
Lecture 8 dynamic programming
Lecture 8 dynamic programmingLecture 8 dynamic programming
Lecture 8 dynamic programming
 
Dynamic Programming
Dynamic ProgrammingDynamic Programming
Dynamic Programming
 
The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017
 
State of the Word 2011
State of the Word 2011State of the Word 2011
State of the Word 2011
 

Similar to The Maximum Subarray Problem

Sienna 13 limitations
Sienna 13 limitationsSienna 13 limitations
Sienna 13 limitations
chidabdu
 
Statistical computing with r estatistica - maria l. rizzo
Statistical computing with r   estatistica - maria l. rizzoStatistical computing with r   estatistica - maria l. rizzo
Statistical computing with r estatistica - maria l. rizzo
André Oliveira Souza
 

Similar to The Maximum Subarray Problem (20)

Calculus Assignment Help
Calculus Assignment HelpCalculus Assignment Help
Calculus Assignment Help
 
Daa chapter 2
Daa chapter 2Daa chapter 2
Daa chapter 2
 
Calculus Assignment Help
Calculus Assignment HelpCalculus Assignment Help
Calculus Assignment Help
 
Brute force-algorithm
Brute force-algorithmBrute force-algorithm
Brute force-algorithm
 
Sienna 13 limitations
Sienna 13 limitationsSienna 13 limitations
Sienna 13 limitations
 
Maximum Subarray Sum in Python
Maximum Subarray Sum in PythonMaximum Subarray Sum in Python
Maximum Subarray Sum in Python
 
Calculus Homework Help
Calculus Homework HelpCalculus Homework Help
Calculus Homework Help
 
Computer Science Exam Help
Computer Science Exam Help Computer Science Exam Help
Computer Science Exam Help
 
Statistical computing with r estatistica - maria l. rizzo
Statistical computing with r   estatistica - maria l. rizzoStatistical computing with r   estatistica - maria l. rizzo
Statistical computing with r estatistica - maria l. rizzo
 
Algorithms Exam Help
Algorithms Exam HelpAlgorithms Exam Help
Algorithms Exam Help
 
Daa chapter6
Daa chapter6Daa chapter6
Daa chapter6
 
Unit-3 greedy method, Prim's algorithm, Kruskal's algorithm.pdf
Unit-3 greedy method, Prim's algorithm, Kruskal's algorithm.pdfUnit-3 greedy method, Prim's algorithm, Kruskal's algorithm.pdf
Unit-3 greedy method, Prim's algorithm, Kruskal's algorithm.pdf
 
Solution 3.
Solution 3.Solution 3.
Solution 3.
 
Divide and Conquer / Greedy Techniques
Divide and Conquer / Greedy TechniquesDivide and Conquer / Greedy Techniques
Divide and Conquer / Greedy Techniques
 
Programming Exam Help
Programming Exam Help Programming Exam Help
Programming Exam Help
 
Algorithm Homework Help
Algorithm Homework HelpAlgorithm Homework Help
Algorithm Homework Help
 
Undecidable Problems and Approximation Algorithms
Undecidable Problems and Approximation AlgorithmsUndecidable Problems and Approximation Algorithms
Undecidable Problems and Approximation Algorithms
 
test pre
test pretest pre
test pre
 
Undecidable Problems - COPING WITH THE LIMITATIONS OF ALGORITHM POWER
Undecidable Problems - COPING WITH THE LIMITATIONS OF ALGORITHM POWERUndecidable Problems - COPING WITH THE LIMITATIONS OF ALGORITHM POWER
Undecidable Problems - COPING WITH THE LIMITATIONS OF ALGORITHM POWER
 
International Journal of Engineering Research and Development
International Journal of Engineering Research and DevelopmentInternational Journal of Engineering Research and Development
International Journal of Engineering Research and Development
 

The Maximum Subarray Problem

  • 1. The Maximum Subarray Problem Defining problem , its brute force solution, divide and conquer solution Presented by: Kamran Ashraf
  • 2. Formal Problem Definition • Given a sequence of numbers <a1,a2,…..an> we work to find a subsequence of A that is contiguous and whose values have the maximum sum. • Maximum Subarray problem is only challenging when having both positive and negative numbers.
  • 3. Example… Here, the subarray A[8…11] is the Maximum Subarray, with sum 43, has the greatest sum of any contiguous subarray of array A.
  • 4. Brute Force Solution To solve the Maximum Subarray Problem we can use brute force solution however in brute force we will have to compare all possible continuous subarray which will increase running time. Brute force will result in Ѳ(n2), and the best we can hope for is to evaluate each pair in constant time which will result in Ὠ(n2). Divide and Conquer is a more efficient method for solving large number of problems resulting in Ѳ(nlogn).
  • 5. Divide and Conquer Solution • First we Divide the array A [low … high] into two subarrays A [low … mid] (left) and A [mid +1 … high] (right). • We recursively find the maximum subarray of A [low … mid] (left), and the maximum of A [mid +1 … high] (right). • We also find maximum crossing subarray that crosses the midpoint. • Finally we take a subarray with the largest sum out of three.
  • 7. Time Analysis • Find-Max-Cross-Subarray takes: Ѳ (n) time • Two recursive calls on input size n/2 takes: 2T(n/2) time • Hence: T(n) = 2T(n/2) + Ѳ (n) T(n) = Ѳ (n log n)
  • 8. Pseudo Code Max-subarray(A, Left, Right) if (Right == Left) return (left, right, A[left]) else mid= [(left+right)/2] L1=Find-Maximum-Subarray(A,left,mid) R1=Find-Maximum-Subarray(A,mid+1,right) M1=Find-Max-Crossing-Subarray(A,left,mid,right) If sum(L1) > sum(R1) and sum(L1) > sum(M1) Return L1 elseif sum(R1) > sum(L1) and sum(R1) > sum(M1) Return R1 Else return M1