前処理が可能な高速スパースブール行列積


12

2つの非常にまばらなブール行列を乗算するための最も実際的に効率的なアルゴリズムは何ですか(たとえば、N = 200で、100-200の非ゼロ要素がいくつかあります)。

実際、AにBを掛けると、Bが事前定義され、それらに対して任意の複雑な前処理を行うことができるという利点があります。また、製品の結果は常に元の行列と同じくらいまばらであることも知っています。

「かなり単純な」アルゴリズム(行ごとにAをスキャン、A行の各1ビット、または結果とBの対応する行)は、非常に効率的であり、単一の製品を計算するのに数千のCPU命令しか必要ありません。 、それを超えるのは簡単ではなく、一定の係数を超えるだけです(結果には数百の1ビットがあるため)。しかし、私は希望を失い、コミュニティに助けを求めているわけではありません:)


1
出力ワードあたり10のマシン命令という定数を大幅に上回ることはできないと思います。暗黙的な形式の出力が受け入れられる可能性はありますか?
ウォーレンシューディ

はい、さらにBsを掛けることができます。
jkff

行列の乗算が定義されている(ビットの)加算および乗算演算とは何ですか?あなたの素朴なアルゴリズムは、答えがそれぞれ「または」と「および」であることを示唆していますが、それらはフィールドを定義しないため、かなり奇妙な行列乗算です。「or」ではなく「xor」という意味ですか?
ウォーレンシューディ

いいえ、「または」と「および」を意味します。フィールドを定義するための操作は必要ありません。これは、実際にはグラフ到達可能性のような問題です(複数の1対多関数の構成を計算しています)。
JKFF

回答:


11

私はこれらの線に沿って知っている唯一の理論的な結果が論文に私の名前を持っているので、私はこれに答えることを渋っていました...

理論的には、稠密を前処理することが可能であるブール行列Aとそのスパース行列-ベクトル乗算のでA(の半環上OR及びAND)高速ナイーブ走行時間より行うことができます。それを実際に実装するにはかなりの量のハッキングが必要になるでしょうが、十分に大きいnと適切な実装であれば、実際にはうまくいくと思います。n×nAAn

(注:このアルゴリズムは、一方の行列が密でもう一方が疎の場合にのみ非常に役立ちます。ただし、この場合は多く発生します。たとえば、疎グラフの推移閉包を計算する場合、推移閉包行列は最終的に密になる元の隣接行列と比較します。)

論文は

Guy E. Blelloch、Virginia Vassilevska、Ryan Williams:スパースグラフ問題の新しい組み合わせアプローチ。ICALP(1)2008:108-120

そして紙から関連する結果は、すべてのそれであるが存在するO N 2 + ε任意の、ある時間アルゴリズムN × N 0-1行列Aは、次の動作がサポートされています。ε>0O(n2+ε)n×nA

-任意のベクトルについてはのみとのT nonzeroes、Vは、で計算することができるO N T / K + N //ログN 時間、k個の自由パラメータが満足されているvtAvO(n(t/k+n/)/logn)k。(1つの良い設定は=logcnおよびk=εlogn/loglognであるため、任意の定数cの実行時間は約nt/logn+n2/logcnです。(k)nε=logcnk=ε(logn)/loglognnt/logn+n2/logcnc

行と列の更新は、O n 1 + ε時間で計算できます。AO(n1+ε)

このデータ構造を使用して、スパースな重みのないグラフでAPSPのより高速な理論的アルゴリズムを提供しました。


3
また、行列乗算の出力もスパースであると仮定していることに気付きました。その場合、さらに高速なアルゴリズムがあります。「出力依存行列乗算」のWeb検索を実行します。
ライアンウィリアムズ

ライアン・ウィリアムズ-私は簡単な質問を持っている:あなたは認識している、またはあなたがスパースに一般化することを任意の方法模索していの行列(というよりも、単にブール)-valuedを?{1,0,1}
アレクサンドルカッサー

5

あなたが呼ぶものは「ハイパースパース」行列(nnz <n)だと思います。私は数年前にそれらを増やす方法について論文を書きました。基本的には、中間トリプルの実現を排除するための巧妙なマルチウェイマージとの外部製品結合です。

BulucおよびGilbert、IPDPS 2008:http ://gauss.cs.ucsb.edu/publication/hypersparse-ipdps08.pdf

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.