我一直在阅读《线性代数及其应用》以帮助理解计算机科学材料(主要是机器学习),但我担心很多信息对CS毫无用处。例如,除非您尝试编写新的方程式求解器,否则了解如何有效地求解线性方程式系统似乎没有什么用。此外,这本书还讨论了跨度,线性相关性和独立性(矩阵有逆的时候)以及它们之间的关系,但是我想不出它在CS中的任何应用。那么,CS中使用线性代数的哪些部分?
我一直在阅读《线性代数及其应用》以帮助理解计算机科学材料(主要是机器学习),但我担心很多信息对CS毫无用处。例如,除非您尝试编写新的方程式求解器,否则了解如何有效地求解线性方程式系统似乎没有什么用。此外,这本书还讨论了跨度,线性相关性和独立性(矩阵有逆的时候)以及它们之间的关系,但是我想不出它在CS中的任何应用。那么,CS中使用线性代数的哪些部分?
Answers:
您提到的部分是线性代数的基本概念。在您首先了解基本概念之前,您无法理解更高级的概念(例如,特征值和特征向量)。数学上没有捷径可走。如果不对跨度和线性独立性的概念有直观的了解,您将不会在线性代数中走得太远。
有些算法仅适用于满秩矩阵-您知道这意味着什么吗?您知道什么会使矩阵不完整吗?如何处理呢?如果您不知道线性独立性是什么,您将一无所知。
如果实施不当,用于求解线性方程式的高斯消去算法实际上可能在数值上不稳定,这在某些情况下可能需要担心。如果不了解算法,您将不知道问题的根源以及您是否有办法解决–不是在求解线性方程式的算法级别,而是在提出正确的线性方程式的解决方案级别。
简而言之,不要偷懒,要相信这些东西是有用的。
线性代数有时在图算法中非常有用且功能强大。使用矩阵树定理,您可以有效地计算图形具有的生成树的数量(您需要了解特征值)。FKT算法是一个更具挑战性的应用,需要您更加牢固地掌握线性代数,该算法可在多项式时间内计算平面图中的完美匹配数。
线性代数在代数图论和谱图论中的应用还有更多令人兴奋的例子。出现的算法不仅用于像我给出的两个示例一样计算问题。例如,您还可以检查连通性,或计算图的直径。
线性代数最著名的用途之一是Google的Pagerank算法:
PageRank值是修改后的邻接矩阵的左主特征向量的条目。
几乎涉及计算机图形学,动画,计算机视觉,图像处理,科学计算或物理现象模拟的所有事物都将涉及矢量和矩阵(线性代数)的广泛使用,从简单的事物(如表示空间变换和方向)到非常复杂的算法。这些东西曾经是超级计算的领域,但是现在,这些领域完全相同,它们是台式机,手机以及从视频游戏到计算摄影再到自动驾驶汽车等所有其他最酷应用的核心。线性代数无处不在。
那里有很多基于矩阵代数的算法和技术。那太好了。主成分分析是一些相当有用的应用线性代数的示例。傅立叶分析也可以这样说,它也起源于正交性和内积。因此,有直接的应用程序。
但是,更重要的是,参加线性代数课程非常有价值,因为它可以教会您以某种方式思考。大多数好的线性代数类都将重点放在泛化,逻辑和证明上。总的来说还是某些特定的普通情况是正确的吗?你怎么能确定?能够思考如何证明您的假设是好的,因为它可以帮助您避免做出错误的假设,并编写不会像您假设的那样泛化的代码。它还可以帮助您考虑如何对本来很难概括的事物进行概括,让您解决更大的问题。
总而言之,记住线性代数是件好事,因为它对您的大脑部分起了举重的作用,这对计算机科学很有用。
解决线性方程组(可以用高斯消元法完成),线性编程(可以用单纯形法来解决),最小二乘和压缩感知(请参阅Wikipedia文章)是许多实际出现的问题。应用领域。线性代数有助于为这些问题开发正确而有效的算法。
参见课文[Cormen,Leiserson,Rivest和Stein,“算法简介,第三版”],其中第28章讨论矩阵运算,第29章讨论线性编程。