给定一个

我们首先定义两个实值函数,如下所示:


并且我们还为每个矩阵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_iG_j可能重叠,因此会有其他一些更有效的方法。任何关注将不胜感激!

最佳答案

根据需要最小/最大类型数据的次数,可以考虑一个矩阵,该矩阵在矩阵值之间(即,在值之间的间隙中)保存最小/最大信息。因此,对于您的示例,G = {{1 ,2,3},{4,5,6},{7,8,9}}我们将定义一个关系矩阵R,其大小为((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进行其他优化。

并且由于某些计算机(大型机, super 计算机等)以列优先顺序将数据存储到RAM中,因此请存储数据集,以便其填充已转置的行和列,从而允许列到列类型的操作(向量计算)实际偏爱专栏。检查您的体系结构。

10-06 01:45