19

我的几位同行都提到,“线性代数”在学习算法时非常重要。我研究了各种算法并参加了一些线性代数课程,但我没有看到其中的联系。那么线性代数是如何在算法中使用的呢?

例如,图的连接矩阵可以带来哪些有趣的东西?

4

9 回答 9

45

三个具体例子:

  • 线性代数是现代 3D 图形的基础。这与您在学校学到的基本相同。数据保存在投影到 2d 表面的 3d 空间中,这就是您在屏幕上看到的内容。
  • 大多数搜索引擎都是基于线性代数的。这个想法是将每个文档表示为超空间中的一个向量,并查看该向量在该空间中如何相互关联。这由lucene 项目等使用。请参阅VSM
  • 一些现代压缩算法(例如 ogg vorbis 格式使用的压缩算法)基于线性代数,或者更具体地说是一种称为矢量量化的方法。

基本上归结为线性代数在处理多个变量时是一种非常强大的方法,并且在设计算法时将其用作理论基础有巨大的好处。在许多情况下,这个基础并不像你想象的那么明显,但这并不意味着它不存在。您很可能已经实现了如果没有 linalg 将很难推导出的算法。

于 2009-07-06T04:31:56.370 回答
16

密码学家可能会告诉您,在学习算法时,掌握数论非常重要。他是对的——对于他的特定领域。统计也有它的用途——跳过列表、哈希表等。图论的用处就更明显了。

线性代数和算法之间没有内在联系;数学和算法之间有内在的联系。

线性代数是一个有很多应用的领域,因此利用它的算法也有很多应用。你没有浪费时间研究它。

于 2009-07-06T04:38:08.773 回答
12

哈,我忍不住把这个放在这里(即使其他答案很好):

250 亿美元的特征向量

我不会撒谎……我什至从来没有读过整本书……也许我现在会:-)。

于 2009-07-06T05:55:55.683 回答
6

我不知道我是否会将其表述为“线性代数在学习算法时非常重要”。我几乎会反过来说。许多、许多、许多现实世界的问题最终需要你解决一个一组线性方程。如果您最终不得不解决其中一个问题,您将需要了解处理线性方程的许多算法中的一些。其中许多算法是在计算机成为职位时开发的,而不是例如,考虑高斯消元和各种矩阵分解算法。例如,关于如何解决非常大的矩阵的这些问题,有很多非常复杂的理论。

机器学习中最常见的方法最终都有一个优化步骤,需要求解一组联立方程。如果您不了解线性代数,您将完全迷失方向。

于 2009-07-06T04:44:07.857 回答
5

许多信号处理算法都基于矩阵运算,例如傅里叶变换、拉普拉斯变换、...

优化问题通常可以简化为求解线性方程组。

于 2009-07-06T05:30:19.560 回答
4

正如您可能已经猜到的那样,线性代数在计算机代数的许多算法中也很重要。例如,如果您可以将问题简化为多项式为零,其中多项式的系数在变量 中是线性的,那么您可以通过使每个项的系数相等来x1, …, xn求解x1, …, xn使多项式等于 0 的值x^n为 0 并求解线性系统。这称为未定系数法,例如用于计算部分分数分解或积分有理函数。

对于图论,邻接矩阵最酷的一点是,如果您对未加权图(每个条目是 0 或 1)取邻接矩阵的 n 次方M^n,那么每个条目i,j将是来自顶点的路径数到长度i的顶点。如果这不只是很酷,那么我不知道是什么。 jn

于 2010-07-27T00:23:45.820 回答
2

这里的所有答案都是算法中线性代数的好例子。

作为元答案,我将补充说您可能在您的算法中使用线性代数而不知道它。使用 SSE(2) 进行优化的编译器通常通过并行处理许多数据值来向量化您的代码。这本质上是基本的洛杉矶。

于 2009-07-06T06:12:53.997 回答
2

这取决于什么类型的“算法”。

一些例子:

  • 机器学习/统计算法:线性回归(最小二乘、岭、套索)。
  • 信号和其他处理(人脸识别等)的有损压缩。见特征面
于 2009-07-06T21:01:19.103 回答
1

例如,图的连接矩阵可以带来哪些有趣的东西?

矩阵的许多代数性质在顶点排列下是不变的(例如 abs(determinant)),所以如果两个图是同构的,它们的值将相等。

这是确定两个图是否非同构的良好启发式方法的来源因为当然相等并不能保证同构的存在。

检查代数图论以了解许多其他有趣的技术。

于 2009-07-06T09:43:14.320 回答