最小内積クエリのデータ構造


19

検討Rを NRn標準内積を備えとベクトルが:。次の形式のクエリを許可するデータ構造を構築したい:given output。些細なO(nm)クエリ時間を超えることは可能ですか?たとえば、n = 2の場合、O(\ log ^ 2 m)をすぐに取得できます。⟨⋅,⋅⟩mv1,v2,…,vmx∈Rn分I ⟨ X 、V 、I ⟩ O (N M )、N = 2 O (ログ2メートル)mini⟨x,vi⟩O(nm)n=2O(log2m)

私が思いつくことができる唯一のものは次のとおりです。ジョンソン・リンデンシュトラウスの補題の直接の結果であり、すべてのε > 0ε>0および\ mathbb {R} ^ n上の分布DDに対して、線形マッピングf \ colon \ mathbb {R} ^ n \ toがあります。 \ mathbb {R} ^ {O(\ログM)}(することができる評価ではO(n \ログM)時間)、その結果、\ mathrm {Prを} _ {X \ SIM \ mathcal {D}} \左[ \ forall i \ quad \ langle x、v_i \ rangle-\ varepsilon(\ | x \ | + \ | v_i \ |)^ 2 \ leq \ langle f(x)、f(v_i)\ rangle \ leq \ langle x 、v_i \ rangle + \ varepsilon(\ | x \ | + \ | v_i \ |)^ 2 \ right] \ geq 1-\ varepsilon。したがって、時間O((n + m)\ log m)で計算できますR nRnf:Rn→RO(logm)f:Rn→RO(logm)O (n log m )O(nlogm)Prx∼D[∀i⟨x,vi⟩−ε(‖x‖+‖vi‖)2≤⟨f(x),f(vi)⟩≤⟨x,vi⟩+ε(‖x‖+‖vi‖)2]≥1−εPrx∼D[∀i⟨x,vi⟩−ε(∥x∥+∥vi∥)2≤⟨f(x),f(vi)⟩≤⟨x,vi⟩+ε(∥x∥+∥vi∥)2]≥1−εO((n+m)logm)O((n+m)logm)何らかの意味で\ min_i \ langle xに近いもの、mini⟨x,vi⟩mini⟨x,vi⟩ほとんどのxについてv_i \ ranglexx(少なくとも規範‖x‖∥x∥と‖vi‖∥vi∥が小さい場合)。

UPD局所性に敏感なハッシュを使用する場合、上記の境界はクエリ時間O(n + m)にいくぶんシャープにすることができますO(n+m)O(n+m)。より正確には、k:=O(1ε2)k:=O(1ε2)独立ガウスベクトルr1,r2,…,rkr1,r2,…,rkます。次に、RnRnを{0,1}k{0,1}kに次のようにマッピングしますv↦(⟨r1,v⟩≥0,⟨r2,v⟩≥0,…,⟨rk,v⟩≥0)v↦(⟨r1,v⟩≥0,⟨r2,v⟩≥0,…,⟨rk,v⟩≥0)。次に、このマッピングの画像で\ ell_1 -distanceを計算することにより、加法誤差\ varepsilon内の2つのベクトル間の角度を推定できます。したがって、加算誤差内の内積を推定できますεεℓ1ℓ1ε‖x‖‖vi‖ε∥x∥∥vi∥でO(1ε2)O(1ε2)時間。



これが機能するか、役立つかはわかりませんが、問題(v_iの符号を切り替えて最大化に変換した後)は、ボロノイ図に関連しているように見えます。この問題に対してボロノイ図のアルゴリズムを変更することは可能かもしれませんが、可能であっても、おそらく小さなnに対してのみ有用です。
— 伊藤剛

これが同じ観測かどうかはわかりません...すべてのは単位ベクトルに正規化でき、結果を変更せず、原点を中心にした単位nキューブですべてを実行できます。キューブのどの領域が各で内積を最小化するかを見つけます(各領域はポリトープでなければなりません)。ポリトープの数に制限はありません。指数関数よりも小さい場合、n次元のポイント位置クエリを実行することにより、よりも優れた結果が得られます。x v i i n m O (n m )xviinmO(nm)
— チャオシュー

どのパラメーターをもっと気にしますか?通常、mで部分線形を取得したい場合は、nで指数関数を取得し始めます。
— スレシュヴェンカト

@Sureshさて、考えられるさまざまなトレードオフを理解することは素晴らしいことです。おおよそのバージョンも興味深いものです。
— イリヤラス

クイックノート:n = 2の場合、凸包でのバイナリ検索はO (log n )O(logn)クエリ時間を与えます。
— ジェフリーアーヴィング

回答:


16

クエリベクトルが前処理されたコレクションのベクトルに直交するかどうかを判断する特別なケースを考えてみましょう。(つまり、mini⟨x,vi⟩=0mini⟨x,vi⟩=0であるかどうかを判断します。ここで、議論中のベクトルは非負の係数を持ちます。)このケースはすでに非常に興味深いものです。

あなたがクエリに答えることができると仮定しnO(1)m1−δnO(1)m1−δいくつかの時間をδ>0δ>0で、mO(1)nO(1)mO(1)nO(1)(前処理多項式の次数は、mm、nnまたは\ deltaに依存してはなりませんδδ。

論文「最適な2制約の満足度とその意味のための新しいアルゴリズム」で、そのようなデータ構造により、実際には、いくつかのに対して時間でCNF-SATを解くことができることがわかりました。ここで、は変数の数です。これは、k-SATが無制限の本質的に時間を必要とする「強力な指数時間仮説」に反論するでしょう。2αv2αvα<1α<1vv2n2nkk

理由を確認するために、前処理時間がによって制限されているとし。変数と節を持つCNF式を考えます。変数のセットをそれぞれサイズと 2つの部分とに分割します。パーツ内の変数へのすべての可能な割り当てをリストします(それぞれおよび割り当てを取得します)。これらの各部分割り当てをビットベクトルには(nm)c(nm)cFFvvnP1P2v(1−1/(2c))v/(2c)2v(1−1/(2c))2v/(2c)Ainwiwi[j]=1j th句はによって満たされません。したがって、指数関数的に多くのビットベクトルの2つのリストがあります。FAi

ことを通知ベクトルある充足IFFあるに割り当てから及びベクターに割り当てからよう。Fw1P1w2P2⟨w1,w2⟩=0

ここで、部分すべてのベクトルを使用して、想定されるデータ構造を前処理します。仮定により、これには時間かかります。パート割り当てからのすべてのベクトルでクエリアルゴリズムを実行します。仮定により、これには。してみましょう。m=2v/(2c)P2n2v/2P12v(1−1/(2c))⋅nO(1)m1−δ=nO(1)2v−δv/(2c)α=1−δ/(2c)

おそらく、既存の手法で効率的な前処理とクエリ時間を取得することが可能です。最もよく知られているCNF-SATアルゴリズムはそれを排除しません。(これらはます。)しかし、を計算するにはがわずかに強力です。このセットアップでは、MAX CNF-SATを解くようなものです。nO(1)m1−1/(loglogm)2n−n/lognmini⟨x,vi⟩


驚くばかり!それは次のように近似データ構造ならびにクエリー時間を除外しないO (M ⋅ P O のL Y(ログN ))も非常に興味深いものになるだろう。
— イリヤラス

ちなみに、「クエリ時間の速いおおよそのデータ構造さえあれば、MAX-SATはおおよそのサイズになる」というようなことは言えませんか。
— イリヤラス

なぜ最初の段落で述べた同等性が成り立つのですか?一般的に、内積はマイナスになる可能性があると思います。
— 伊藤剛

ilyaraz:はい、近似データ構造でさえ近似MAX-SATを意味します。剛:ご意見ありがとうございます
— ライアンウィリアムズ

6

正確な答えの1つのアイデアを次に示します。ChaoXuがほのめかしているかもしれません。まず、Chaoが指摘しているように、xを正規化することもできます。次に、方向xに垂直な超平面hを考えます。目標は、この超平面に最も近い点を見つけることです。双対性により、これは、クエリ点の「上」にある最も近い平面を見つけるための超平面の配置における光線射撃クエリに対応します。これは前処理できるため、主な複雑さはポイントの位置です。したがって、問題は超平面の配置でポイントの位置を決定する複雑さまで軽減されました。挿し木を使用して、これはn dの O (log n )時間で実行できます。 スペース。


1
私はまた、合理的な前処理時間にも興味があることを述べておかなければなりません。これは、ディメンションが大きい場合には当てはまりません。
— イリヤラス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.