An interesting problem

Matt Lawrence matt.lawrence at virgin.net
Thu Jan 4 09:59:00 GMT 2007


David Landgren wrote:
> Dirk Koopman did write:
>
>> If the area required is fixed (or otherwise determinate), I would have
>> thought that doing a pass through the grid looking for the indexes of
>> the largest number(s) and then doing trial solutions putting that index
>> in all the positions of the area should be close.  
>
> This doesn't work. A large (most positive) number may occur near a 
> couple negatives, thus reducing its value, whereas a small patch of 
> lowly positives elsewhere in the grid happen to have a larger overall 
> sum.
>
> I studied this algorithm at school, god, over twenty years ago. If no 
> values are negative, there is only one solution: the entire matrix.
>
> When negative values are present, one of the best heuristic solutions 
> is to choose an arbitrary point and expand the region one row or 
> column at a time (left, right, top or bottom) and stop when any 
> additional increase in dimension results in a overall smaller sum.
>
> As time permits, you then start over again somewhere else in the grid, 
> until you consider a sufficient amount of the search space has been 
> examined.
>
> In the final step, you sort the regions by row or by column to see if 
> there are any adjoining regions with the same dimensionality and 
> coalesce them.
>
That's a much better description of the solution I was groping for earlier.

Matt



More information about the london.pm mailing list