鉴于此
我们首先定义两个实值函数和,如下所示:
我们还为每个矩阵m(X)
定义了一个值X
,如下所示:
现在给定,我们有许多G
区域,表示为。这里,G
的区域由G
的子矩阵形成,该子矩阵是从某些列和G
的某些行中随机选择的。我们的问题是将计算为尽可能少的操作。有没有像构建哈希表或排序以更快地获得结果的方法?谢谢!
========================
例如,如果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_i
和G_j
可能重叠,因此会有一些更有效的方法。任何关注都将受到高度赞赏!
答案 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中,因此存储数据集以使其填充转置的行和列,从而允许列到列类型的操作(向量计算) )实际上支持列。检查你的架构。