Considérez équipé du produit scalaire standard et vecteurs: . Nous voulons construire une structure de données qui autorise les requêtes au format suivant: étant donné output . Est-il possible d'aller au-delà du temps de requête O (nm) trivial ? Par exemple, si n = 2 , alors il est immédiat d'obtenir O (\ log ^ 2 m) .R nRn ⟨⋅,⋅⟩⟨⋅,⋅⟩mm v 1 , v 2 ,..., v mv1,v2,…,vm x∈ R n x∈Rnmin i ⟨x, v i ⟩mini⟨x,vi⟩ O ( n m )O(nm) n=2n=2O( connecte 2 m)O(log2m)
La seule chose que je peux trouver est la suivante. C'est une conséquence immédiate du lemme de Johnson-Lindenstrauss que pour chaque ε > 0ε>0 et une distribution réD sur R nRn il y a un mappage linéaire f : R n → R O ( log m )f:Rn→RO(logm) (qui peut être évalué en O ( n log m )O(nlogm) temps) de telle sorte que P r x ∼ D [ ∀ i⟨ X , v i ⟩ - ε ( ‖ x ‖ + ‖ v i ‖ ) 2 ≤ ⟨ f ( x ) , f ( v i ) ⟩ ≤ ⟨ x , v i ⟩ + ε ( ‖ x ‖ + ‖ v i ‖ ) 2 ] ≥ 1 - εPrx∼D[∀i⟨x,vi⟩−ε(∥x∥+∥vi∥)2≤⟨f(x),f(vi)⟩≤⟨x,vi⟩+ε(∥x∥+∥vi∥)2]≥1−ε . Donc, dans le temps O ( ( n + m ) log m )O((n+m)logm) nous pouvons calculerquelque chose qui est en quelque sorte proche de min i ⟨ x , v i ⟩mini⟨x,vi⟩ pour la plupart des Xx (au moins si les normes ‖ X ‖∥x∥ et ‖ V i ‖∥vi∥ sont petites).
UPD La limite susmentionnée peut être quelque peu affinée au temps de requête O ( n + m )O(n+m) si nous utilisons un hachage sensible à la localité. Plus précisément, nous choisissons k : = O ( 1ε 2 )k:=O(1ε2) des vecteurs gaussiens indépendants r 1 , r 2 , … , r kr1,r2,…,rk . Ensuite, nous mappons R nRn à { 0 , 1 } k{0,1}k comme suit: v ↦ ( ⟨ r 1 , v ⟩ ≥ 0 , ⟨ r 2 , v ⟩ ≥ 0 , ... , ⟨ r k , v ⟩ ≥ 0 )v↦(⟨r1,v⟩≥0,⟨r2,v⟩≥0,…,⟨rk,v⟩≥0) . On peut alors estimer l'angle entre deux vecteurs au sein d'une erreur additive εε en calculant ℓ 1ℓ1 -distance dans l'image de cette cartographie. Ainsi, nous pouvons estimer les produits scalaires au sein d'une erreur additiveε ‖ x ‖ ‖ v i ‖ε∥x∥∥vi∥en temps O ( 1ε 2 )O(1ε2) .
Réponses:
Considérez le cas spécial où vous voulez simplement déterminer si votre vecteur de requête est orthogonal à un vecteur de votre collection prétraité. (Autrement dit, vous voulez déterminer si , où les vecteurs en discussion ont des coefficients non négatifs.) Ce cas est déjà très intéressant.min i ⟨ x , v i ⟩ = 0mini⟨x,vi⟩=0
Supposons que vous puissiez répondre aux requêtes en temps pour un certain , avec prétraitement (le les degrés du polynôme ne devraient pas dépendre de ou ou ).n O ( 1 ) m 1 - δ δ > 0 m O ( 1 ) n O ( 1 ) m n δnO(1)m1−δ δ>0 mO(1)nO(1) m n δ
Dans l'article "Un nouvel algorithme pour une satisfaction optimale des contraintes 2 et ses implications", j'ai observé qu'une telle structure de données vous permettrait en fait de résoudre CNF-SAT en temps pour un certain , où est le nombre de variables. Cela réfuterait la "forte hypothèse exponentielle temporelle" selon laquelle k-SAT nécessite essentiellement temps pour non borné .2 α v α < 1 v 2 n k2αv α<1 v 2n k
Pour voir pourquoi, supposons que le temps de prétraitement est limité par . Considérons une formule CNF avec variables et clauses. Nous divisons l'ensemble de variables en deux parties et de taille et , respectivement. Répertoriez toutes les affectations possibles aux variables dans les parties (obtention des affectations et , respectivement). Associez chacune de ces affectations partielles à un vecteur à bits où si(nm)c(nm)c FF vv nn P1P1 P2P2 v(1−1/(2c))v(1−1/(2c)) v/(2c)v/(2c) 2v(1−1/(2c))2v(1−1/(2c)) 2v/(2c)2v/(2c) AiAi nn wiwi wi[j]=1wi[j]=1 jj La clause de n'est pas satisfaite par . Nous avons donc deux listes de vecteurs de bits exponentiellement nombreux.FF AiAi
Notez que est satisfiable si il existe un vecteur d'une affectation sur et un vecteur d'une affectation sur tel que .FF w1w1 P1P1 w2w2 P2P2 ⟨w1,w2⟩=0⟨w1,w2⟩=0
Soit maintenant , et prétraitez la structure de données supposée avec tous les vecteurs de la partie . Cela prend temps, par hypothèse. Exécutez l'algorithme de requête sur tous les vecteurs à partir des affectations de la pièce . Par hypothèse, cela prend . Soit .m=2v/(2c)m=2v/(2c) P2P2 n2v/2n2v/2 P12v(1−1/(2c))⋅nO(1)m1−δ=nO(1)2v−δv/(2c)α=1−δ/(2c)
Il est peut-être possible d'obtenir un prétraitement efficace et un temps de requête avec les techniques existantes. Les algorithmes CNF-SAT les plus connus ne l'excluent pas. (Ils obtiennent quelque chose comme .) Mais pour calculer est légèrement plus fort - dans cette configuration, ce serait comme résoudre MAX CNF-SAT.nO(1)m1−1/(loglogm)2n−n/lognmini⟨x,vi⟩
la source
Voici une idée de la réponse exacte à laquelle je pense que Chao Xu pourrait faire allusion. Observons tout d'abord que nous pourrions aussi bien normaliser , comme le souligne Chao. Considérons maintenant l'hyperplan normal à la direction . Le but est de trouver le point le plus proche de cet hyperplan. Par dualité, cela correspond à une requête de tir de rayon dans un arrangement d'hyperplans pour trouver le plan le plus proche "au-dessus" du point de requête. Étant donné que cela peut être prétraité, la principale complexité est l'emplacement du point, et donc votre problème a maintenant été réduit à la complexité de la localisation du point dans une disposition d'hyperplans. En utilisant des boutures, cela peut être fait en temps dans l' espace .xhxO(logn)nd
la source