【发布时间】:2022-11-02 19:40:43
【问题描述】:
给定布尔矩阵米,我需要找到一组子矩阵A = {A1, ..., 一个n}这样矩阵在一个包含矩阵中的所有真值米只有他们。子矩阵不必是连续的,即每个子矩阵由两组索引定义{一世1, ..., 一世ķ},{j1, ..., j吨}的米. (例如,子矩阵可能类似于 [{1, 2, 5}, {4, 7, 9, 13}],它是这些行和列相交的所有单元格。)子矩阵的总数n应该是最小的。
矩阵的大小米可以达到 10^4 x 10^4,所以我需要一个有效的算法。我想这个问题可能没有一个有效的精确算法,因为它让我想起了一些 NP-hard 问题。如果这是真的,那么任何好的和快速的近似都是可以的。我们也可以建议真实值的数量不是很大,即<所有值的1/10,但是为了在prod中没有意外的DOS,不使用这个事实的解决方案更好。
我不需要任何代码,只需要算法的一般概念及其属性的证明,如果它不明显的话。
背景
我们正在为物流应用计算一些昂贵的距离矩阵。此请求中的点通常是相交的,因此我们正在尝试开发一些缓存算法来不计算某些请求的一部分。并将大请求拆分为只有未知子矩阵的较小请求。此外,该算法可能不需要矩阵中的某些距离。一方面,少量大组计算速度更快,另一方面,如果我们包含很多“False”值,并且我们的子矩阵大得不合理,这会减慢计算速度。确切的标准很复杂,“昂贵”的矩阵请求的时间复杂度很难估计。据我所知,对于方阵,它类似于 C*n^2.5 和相当大的 C。因此很难制定一个好的优化标准,但欢迎提出任何想法。
【问题讨论】:
-
子矩阵不能包含任何错误值?
-
你不是说假值的百分比吗?
-
好吧,实际上,老实说,我们可以允许一小部分错误值,但是如何严格定义优化标准并不明显。一般来说,矩阵集 A 应该是最小的子矩阵的大小和子矩阵的数量。我将添加一些有问题的背景。
标签: algorithm matrix optimization time-complexity graph-theory