求出矩阵中,所有元素相加和最大的分块矩阵。
对于这个问题,我们目前有四种不同的想法。其中,有两种成熟的算法,两种比较模糊的“想法”。(杨波,崔海营)
成熟想法一:
有一m*n的矩阵,取其中m1*n1的分块矩阵(1<=m1<=m,1<=n1<=n)。则该分块矩阵元素个数N=m1*n1。设此分块矩阵各元素和为K,则该分块矩阵平均元素值P=K/N.那么,只要找出M类分块矩阵(M=card(A),A={X|存在X的两个因子都分别<=m和n,且1<=X<=m*n})各分类中,每类里的分块矩阵P最大的那个,然后在对这M个分块矩阵求取它们中K最大的那个,最后就能得到问题的结果。
成熟想法二:
任取矩阵中一个元素,对该元素进行如下操作:(0,0实在不想用数学语言描述了,费劲,画图表示如下)
模糊想法一:
问题中描述的分块矩阵有如下特点。设该分块矩阵a所有元素和为M,则在该分块矩阵中任取一个更小的分块矩阵设其元素和为m,则必有M-m>0;设问题中母矩阵所有元素和为P,则必有P-M<0(实际这里可以推广,行列数都分别大于等于a分块矩阵行列数的分块矩阵元素和K-M<0);然后这应该是找到问题中分块矩阵的充要条件(本人一直很忙,没有证明,哪位看客如果有时间可以证明一下0,0,不过应该是对的)。那么据此条件我们可以找到问题的解。
模糊想法二:
取母矩阵中元素值最大元素,以该元素为核心向其周围最大元素延伸,并有某种舍弃规则,直到这些被延伸元素的和最大且他们是母矩阵的一个分块矩阵为止(这个算法目测应该是最简单的,如果成功了的话,不过本人对这个算法想的还不够成熟啊,求指教啊有木有!!)