给定一个
我们首先定义两个实值函数,如下所示:
并且我们还为每个矩阵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
可能重叠,因此会有其他一些更有效的方法。任何关注将不胜感激! 最佳答案
根据需要最小/最大类型数据的次数,可以考虑一个矩阵,该矩阵在矩阵值之间(即,在值之间的间隙中)保存最小/最大信息。因此,对于您的示例,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中,因此请存储数据集,以便其填充已转置的行和列,从而允许列到列类型的操作(向量计算)实际偏爱专栏。检查您的体系结构。