データベース計算でのグループ、モノイド、およびリングの使用法は何ですか?


38

Twitterのような会社が、グループ、モノイド、リングなどの代数的概念に興味を持つのはなぜですか?github:twitter / algebirdでリポジトリを参照してください。

私が見つけることができたのは:

Bloom filterHyperLogLogCountMinSketchなどの興味深い近似アルゴリズムのためのモノイドの実装。これらにより、これらの洗練された操作を数字のように考え、それらをhadoopまたはオンラインで加算して、強力な統計および分析を生成できます。

そしてGitHubページの別の部分で:

もともとは行列がの要素である値だった火傷のマトリックスAPIの一部として開発されました モノイドグループ、またはリングを。その後、Scalding内やTwitter内の他のプロジェクトで、コードの適用範囲が広がったことは明らかでした。

この広範なアプリケーションは何でしょうか?ツイッター内で、一般的な関心のために?


データベースの構成集合体はモノイドのような構造を持っているようです。

Quoraに関する同じ質問:抽象代数(代数付き)に対するTwitterの関心は何ですか?


私は数学のバックグラウンドを持っていますが、コンピューター科学者ではありません。モノイドとセミグループを「現実世界」で使用するのは素晴らしいことです。これらは通常、役に立たない理論的構成要素と見なされ、多くの抽象的な代数コースで無視されます(興味深いことは何もありません)。


1
この素晴らしい記事を見つけましたhon HackerNews news.ycombinator.com/item?id=5196708「代数データ型の代数」
ジョン・マンガル

同意すると、驚くべきことに、Twitterはこれらの分野で、かなり抽象的であることに気付きます。主なアイデアは、Mapreduceのようなシステムの再利用可能なコンポーネントのようです。algebirdは火傷から「切り離された」ようです。上の相続人の話火傷。ただし、代数オブジェクトについては言及していません。おそらくそれらは、関数型プログラミングスタイルにマッピングされるデータフローで操作するためのデータオブジェクトプリミティブ/タイプとして使用できます
。...-vzn

algebirdライブラリーでの火傷の著者との短いやり取り、Twitter:twitter.com/posco/status/300692719561482240
ジョン・マンガル

2
モノイドとセミグループは両方とも「無駄な理論的構成体」と見なされるという主張に強く異議を唱えます。どちらもカテゴリー理論と他のさまざまな代数構造のモデリングの両方で数学自体の中でかなりの有用性を持っています。半群を「役に立たない」と考える数学の分野はどこですか?
スティーブンスタドニッキー

おそらく、正式な言語の構文モノイドは関連していますが、回答には記載されていません。多くの答えのように、データベースの計算よりも一般的な計算に関係していると思います。
PJTraill

回答:


27

主な答えは、セミグループ構造を活用することで、基になる操作を知らなくても正しく並列化するシステムを構築できることです(ユーザーは結合性を約束しています)。

モノイドを使用すると、スパース性を利用できます(モノイドではほとんどすべての値がゼロである多数のスパース行列を扱います)。

リングを使用することで、数値以外の行列乗算を実行できます(場合によっては実行しました)。

algebirdプロジェクト自体(および問題の履歴)は、ここで何が行われているのかをかなり明確に説明しています。大規模なデータセットを集約するための多くのアルゴリズムを構築しており、操作の構造を活用することでシステム側に勝利をもたらします(通常、数千のノードでアルゴリズムを生産しようとするときの問題点です)。

セミグループ/モノ/グループ/リングについてシステムの問題を一度解決すれば、Memcache、Hadoop、Stormなどを考えずにアルゴリズムをプラグインできます。


4
誰かがスパース行列とモノイドのゼロの間のリンクを拡張できますか?
vzn

いくつかの例へのリンクや
参考資料

11

モノイドはプログラミングのいたるところに存在しますが、ほとんどのプログラマーはモノイドを知りません。

  • 加算や乗算などの数値演算。
  • 行列の乗算。
  • 基本的に、すべてのコレクションのようなデータ構造はモノイドを形成します。モノイドの操作は連結または結合です。これには、リスト、セット、キーから値へのマップ、さまざまな種類のツリーなどが含まれます。
  • 指定された型の機能一緒にアイデンティティ機能付きフォームの自己準同型のモノイド。A A A AAAAAA

他の操作の中には、モノイドではなくセミグループを形成するものがあります。良い例は、要素のシーケンスの最小の要素を探している:最小表し、及び一部所与の順序WRTを。Babab

モノイドは非常に一般的であるため、非常に汎用的な関数を記述することができます。たとえば、データ構造の折りたたみは、そのすべての要素をモノイドにマッピングし、モノイド操作を使用してそれらを単一の結果に結合することで表現できます。

別の非常に一般的な例は、モノイド(またはセミグループ)に二乗することによるべき乗の一般化です。操作でのみを計算する単一の関数を書くことができ。取得するさまざまなモノイドに適用する: Oログn個aantimesO(logn)

  • 数字の高速べき乗。
  • (これは計算するのに使用することができるマトリックスの高速べき乗フィボナッチ数をにの乗算)。O(logn)
  • 1つの要素の追加には時間かかりますが、2本の木のマージにはがかかるため、大きなフィンガーツリーを構築する高速な方法です。O(1)O(log(min(n1,n2)))

その他の例については、プログラミングのモノイド/セミグループの例を参照してください。


7

分散ファイルシステム(DFS)の1つの重要な問題は、分散ブロックからファイルを生成することです。情報理論と代数(グループ、リング、線形代数など)の消去コードの領域は、HDFS RAID(Hadoopベースのファイルシステム)などの分散型フォールトトレラントファイルシステムで広く使用されています。ソーシャルネットワークおよびクラウド企業は、DFSに広く基づいているため、より優れた高性能システム(リードソロモンコードなど)を設計するには、代数および消去コードのマスターである人々が必要です。

これは、クラウドストレージでのアプリケーション(代数)の良いポスターでもあります:クラウドストレージの新しいコード


6

あなたの質問が

計算におけるグループ、モノイド、およびリングの例は何ですか?

それから私が手に負えないと考えることができる1つの例は、グラフ理論の経路探索アルゴリズムです。我々が定義する場合は半環でとしてととして、その後、我々はすべてのペア-最短パスを見つけるために、隣接行列と行列の乗算を使用することができます。この方法は、実際にはCLRSで説明されています。+min++

これは代数的観点からは理論的にしか見えないかもしれませんが、グラフ問題に対して非常に高度に最適化された線形代数ライブラリを利用することができます。Combinatorial BLASはそのようなライブラリの1つです。


1
うん、と私達はちょうどそれを行うためにminplusを追加しました:github.com/twitter/algebird/blob/develop/algebird-core/src/main/...
オスカーBoykin

4

いくつかの有限アルファベット上のすべての単語のセットと連結は、自由モノイドます。したがって、形式言語のすべての分野は代数レンズを通して見ることができ、時々このように教えられます。(Σ,)

その見返りに、正式な言語での考察が得られているアーリー法で解析するために拡張することができますsemiringsを。これは、自然言語処理や(正式な)言語の確率モデルを使用する他の分野で役立ちます。


3

私は数学のバックグラウンドを持っていますが、コンピューター科学者ではありません。モノイドとセミグループを「現実世界」で使用するのは素晴らしいことです。これらは通常、役に立たない理論的構成要素と見なされ、多くの抽象的な代数コースで無視されます(興味深いことは何もありません)。

言うにはあまりにも興味深いことがあります。ただし、少なくともそれほど重要ではないトピックについては、抽象代数と分析よりも、離散数学と組み合わせ論のトピックです。また、モノイドとセミグループに関連する興味深い数学的トピックであると他の人に伝える前に、特定のトピックについてどれだけ知る必要があるかという問題もあります。たとえば、次のトピック(セミグループに関連する)が興味深いと思います。

  • 有限半群とクローン・ロードス理論
  • 部分対称性、逆半群、グループイド、準結晶
  • 半環と熱帯幾何学
  • 半順序とメビウス関数
  • 劣モジュラー関数と(Dulmage-Mendelsohnのような)分解

これらの各トピックについて多くを知っていますか?おそらくない。モノイドとセミグループに関連する数学的トピックも多くあります。それらのいくつかは、グリーンの関係のようにセミグループ理論自体の内部にあります。一致)だけでなく、数学的な観点からも重要です。上記で引用したトピックのほとんどは「実世界」のアプリケーションを使用していますが、「実世界」のアプリケーションを使用する関連トピックもあります。


上記は実際の質問に対する答えではありませんが、「...言うまでもなく興味深いことは何もないので、通常は役に立たない理論的構築物と見なされます...」という発言にのみ対応しています。そこで、いくつかの「興味深い」点をリストし、それらのほとんどが「現実の」アプリケーションを持っていると主張し、Hi-Angelはそれらのアプリケーションについての少しの情報を要求しています。しかし、「言うにはかなり面白すぎる」ので、その情報からあまり期待しないでください。クローン・ロードスの定理は、有限半群の分解定理です。その用途には、オートマトンと通常の言語の理論に関連して、花輪積を一種の構成要素(トランスデューサー)として解釈することが含まれます。Mark V Lawson:2つのチュートリアル講義と背景資料には、Inverse Semigroupsに関する優れた資料が含まれています(現在404)。それらのアプリケーションの基礎は、対称逆半群への接続、つまりセット上のすべての部分全単射のセットです。逆半群の基本的な代数的特徴付けから始めることもできますが、このアプローチは多くのアプリケーションにとって重要な半順序への接続を無視するリスクがあります。いつか、半導体レイアウトを圧縮するために使用される「階層」としてのインバースセミグループの特定のアプリケーションについてブログを書く必要があります。セミリングの応用については、他の回答で既に説明されています(トロピカルジオメトリはコンピューターサイエンスからは程遠いものになるでしょう)。モノイドとセミグループも半順序に関連しているため、「コンビナトリクス:ロタウェイ」で説明されているメビウス関数などの素晴らしいトピックも関連しています。そして、Dulmage-Mendelsohn分解のようなシステム分析用のマトリックスとマトロイドのトピックも関連するようになりました。これは、格子理論(および隠れた階層構造)を研究する動機の1つでした。


私が不満を言っているわけではありませんが、リストされたポイントの実際のアプリケーションについて少し情報を追加すると、はるかに多くの賛成票があったと思います。
ハイエンジェル

1
@ Hi-Angel上記は実際の質問への答えではなく、「...役に立たない理論的構成...言いたいことは何もない...」というコメントにのみ対処しています。これは、私がこれに対処するのに最も適格な人物ではないかもしれないことを示唆しています:「これらのトピックのそれぞれについて多くを知っていますか?私の最高の投票の投稿は同じカテゴリに分類されます。 ベンジャミン・スタインバーグは、「毒性」の領域にこれを呼び出して ...、と彼は「答え」に修飾だろう
トーマスKlimpel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.