我的几个同行已经提到“线性代数”在研究算法时非常重要。我研究了各种算法,并参加了一些线性代数课程,但我没有看到这种联系。那么算法中如何使用线性代数?
例如,一个有趣的东西可以用图表的连接矩阵吗?
答案 0 :(得分:45)
三个具体的例子:
基本上,它归结为线性代数在处理多个变量时是一种非常强大的方法,并且在设计算法时使用它作为理论基础有很大的好处。在许多情况下,这个基础并不像你想象的那么明显,但这并不意味着它不存在。你很可能已经实现了在没有linalg的情况下很难得到的算法。
答案 1 :(得分:15)
密码学家可能会告诉你,在研究算法时掌握数论是非常重要的。他是对的 - 因为他的特殊领域。统计数据也有其用途 - 跳过列表,哈希表等。图论的有用性更加明显。
线性代数和算法之间没有固有的联系; 数学与算法之间存在固有的联系。
线性代数是一个具有许多应用的领域,因此利用它的算法也有很多应用。你没有浪费你的时间研究它。
答案 2 :(得分:11)
The $25 billion dollar eigenvector
我不会撒谎......我甚至从未读过整件事...也许我现在会: - )。
答案 3 :(得分:5)
我不知道我是否会将其称为“线性代数在研究算法时非常重要”。我几乎把它放在另一边。很多很多现实问题最终都要求你解决一组线性方程式。如果你最终必须解决其中一个问题,你将需要了解一些处理线性方程的算法。许多算法是在计算机作为职称时开发的。例如,考虑高斯消元法和各种矩阵分解算法。例如,对于如何解决非常大的矩阵的问题,有一个非常复杂的理论。
机器学习中最常见的方法最终会有一个优化步骤,需要求解一组联立方程。如果你不知道线性代数,那么你将完全迷失。
答案 4 :(得分:5)
许多信号处理算法基于矩阵运算,例如傅里叶变换,拉普拉斯变换,......
通常可以将优化问题简化为求解线性方程组。
答案 5 :(得分:4)
线性代数在计算机代数中的许多算法中也很重要,正如您可能已经猜到的那样。例如,如果您可以减少一个问题,即多项式为零,其中多项式的系数在变量x1, …, xn
中是线性的,那么您可以求出x1, …, xn
的多项式值通过将每个x^n
项的系数等于0并求解线性系统来等于0。这被称为未确定系数的方法,并且例如用于计算部分分数分解或集成有理函数。
对于图论,关于邻接矩阵的最酷的事情是,如果你对非加权图(每个条目是0或1)M^n
取邻接矩阵的n次幂,那么每个条目i,j
将是从顶点i
到j
的顶点n
的路径数量{{1}}。如果这不仅酷,那么我不知道是什么。
答案 6 :(得分:2)
这里的所有答案都是算法中线性代数的很好的例子。
作为一个元回答,我将补充说你可能在你的算法中使用线性代数而不知道它。使用SSE优化的编译器(2)通常通过并行处理许多数据值来对代码进行矢量化。这基本上是元素LA。
答案 7 :(得分:2)
答案 8 :(得分:1)
例如,一个有趣的东西可以用图表的连接矩阵吗?
矩阵的许多代数性质在顶点排列下是不变的(例如abs(行列式)),因此如果两个图是同构的,它们的值将是相等的。
这是确定两个图表的良好启发式的来源 是不同构,因为当然平等并不能保证同构的存在。
检查algebraic graph theory以了解其他许多有趣的技巧。