표준 도트 곱 및 벡터 ( 장착 된 고려하십시오 . 주어진 출력 형식의 쿼리를 허용하는 데이터 구조를 구축하려고합니다 . 사소한 O (nm) 쿼리 시간을 넘어 설 수 있습니까? 예를 들어, n = 2 인 경우 즉시 O (\ log ^ 2 m) 를 얻습니다 .
내가 올 수있는 유일한 것은 다음과 같습니다. Johnson-Lindenstrauss lemma의 모든 결과는 모든 및 \ mathbb {R} ^ n 에 대한 \ mathcal {D} 분포 에 대해 선형 매핑 f \ colon \ mathbb {R} ^ n \ to \ mathbb {R} ^ {O (\ 로그 m)} (될 수있는 계산 에 (O n \ 로그 m) 회)되도록 \ mathrm는 {잠} _ {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)에서 우리는 계산할 수 있습니다뭔가 어떤 의미 가까이에에 에 가장 의 (규범 적어도 경우 와 작).
UPD 로컬에 민감한 해싱을 사용하는 경우 위에서 언급 한 범위는 쿼리 시간 O (n + m) 으로 다소 선명해질 수 있습니다 . 보다 정확하게는 독립 가우스 벡터 합니다. 그런 다음 을 다음과 같이 \ {0,1 \} ^ k에 매핑 합니다. . 그런 다음 이 매핑의 이미지에서 \ ell_1 -distance를 계산 하여 추가 오차 \ varepsilon 내의 두 벡터 사이의 각도를 추정 할 수 있습니다 . 따라서 가산 오차 내에서 내적을 추정 할 수 있습니다에서 시간.