PREV INDEX NEXT

Author: Stan Eisenstat
Subject: Re: [Cs223] Practice Midterm Answers
Date: Tuesday, 03 Mar 2020, 20:26:12


    > Message Posted By: Unknown
    ...
    > I'm wondering if this is a typo on the practice midterm solutions for the
    > dynamic programming approach to finding largest subarray product:
    >
    > "Let P1(K) = largest product in X[0],...,X[K-1].
    >   Let P2(K) = largest product of the form X[I]*...*X[K-1], 0 <= I < K.
    >   Set P1(1) = X[0] and P2(1) = X[1].
    >   Set P2(K+1) = max (P1(K)*X[K], X[K]) and P1(K+1) = max {P1(K), P2(K+1)
    >     for 1 <= K < N"
    >
    > Shouldn't P2(k+1) be set to max (P2(K)*X[K], X[K]) since P1(K)*X[K] might
    > not be contiguous?

Good catch.  Thanks.

There was also an error in the explanation.  The answer
 should have been:

   Let P1(K) = largest product in X[0],...,X[K-1].
   Let P2(K) = largest product of the form X[I]*...*X[K-1], 0 <= I < K.
   Set P1(1) = X[0] and P2(1) = X[0].
   Set P2(K+1) = max (P2(K)*X[K], X[K]) and P1(K+1) = max {P1(K), P2(K+1)}
     for 1 <= K < N
    
   Explanation:
     P2(K+1) either includes X[K-1]*X[K] (= P2(K)*X[K]) or excludes X[K-1] and
       includes X[K] (= X[K]).
     P1(K+1) either excludes X[K] (= P1(K)) or includes it (= P2(K+1)).
    
I updated the web page to reflect this change.

--Stan-
PREV INDEX NEXT