线性代数的哪些部分在计算机科学中使用?


15

我一直在阅读《线性代数及其应用》以帮助理解计算机科学材料(主要是机器学习),但我担心很多信息对CS毫无用处。例如,除非您尝试编写新的方程式求解器,否则了解如何有效地求解线性方程式系统似乎没有什么用。此外,这本书还讨论了跨度,线性相关性和独立性(矩阵有逆的时候)以及它们之间的关系,但是我想不出它在CS中的任何应用。那么,CS中使用线性代数的哪些部分?


2
您是在寻求自己的利益,还是您的老师在寻找激励学生的策略?
拉斐尔

线性代数在计算机图形的许多部分都很有用(您可以找到很多相关的信息进行谷歌搜索)。
Juho 2015年

线性方程组的求解在计算机科学中非常有用。例如:en.m.wikipedia.org/wiki/Combinatorial_optimization
Ant P

1
矩阵在游戏开发中大量使用,IE在投影,旋转和四元数数学中使用。
Paul

@Paulpro问题是线性代数(一个工作体)的应用,而不是矩阵(一组对象)的应用。
拉斐尔

Answers:


11

您提到的部分是线性代数的基本概念。在您首先了解基本概念之前,您无法理解更高级的概念(例如,特征值和特征向量)。数学上没有捷径可走。如果不对跨度和线性独立性的概念有直观的了解,您将不会在线性代数中走得太远。

有些算法仅适用于满秩矩阵-您知道这意味着什么吗?您知道什么会使矩阵不完整吗?如何处理呢?如果您不知道线性独立性是什么,您将一无所知。

如果实施不当,用于求解线性方程式的高斯消去算法实际上可能在数值上不稳定,这在某些情况下可能需要担心。如果不了解算法,您将不知道问题的根源以及您是否有办法解决–不是在求解线性方程式的算法级别,而是在提出正确的线性方程式的解决方案级别。

简而言之,不要偷懒,要相信这些东西是有用的。


5
“坚信这些东西是有用的” –好吧,我们难道不都知道老师在讲课时把他们的宝贝放在心上而不关心整体的有用性吗?学生无法真正分辨出差异,但他们也不应该盲目地信任。“我需要什么呢?” 这是一个公平的问题,但是“这只是为了训练您的思想”也是一个公平的答案。
拉斐尔

9
“不要偷懒”设置的语气没有建设性。我有很好的好奇心,投入感,而且一点也不懒惰的学生问我这个问题。我认为,大量的CS学生发现传统的线性代数课程与他们认为需要的世界不同。他们的兴趣是计算和编程,而不一定是数学。需要或想要某种背景和动机并不表示懒惰。我们不要这样画它。
Logan Mayfield'3

@Raphael,洛根·梅菲尔德,你们甚至还知道机器学习与线性代数之间的关系吗?尽管有些具体,但尤瓦尔(Yuval)在他提到的示例中非常讲究。仅在一篇Internet帖子中就无法完全回答OP的问题。
musicliftsme

7

线性代数有时在图算法中非常有用且功能强大。使用矩阵树定理,您可以有效地计算图形具有的生成树的数量(您需要了解特征值)。FKT算法是一个更具挑战性的应用,需要您更加牢固地掌握线性代数,该算法可在多项式时间内计算平面图中的完美匹配数。

线性代数在代数图论谱图论中的应用还有更多令人兴奋的例子。出现的算法不仅用于像我给出的两个示例一样计算问题。例如,您还可以检查连通性,或计算图的直径


一个人想知道为什么要计数生成树或完美匹配的数量。这有什么用?您是否有一个真实的应用程序?
Yuval Filmus

@YuvalFilmus我不是,要想开始计算问题可能更困难。我认为,尽管FKTWiki条目提供了一些历史和动机,但从理论上来说,两者都是有趣的。无论如何,主要要点是线性代数对于开发图算法很有用,因此在计算机科学中具有应用。
Juho 2015年


3

几乎涉及计算机图形学,动画,计算机视觉,图像处理,科学计算或物理现象模拟的所有事物都将涉及矢量和矩阵(线性代数)的广泛使用,从简单的事物(如表示空间变换和方向)到非常复杂的算法。这些东西曾经是超级计算的领域,但是现在,这些领域完全相同,它们是台式机,手机以及从视频游戏到计算摄影再到自动驾驶汽车等所有其他最酷应用的核心。线性代数无处不在。


2

那里有很多基于矩阵代数的算法和技术。那太好了。主成分分析是一些相当有用的应用线性代数的示例。傅立叶分析也可以这样说,它也起源于正交性和内积。因此,有直接的应用程序。

但是,更重要的是,参加线性代数课程非常有价值,因为它可以教会您以某种方式思考。大多数好的线性代数类都将重点放在泛化,逻辑和证明上。总的来说还是某些特定的普通情况是正确的吗?你怎么能确定?能够思考如何证明您的假设是好的,因为它可以帮助您避免做出错误的假设,并编写不会像您假设的那样泛化的代码。它还可以帮助您考虑如何对本来很难概括的事物进行概括,让您解决更大的问题。

总而言之,记住线性代数是件好事,因为它对您的大脑部分起了举重的作用,这对计算机科学很有用。


0

解决线性方程组(可以用高斯消元法完成),线性编程(可以用单纯形法来解决),最小二乘和压缩感知(请参阅Wikipedia文章)是许多实际出现的问题。应用领域。线性代数有助于为这些问题开发正确而有效的算法。

参见课文[Cormen,Leiserson,Rivest和Stein,“算法简介,第三版”],其中第28章讨论矩阵运算,第29章讨论线性编程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.