Rn⟨⋅,⋅⟩mv1,v2,…,vmx∈Rnмин я ⟨ х , v я ⟩ mini⟨x,vi⟩О ( п т )O(nm) п = 2 n=2O ( войти 2 м )O(log2m)
Единственное, что я могу придумать, это следующее. Непосредственным следствием леммы Джонсона-Линденштрауса является то, что для каждого и распределения в существует линейное отображение (который можно вычислить за времени) так, чтобы . Итак, за время O ((n + m) \ log m) мы можем вычислитьε > 0 ε>0D DR nRn f : R n → R O ( log m )f:Rn→RO(logm)O(nlogm)P r x ∼ D [ ∀ я⟨ Х , v я ⟩ - ε ( | | х | | + | | v я ‖ ) 2 & le ; ⟨ F ( х ) , F ( v я ) ⟩ & le ; ⟨ х , v я ⟩ + ε ( | | х | | + | | V я | | ) 2 ] ≥ 1 - ε O ( ( nPrx∼D[∀i⟨x,vi⟩−ε(∥x∥+∥vi∥)2≤⟨f(x),f(vi)⟩≤⟨x,vi⟩+ε(∥x∥+∥vi∥)2]≥1−ε+ м ) лог м )O((n+m)logm)что-то, что в некотором смысле близко к mini⟨x,vi⟩mini⟨x,vi⟩ для большинства xx (по крайней мере, если нормы ‖x‖∥x∥ и ‖vi‖∥vi∥ малы).
UPD Упомянутая выше граница может быть несколько увеличена до времени запроса 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) . Затем мы можем оценить угол между двумя векторами в пределах аддитивной ошибки εε , вычислив ℓ1ℓ1 расстояние на изображении этого отображения. Таким образом, мы можем оценить точечные произведения в пределах аддитивной ошибкиε‖x‖‖vi‖ε∥x∥∥vi∥за O(1ε2)O(1ε2) время.