【问题标题】:Practical uses of sparse matrices [closed]稀疏矩阵的实际用途 [关闭]
【发布时间】:2018-04-06 14:06:05
【问题描述】:

最近我一直在研究矩阵,并开始学习稀疏矩阵,但我不明白它们为什么存在。稀疏矩阵有哪些实际用途?如果它们主要持有的都是 0,它们有什么有用的功能吗?

【问题讨论】:

  • 你没有抓住重点。他们持有那些0。因此节省了。
  • 它们很有用,因为它们可以节省内存。
  • 这个问题似乎与 C++ 或 Java 中的任何特定编程问题无关,但您为这两种语言添加了标签。为什么?

标签: matrix sparse-matrix linear-algebra


【解决方案1】:

稀疏矩阵通常只是具有大量零项的矩阵(通常至少 > 50%)。

它们可以以非常简洁的方式表示,(wiki) 可以用于快速有效地进行矩阵运算(例如乘法、矩阵转置……)。如果没有高效的稀疏矩阵算法,Google 地图和其他应用程序将无法实现。

如果你想深入挖掘,我推荐this website & professor,他开发了其中的一些算法。显然,这是一个备受关注的持续研究课题。

【讨论】:

    【解决方案2】:

    我觉得你是在反过来问这个问题。

    稀疏矩阵是具有高密度零的矩阵。

    稀疏矩阵在科学计算的许多领域中非常常见,而且规模非常大。不是它们有用,它们只是存在。

    现在,有趣且有用的是我们如何表示它们。

    我们倾向于压缩稀疏矩阵以仅考虑非零值并跟踪它们在矩阵中的位置。

    这很有用,因为它可以节省大量存储空间,并且矩阵运算仅限于其非零值。

    【讨论】:

      【解决方案3】:

      稀疏矩阵非常常见的一个领域是求解离散偏微分方程。

      简而言之:您有一个体素网格,离散微分方程说明了您仅针对相邻体素求解的量之间的关系。您需要求解的结果矩阵方程通常具有能带结构。在 2D 中,结构更简单,只有对角线上的值和对角线上的一个值,所有其他系数都为零。

      【讨论】:

        【解决方案4】:

        考虑一个 100k X 100k 矩阵。

        如果您想在二维数组中使用双精度存储所有这些内容,则需要 80GB,这还不包括任何内存管理开销。如果许多元素为零,则可以节省大量内存。

        例如,如果您有一个规则的稀疏矩阵,例如三对角矩阵,则可以将其存储在 3 X 100k 的 2.4Mbytes 数组中。三对角线外的所有元素都隐式为零。

        作为另一个示例,在电子电路分析中,矩阵用于使用 Newton-Raphson 方法求解 PDE 系统。由于大多数电路元件都连接到极少数其他电路元件,因此得到的矩阵是稀疏的。这可以用非零元素的二维链表表示。同样,不在链表中的任何内容都隐含为零。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-04
          • 1970-01-01
          • 2013-06-18
          • 2020-12-05
          • 1970-01-01
          • 1970-01-01
          • 2018-01-19
          • 1970-01-01
          相关资源
          最近更新 更多