2011-12-17 4 views
4

しばらくの間、私はあなたがモノイドへのマップを必要としていると思っていましたし、モノイドの乗算に応じて減らすことを減らしました。マップ/ Reduce: "howto"を超えた理論的基礎?

まず、これは正確にモノイドがどのように動作するかではなく、第2に、map/reduceが実際にどのように動作するかは正確ではありません。

つまり、ユビキタスな「カウント」の例を考えてみましょう。カウントするものがない場合、map/reduceエンジンは中立の要素ではなく空のデータセットを返します。バマー。

さらに、モノイドでは、2つの要素の操作が定義されています。我々はそれを有限シーケンスに、または連想のために有限集合に簡単に拡張することができる。しかし、実際にσ-algebraがなければ、それを任意の「コレクション」に拡張する方法はありません。

だから、理論は何ですか?私はそれを理解しようとしましたが、できませんでした。私はGoogleに行ってみましたが、何も見つかりませんでした。

+1

これはおそらく[MapReduceをモナドとして](http://www.haskell.org/haskellwiki/MapReduce_as_a_monad)です。 – Peteris

+0

シグマ代数のコメントが混乱しています。私が今までに見たすべてのマップリダクションエンジンは数えるコレクション(!)で動作するので、コレクションの順序付けを選択すると、結果を定義するのに十分です。シグマ代数は、あなたが(少なくとも)数えられないセットを扱うときに、測定理論で使用されます。 –

+0

@RupertSwarbrick σ -algebraが表示される理由は、標準的な順序とバイナリ操作がなければ、明確に定義された順序です。しかし、あなたがそのような順序付けをしていない場合(そして、明示的なアルゴリズムについて話しているので、私たちは選択の公理を呼び出さない)、あなたは答えについて明確に定義された式を得ません。代数構造は、1つの定義を可能にし、誘発されたトポロジに評価を従属させます。 – eh9

答えて

0

map-reduceについて考えてみる正しい方法は、それ自体の計算上のパラダイムではなく、むしろwhileというループに似たコントロールフローの構造であると思います。述語関数と任意のプログラムという2つの引数を持つプログラムコンストラクタとしてwhileを見ることができます。同様に、map-reduce構造体には、それぞれが機能する2つの引数mapreduceがあります。したがってwhileと同様に、質問するべき有用な質問は、与えられた前提条件と事後条件に対する構築されたプログラムの正しさを証明することです。そして、いつものように、これらの質問には、(a)終了と実行時のパフォーマンスと(b)不変条件のメンテナンスが含まれます。