代数结构在理论计算机科学中的用途


67

我是一名软件从业人员,我正在撰写一项有关代数结构的调查报告,以进行个人研究,并试图提供有关如何在理论计算机科学(以及程度较小的计算机科学的其他子领域)中使用这些结构的示例。 。

在组理论下,我遇到了形式语言的句法半身像和并行/并发计算的轨迹和历史半身像。

从环论的角度来看,我遇到了用于图形处理和基于半环的解析的半环框架。

在我的研究中(但愿如此),我尚未从模块理论中找到任何代数结构的用途。

我假设还有更多示例,而我只是没有在正确的位置寻找它们。

理论计算机科学(以及计算机科学的其他子领域)中常见的上述领域的代数结构还有哪些其他示例?另外,您可以推荐哪些期刊或其他资源涵盖这些主题?


12
这似乎是巨大的。理论计算机科学中出现了各种各样的代数结构(组,环,半环,半群,域),并且它无处不在,以至于很难找到特定的子组件。另外,请不要忘记哈希和其他许多随机指纹方法的有限字段。
Suresh Venkat 2012年

3
可能任何可表示的东西都可以在计算机科学中使用!
vs

Answers:


46

我的印象是,总的来说,传统代数对于计算机科学而言过于具体。因此,计算机科学家要么使用较弱的(并因此使用更通用的)结构,要么对传统结构进行泛化,以使它们能够满足其需求。我们还使用范畴论很多,数学家并不认为这是代数的一部分,但我们不知道为什么不代数。我们发现将传统数学划分为“代数”和“拓扑”作为单独的分支是不方便的,甚至是毫无意义的,因为代数通常是一阶的,而拓扑则有可能处理更高阶的方面。因此,计算机科学中使用的结构混有代数和拓扑。实际上,我想说的是它们比代数更倾向于拓扑。从我们的角度来看,将推理归类为“代数”和“逻辑”是另一种毫无意义的划分,因为代数涉及方程式属性,而逻辑也涉及所有其他种类的属性。

回到您的问题,半群和类半群词在自动机理论中被大量使用。艾伦伯格(Eilenberg)撰写了两卷集,其中第二集几乎完全是代数。有人告诉我他正在计划四册,但是他的年龄不允许完成该项目。让·埃里克·平(Jean-Eric Pin)在在线书中对此内容进行了现代化改造。自动机是“ monoid模块”(也称为“半身像动作”或“动作”),对于计算机科学而言,它们处于适当的普遍水平。传统的环形模块可能太具体了。

格理论是指称语义学发展的主要力量。当计算机科学家与数学家共同开发出连续的网格,然后将其推广到领域时,拓扑结构被混入了网格理论中。我想说领域理论是计算机科学家自己的数学,而传统数学对此一无所知。

通用代数用于定义数据类型的代数规范。到了那里,计算机科学家立即发现需要处理更一般的属性:条件方程(也称为方程式Horn子句)和一阶逻辑属性,仍然使用通用代数的相同思想。正如您将要注意的那样,代数现在已合并到模型理论中。

范畴论是类型论的基础。随着计算机科学家不断发明新的结构来处理各种计算现象,类别理论是一个放置所有这些思想的非常令人欣慰的框架。我们还使用由类别理论支持的结构,这些结构在“传统”数学中不存在,例如函子类别。此外,代数回来到从视图中使用一个明确的点图片单子效果代数理论Coalgebras是代数的对偶,也有很多应用。

因此,“代数”在计算机科学中有广泛的应用,但它不是传统代数教科书中发现的那种代数。

附加说明:范畴论是代数有一种具体的意义。 Monoid是代数的基本结构。它由一个有关联的二进制“乘法”运算符组成。范畴论通过将“类型”与mono半群的元素关联起来对此进行了概括。仅当类型匹配时,才可以“相乘”元素:如果和然后。例如,矩阵具有一个乘法运算,从而使它们成为一个monoid。但是,矩阵(其中和a X Y b Y Z a b X Z n × n m × n m na:XYa:XYb:YZab:XZn×nm×nmn可能会有所不同)形成一个类别。因此,monoid是具有单一类型的类别的特殊情况。环是具有单个类型的加性类别的特例。模块是函子的特殊情况,其中源类别和目标类别具有单一类型。等等。范畴论是类型代数,其类型使其比传统代数无限适用。


24
范畴理论家认为代数是范畴理论的一部分。代数论者认为范畴论是代数的一部分。逻辑学家认为他们都疯了。
杰夫斯

4
在纯数学中拓扑和代数之间有很多相互作用...
Sasho Nikolov 2012年

16
这是一个很好的答案,但我认为您对“团聚”和“孤岛文化”的评论具有误导性。代数,拓扑和逻辑在您看来统一的原因是,对于您关心的问题,与您相关的这些主题的各个部分紧密地交织在一起。但是,例如,如果您要尝试根据复数对4维流形进行分类,您会很快看到数学家所做的传统区分的有用性。这完全取决于您要解决的问题。
Timothy Chow

3
我个人仍然对您对数学和计算机科学中的研究文化所做的任何单一推断完全感到困惑。正如@TimothyChow指出的那样,开发了不同的子字段来处理各种问题,因此开发了不同的工具。从不同的子领域带来工具是有意义的,人们已经意识到,存在着相互作用。例如,在有关代数的任何讲义中,都不难找到例子。
Sasho Nikolov

3
关于计算机科学中的孤岛文化,我也不同意。我个人不知道为什么PL研究人员需要所有这些重型机械,它们的用途,解决的问题以及我为什么要关心。也许这是我自己的无知,但我怀疑大多数复杂性理论家和算法学家都知道这些问题的答案……
Sasho Nikolov 2012年

23

我一直以来最喜欢的在TCS中使用群论的应用是Barrington定理。您可以在复杂性博客上找到该定理的说明,并在该帖子的评论部分中找到Barrington的说明。


2
+1:许多人认为它是复杂性理论中最令人惊讶的结果之一。:)
Kaveh'3

15

组,环,字段和模块在计算拓扑中无处不在。尤其参见卡尔森和佐莫罗迪安关于(多维)持久同源性的著作[ex:1 ],该著作全部涉及主要理想域上的分级模块。


@JeffE,请链接。
scaaahu 2012年

1
@JeffE,我的评论并不是冒犯性的。是的,我确实知道如何使用Google。我的意思是,是否有卡尔森(Carlsson)和佐莫罗迪安(Zomorodian)撰写的特定文章,可以作为对持久同源性的概述?如果有一个,请告诉我们。谢谢。
scaaahu 2012年

我建议从本文开始。(对不起,我的早期评论
无人问津

@JeffE,明白了,正是我想要的。谢谢。
scaaahu 2012年

14

这是一种非常不错的实用用法:一种用于计算图连接性的算法(来自FOCS2011)。为了计算图的s-> t连通性,作者提出了一种算法,该算法将具有从有限域绘制的条目的随机矢量分配给s的外边缘,然后通过取随机值为图中的所有边缘构造相似的矢量线性组合,最后通过计算分配给t边缘的结果向量的秩来发现连通性。


感谢您的指导和概述!这是自2011年FOCS:dx.doi.org/10.1109/FOCS.2011.55
安德拉斯·萨拉蒙

12

格点和不动点是程序分析和验证的基础。尽管由于我们关注诸如计算和逼近固定点之类的算法问题,所以很少使用晶格理论的高级结果,而晶格理论的研究则侧重于其他问题(与拓扑结构,对偶理论等的关联)。最初的抽象解释论文使用基本格子理论。Roberto Giacobazzi及其合作者的工作使用了更先进的结果。

在分布式计算中,使用代数拓扑方法得出了一个著名的不可能结果系列(请参阅Maurice Herlihy和Nir Shavit的著作)。

[编辑:请参阅拓扑在计算机科学中的应用 ]。


12

通用代数是研究约束满足问题复杂性的重要工具。

例如,二分法猜想指出,从广义上讲,有限域上的约束满足问题是NP完全的或多项式时间可解的。请注意,根据Ladner定理,除非P = NP,否则NP中存在问题,这些问题不在P中,也不是NP完全的,因此,推测认为CSP特别具有二分法,而较大的复杂性类别则没有。这也将提供一些解释,为什么我们在实践中遇到的大多数问题可以归为NP完全问题或P。

二分法在几种特殊情况下得到了证明,例如二元域CSP(Schaefer)和三元域CSP(Bulatov),以及同态到无向图(Hell和Nesetril)。但是一般情况是相当公开的。攻击的主要途径之一是通过通用代数。非常粗略地讲(我绝对不是专家!),我们将CSP的多态性定义为CSP域上的一个函数,如果将其应用于每个变量,则所有满足的约束都将得到满足。从某种意义上说,CSP的多态集反映了它的复杂性。例如,如果CSP A接受了CSP B的所有多态性,则A是多项式时间可简化为B。例如,如果CSP的多态代数是幂等的并且接受一元类型,则CSP是NP完全的。幂等是一个简化的假设,可以或多或少地做出,而不会失去一般性。证明代数是幂等且不承认一元类型的CSP可以在多项式时间内求解,这将证明二分法猜想。

参见Bulatov所做的调查:http : //www.springerlink.com/content/a553847g6h673k05/


11

这是来自TCS不同部分的两个应用程序。

半环用于对数据库中的注释建模(特别是对出处所需要的注释),并且通常还用于价值约束满足中的评估结构。在这两种应用中,必须以自然形成半环结构的方式将各个值组合在一起,并具有关联性,并且一个半环操作分布在另一个环上。通常,关于模块的查询,在这些应用程序中,没有任何一个monoid都具有反函数。


10

环,模块和代数形式用于纠错,并且更普遍地用于编码理论。

具体而言,存在一种抽象的纠错方案(代数几何代码),该方案将里德-所罗门代码和汉语余数代码进行了概括。该方案基本上是使您的消息来自环R,并通过将其残差取模R中的多个理想值进行编码。在有关R的某些假设下,可以证明这是一个不错的纠错码。

在列表解码的世界中,Guruswami 的最新论文提出了一种线性代数方法,用于对折叠的Reed-Solomon码进行列表解码,该方法具有很好的特性:所有候选消息都位于消息空间的低维仿射子空间中。可以构造子空间规避集,这些集几乎与整个空间一样大,但与每个低维仿射子空间的交集都很小。如果将消息限制为来自消息空间内的子空间规避集,则Guruswami的方案提供了一种算法,可以保证良好的列表大小。到目前为止,Dvir和Lovett在他们即将发表的STOC论文Subspace Evasive Sets中给出了子空间规避集的唯一明确构造。 并通过采用特定的仿射变种(并随身携带其笛卡尔积)构建集合。


6

查看Ramsey理论 -基本上是对鸽孔原理的重大概括,它是许多自动机和形式语言理论的基础(或者说,鸽孔原理是Ramsey理论的最简单案例)。基本上说,即使高度无序的结构也足够大,结果也必然包含很多有序。举一个超越鸽子洞原理的小例子,请注意,如果您雇用了六个人,那么他们三个要么彼此认识,要么三个彼此不认识。

本文看起来像是开始与计算机科学联系的好地方,但是您可以在Google上搜索更多内容。它在本质上比代数更具有组合性,但是在代数和理论CS中有许多应用。

并查看发明家弗兰克·拉姆齐Frank Ramsey)的故事,他确实是一位杰出的数学家,他在经济学,哲学和数学方面做出了基础性甚至革命性的贡献,许多人直到很晚才意识到这一点,直到26岁去世。想一想!实际上,拉姆齐(Ramsey)的原始定理是拉姆齐(Ramsey)理论的基础,只是一篇论文中的引理,其目标是数学逻辑。


2
这是经典的极值组合学的东西,我想知道您在哪里看到与代数的联系?(我不认为拉姆齐理论是重大问题和定理的来源)
Sasho Nikolov

SAk>=2nwA+neSw=xu1...unyˉ Ù = Ëx,yA和所有。拉姆西定理最容易证明这一点。u¯i=e
大卫·刘易斯

我并不是在质疑拉姆齐理论(更不用说图论)与tcs的相关性。我是说,OP询问有关代数和拉姆西理论应用的问题通常与afaik代数无关。但由于您似乎已将拉姆齐理论->代数-> tcs关联起来,也许您可​​以将其添加到答案中
Sasho Nikolov 2012年

@Sasho-如果您的意思是Ramsey Theory不是代数的话题,那么我的回答是不合时宜的,那么您是100%正确的。我很抱歉。我想我的心态往往很容易跨越学科和亚学科领域。但这比那更糟-拉姆齐理论绝不是“代数结构”。请随意拒绝我的回答。问候。
大卫·刘易斯

好吧,虽然降低投票可能是合乎逻辑的,但我喜欢极值组合运算,所以我不会去:)顺便说一句,我很确定代数结构中会出现一些拉姆齐型现象,甚至可能是由于“密度”较低而引起的。对称性,所以您给我一个问题的想法
Sasho Nikolov

5

通过使用群论,可以分析具有很多对称性的任何问题。一个示例是找到诸如rubic's cube之类的算法。尽管我不知道细节,但我确信证明神的数字是20需要对小组进行认真的理论修剪。在不同的上下文中,诸如nauty之类的图同构问题的实际求解器使用图的自同构组。


同样,图同构的算法[Luks '81; Babai–Luks '82]具有最著名的保证(即,理论上可行,但在实践中可能效率不高),大量使用了群论,甚至引用了有限简单群的分类。
约书亚·格罗肖

5

代数(以及代数几何)在密码学中扮演着非常重要的角色,椭圆曲线组,(数论)晶格,当然是几乎所有现代密码学工作的基础。Zp


1
据我了解,现代加密技术中还使用了其他代数结构(有限域,环和其他结构)-逐渐放弃数论,更多地关注晶格,纠错码和“抗量子”问题。
乔什

1

在函数式编程中,问题的最通用,最优雅的抽象本质上通常是代数的(或范畴论的):monoids,半环,函子,monad,F-代数,F-coalgebras等。一些经典结果(例如,Yoneda引理)恰好具有计算内容和实用性。

此外,还有同伦类型理论,该理论解释代数拓扑环境中的类型理论。


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.