2 things
1.  There was a small type in end where I said Time complexity :O ( 2
* m * n )  , actually its space complexity.
Time complexity is  O ( m * n^2 )

2. I got some requests to explain this with an example so I solved
this for a matrix which is as following
 0  1  1  0  1
  1  1  0  1  0
  0  1  1  1  0
  1  1  1  1  0
  1  1  1  1  1
  0  0  0  0  0

I have uploaded solution at
http://groups.google.com/group/algogeeks/web/binaryMatrix_Rectangle.pdf

plz review .

-Manish



On Nov 2, 9:02 am, Ankit Babbar <ankitbabba...@gmail.com> wrote:
> @Modeling Expert:  Can you please explain your algo with an example...
>
> especially calculating the area of rectangles using min depth and its
> traversal through the matrix...
>
> On Tue, Oct 5, 2010 at 7:24 PM, Modeling Expert <cs.modelingexp...@gmail.com
>
>
>
> > wrote:
> > For square matrix , link suggested by Amit would work. Finding a sub-
> > rectangle is tougher.
>
> > I would go this way; First scan from bottom right till top left and
> > for every Non-zero member in matrix create this pair ( width ,
> > depth ).
>
> > Width is  how many continuous 1's ( including itself ) are there to
> > its right,
> > Depth is  how many continuous 1's ( including itself ) are there down
> > wards
>
> > now select a point P(i,j) , which has value Pair ( W , D ) it means
> > W-1 columns to right and D-1 rows below are '1' , Note: it doesn't
> > give any info about diagonal
> >                                    entries to P , and we will see ,
> > we actually don't need them.
>
> >  Now think about all possible rectangles which could be made when P is
> > left top corner
> >  so go columnwise from i to  i + 1 , i +2 ,  i + (W-1) points ( call
> > it P' point ) , at every step, see the minimum depth for all points
> > between P and P' and keep calculating area by width X minDepth
>
> >  e.g. P has width = 3, depth = 4 and co-ordinates (i,j ) then go like
> > this
> > Area for A[i,j] and  P'[i, j+1 ]  = 2 X MinDepth( P, P')   //A1
> > Area for A[i,j] and  P"[i, j+2 ]  = 3 X MinDepth( P, P', P")   //A2  :
> > Note MinDepth is Minimum Depth of all three points so far
> >  Take Max of A1,A2 and you would have max rectangle which could be
> > created by having P as top left corner.
>
> > Now , keep traveling P throughout this Matrix.
>
> > There are few optimisation. A point with width W and depth D can AT
> > MAX has a rectangle with AREA MAX = W * D so next time consider points
> > only whose W * D > Max Area calcuated so far.E.g if you have already
> > got a point which has sub rectangle with area = 12 no need to look for
> > points which has such (W,D) pairs = ( 2,3) , (4,2) , (3,3)  etc .
>
> > Time complextiy :
> > First time reverse traversal O(m * n )  /// m Rows , n Columns
> >   Second time , MAX AREA calculation for each points , worse case
> > o(n) as we need to travel only column wise as explained above
> >   Above action to be done for m*n points so total O( mn * n ) =
> > O(mn^2)
>
> > So total Time = O ( m * n^2 )
>
> > Time complexity :O ( 2 * m * n ) as W and D pair for each entry has to
> > be maintained
>
> > Suggestions, Clarifications, Modifications ?
> > -Manish
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Algorithm Geeks" group.
> > To post to this group, send email to algoge...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/algogeeks?hl=en.
>
> --
> Regards,
> Ankit Babbar

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to