组,monoid和环在数据库计算中有什么用?


38

为什么像Twitter这样的公司会对诸如群,半体和环之类的代数概念感兴趣?在github:twitter / algebird上查看他们的存储库。

我所能找到的是:

有趣的近似算法(例如Bloom过滤器HyperLogLogCountMinSketch)的Monoid实现。这些使您可以像想数字一样思考这些复杂的操作,然后将它们加到hadoop或在线中以生成强大的统计信息和分析数据。

并在GitHub页面的另一部分中:

它最初是作为Scalding的Matrix API的一部分开发的,其中矩阵的值是MonoidsGroupsRings的元素 。随后,很明显,该代码在Scalding和Twitter的其他项目中具有更广泛的应用。

这种更广泛的应用可能是什么?在Twitter上以及出于一般利益?


似乎数据库的组合聚合具有类单态结构。

关于Quora的相同问题:Twitter对抽象代数(与algebird一起)的兴趣是什么?


我有数学背景,但不是计算机科学家。拥有半身像和半群的“真实世界”使用将是很棒的。这些通常被认为是无用的理论构造,并且在许多抽象代数课程中都被忽略了(因为缺乏有趣的说法)。


1
我发现这篇很棒的文章hon HackerNews news.ycombinator.com/item?id=5196708 “代数数据类型的代数”
john mangual

同意,感到惊讶的是,twitter在这些区域中闲逛,其相当抽象。主要想法似乎是类似于Mapreduce的系统的可重用组件。algebird似乎已从烫伤中“脱节”。这是关于烫伤的话题。但是它没有提到代数对象。可能它们可以被用作数据流数据对象的原语/类型操纵,其也被映射到功能的编程风格....
VZN

与烫伤作者在他的algebird图书馆的简短交流,在Twitter:twitter.com/posco/status/300692719561482240
john mangual

2
我会强烈反对以下观点,即mono半群和半群均被认为是“无用的理论构造”,因为它们在范畴论和建模各种其他代数结构方面在数学本身中也都具有相当大的实用性。您认为半群“无用”的是哪一门数学学科?
Steven Stadnicki

形式语言的句法半形体也许是相关的,尽管答案中未提及。尽管我希望像许多答案一样,它与总体计算而不是数据库计算有关。
PJTraill

Answers:


27

主要的答案是,通过利用半群结构,我们可以构建可以正确并行化的系统,而无需了解底层操作(用户有望实现关联性)。

通过使用Monoid,我们可以利用稀疏性(我们处理许多稀疏矩阵,其中在某些Monoid中几乎所有值都是零)。

通过使用Rings,我们可以对除数字以外的其他事物进行矩阵乘法(有时会这样做)。

algebird项目本身(以及问题历史记录)非常清楚地解释了这里发生的事情:我们正在构建许多用于聚合大型数据集的算法,并且利用操作的结构使我们在系统方面取得了成功(这通常是尝试在1000个节点上生产算法时的痛点)。

为任何Semigroup / Monoid / Group / Ring解决一次系统问题,然后您可以插入任何算法,而无需考虑Memcache,Hadoop,Storm等。


4
有人可以扩展某些Monoid中稀疏矩阵与零之间的链接吗?
vzn

一些链接到示例或进一步阅读的书真的很不错
Erik Allik '16

11

Monoid在编程中无处不在,只是大多数程序员都不了解它们。

  • 数运算,例如加法和乘法。
  • 矩阵乘法。
  • 基本上所有类似集合的数据结构都构成了monoid,其中monoidal操作是级联或并集。这包括列表,集合,键到值的映射,各种树等。
  • 对于给定类型的函数连同上恒等函数形式的自同态半群。AAAAA

其他一些操作不是形成半体式而是半组。一个很好的例子是搜索元素序列中的最小元素:表示和的最小值,其中包含给定的顺序。abab

由于monoid非常笼统,因此它们可以编写非常通用的函数。例如,数据结构的折叠可以表示为将其每个元素映射到一个monoid,然后使用monoidal操作将它们组合为单个结果。

另一个很好且非常笼统的示例是对平方(或半群)求平方求幂。我们可以编写仅在操作中计算的单个函数。将其应用于不同的monoid,我们得到:aantimesO(logn)

  • 数字快速求幂;
  • 矩阵的快速指数(这可以被用来计算斐波纳契数在乘法);O(logn)
  • 快速构建大型手指树的方法,因为添加一个元素需要时间,而合并2个树则需要。O(1)O(log(min(n1,n2)))
  • 等等

有关更多示例,请参见编程中的monoids / semigroups示例


7

分布式文件系统(DFS)中的一个重要问题是从分布式块生成文件。信息论和代数(组,环,线性代数等)中的擦除代码区域广泛用于分布式容错文件系统中,例如HDFS RAID(基于Hadoop的文件系统)中。社交网络和云公司广泛地基于DFS,因此他们需要掌握代数和擦除代码的人来设计更好的高性能系统(例如Reed-Solomon代码等)。

这也是它们在云存储中的应用(代数)的好海报:云存储的新代码


6

如果你的问题是

计算中的组,monoid和环的示例是什么?

那么我能想到的一个例子就是图论中的寻路算法。如果我们定义了一个半环与作为和为,那么我们就可以用矩阵乘法与邻接矩阵找到所有点对最短路径。该方法实际上在CLRS中进行了描述。+min+

尽管从代数的角度看这似乎只是理论上的,但它使我们能够利用非常优化的线性代数库来解决图形问题。组合式BLAS就是其中一种。


1
是的,我们添加了minplus来做到这一点:github.com/twitter/algebird/blob/develop/algebird-core/src/main/…–
Oscar Boykin

4

某个有限字母上的所有单词的集合以及串联形成了自由的半体像。因此,形式语言的整个领域都可以通过代数透镜来观察,有时这样讲。(Σ,)

作为回报,对形式语言的考虑产生了Earley解析器,该解析器可以扩展为在半环上解析。这在自然语言处理和其他使用(正式)语言的随机模型的领域中很有用。


3

我有数学背景,但不是计算机科学家。拥有半身像和半群的“真实世界”使用将是很棒的。这些通常被认为是无用的理论构造,并且在许多抽象代数课程中都被忽略了(因为缺乏有趣的说法)。

有太多有趣的话要说。但是,与抽象代数和分析相比,它更是离散数学和组合数学的主题,至少对于较琐碎的主题更是如此。还有一个问题是,您必须先对某个主题了解多少,然后才能告诉其他人,这将是与Monoid和Semigroup相关的有趣数学主题。例如,我发现以下主题(与半群有关)很有趣:

  • 有限半群和Krohn-Rhodes理论
  • 局部对称,反半群,类群和拟晶体
  • 半环和热带几何
  • 部分订单和莫比乌斯函数
  • 次模函数和(类似于Dulmage-Mendelsohn的)分解

我对每个主题都了解很多吗?可能不会。还有更多关于半式和半群的数学主题,其中一些是半群理论本身的内部问题(例如格林的关系),另一些则更笼统而不特定于半群(通用半群,同构和同构定理,商结构和一致性),但从数学角度来看也很重要。我在上面引用的主题大多具有“真实世界”应用程序,但还有更多相关主题也具有“真实世界”应用程序。


以上并不是对真实问题的答案,而只是解决了“……通常被认为是无用的理论构造……由于缺乏有趣的说法……”。因此,我列出了一些“有趣”的观点,声称这些大多数都具有“现实世界”应用程序,现在Hi-Angel要求提供有关这些应用程序的一些信息。但是因为“有太多有趣的话要说”,所以不要从该信息中获得太多期望:Krohn-Rhodes定理是有限半群的分解定理。它的应用涉及将花圈产品解释为与自动机理论和常规语言相关的一种(换能器)组成,马克五·劳森(Mark V Lawson):两节教程讲座和背景材料(现在包括404)包含了关于逆半群的好材料。它们应用的基础是它们与对称逆半群的连接,即一组集合上所有部分双射的集合。也可以从逆半群的基本代数表征开始,但是这种方法可能会忽略对许多应用很重要的偏序连接。有一天,我将不得不写一篇关于逆半群的特定应用的博客,该逆半群是用于压缩半导体布局的“层次结构”。在其他答案中已经描述了半环的应用(热带几何将使我们远离计算机科学)。由于monoid和半群也与偏序相关,因此像Möbius这样的不错的主题也如Combinatorics:Rota Way中所述。然后,来自矩阵和矩阵的系统分析主题(例如,Dulmage-Mendelsohn分解)也变得相关,这是我研究晶格理论(和隐藏的层次结构)的动机之一。


并不是我在抱怨,而是我想,如果您要对列出的要点的实际应用添加一些信息,您将获得更多的支持。
Hi-Angel

1
@ Hi-Angel上面的内容并不是对真正问题的答案,而只是解决了“ ...无用的理论构造...缺乏有趣的说法...”的评论。它暗示我可能不是最有资格解决这个问题的人:“我对这些主题的每个知识了解很多吗?也许不是。” 我投票最高的职位属于同一类别。 本杰明·斯坦伯格(Benjamin Steinberg)称其为“有毒”区域,他将有资格“回答”……
托马斯·克里姆佩尔
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.