在每个给定区域找到最小值的有效方法

时间:2012-09-05 14:19:55

标签: performance algorithm optimization hash matrix

鉴于此 enter image description here 我们首先定义两个实值函数enter image description hereenter image description here,如下所示:

enter image description here
enter image description here

我们还为每个矩阵m(X)定义了一个值X,如下所示:

enter image description here

现在给定enter image description here,我们有许多G区域,表示为enter image description here。这里,G的区域由G的子矩阵形成,该子矩阵是从某些列和G的某些行中随机选择的。我们的问题是将enter image description here计算为尽可能少的操作。有没有像构建哈希表或排序以更快地获得结果的方法?谢谢!

========================

例如,如果G={{1,2,3},{4,5,6},{7,8,9}},那么

G_1 could be {{1,2},{7,8}}
G_2 could be {{1,3},{4,6},{7,9}}
G_3 could be {{5,6},{8,9}}

=======================

目前,对于每个G_i,我们需要mxn比较来计算m(G_i)。因此,对于m(G_1),...,m(G_r),应该进行rxmxn比较。但是,我注意到G_iG_j可能重叠,因此会有一些更有效的方法。任何关注都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

根据需要最小/最大类型数据的次数,您可以考虑一个矩阵,其中包含矩阵值之间的最小/最大信息,即在值之间的空隙中。因此,对于您的示例G = {{1,2,3},{4,5,6},{7,8,9}}我们将定义一个关系矩阵R size((mxn),(mxn),(mxn))并且具有来自的值集合C = {-1 =小于,0 =等于,1 =大于}。

R将具有九个关系对(n,1),(n,2)到(n,9),其中每个值将是C的成员。注意(n,n被定义并且将等于0)。因此,R [4 ,,] =(1,1,1,0,-1,-1,-1,-1,-1)。现在考虑你的任何子集G_1 ......,知道子集成员的位置关系会给你偏移到R,这将解析为每个R(N ,,)的索引,它将直接返回所需的关系信息没有比较。

当然,您必须决定构建R的空间开销和计算是否超出了每次需要时计算所需内容的成本。某些优化包括实现R矩阵沿主要对角线反射并且你可以声明"等于"可以称为小于(意味着C只有两个值)。根据原始矩阵G,如果知道行或列已排序,则可以进行其他优化。

由于某些计算机(大型机,超级计算机等)以列主要顺序将数据存储到RAM中,因此存储数据集以使其填充转置的行和列,从而允许列到列类型的操作(向量计算) )实际上支持列。检查你的架构。