Considere equipado com os vetores de produto de ponto padrão e vetores: . Queremos construir uma estrutura de dados que permita consultas no seguinte formato: dado output . É possível ir além do tempo trivial de consulta de O (nm) ? Por exemplo, se n = 2 , é imediato obter O (\ log ^ 2 m) .
A única coisa que posso pensar é o seguinte. É uma consequência imediata do lema de Johnson-Lindenstrauss que, para todo e uma distribuição em exista um mapeamento linear de (que pode ser avaliado em ), de modo que . Então, no tempo O ((n + m) \ log m) podemos calcularalgo que está em algum sentido próximo de para a maioria dos 's (pelo menos se as normas e forem pequenas).
UPD O limite acima mencionado pode ser um pouco mais aguçado para o tempo de consulta se usarmos o hash sensível à localidade. Mais precisamente, escolhemos vetores gaussianos independentes . Em seguida, para seguinte maneira: . Então, podemos estimar o ângulo entre dois vetores dentro de um erro aditivo computando -Distância na imagem deste mapeamento. Assim, podemos estimar produtos pontuais dentro de um erro aditivono tempo .
Respostas:
Considere o caso especial em que você deseja determinar se seu vetor de consulta é ortogonal a algum vetor em sua coleção pré-processada. (Ou seja, você deseja determinar se , onde os vetores em discussão têm coeficientes não negativos.) Esse caso já é muito interessante.mini⟨x,vi⟩=0
Suponha que você possa responder a consultas em tempo para alguns , com pré-processamento (o os graus do polinômio não devem depender de ou ou ).nO(1)m1−δ δ>0 mO(1)nO(1) m n δ
No artigo "Um novo algoritmo para satisfação ideal com 2 restrições e suas implicações", observei que essa estrutura de dados realmente permitiria que você resolvesse o CNF-SAT em por algum tempo , onde é o número de variáveis. Isso refutaria a "Hipótese do tempo exponencial forte" de que o k-SAT requer essencialmente tempo para ilimitado .2αv α<1 v 2n k
Para entender por que, suponha que o tempo de pré-processamento seja limitado por . Considere uma fórmula CNF com variáveis cláusulas. Dividimos o conjunto de variáveis em duas partes e de tamanho e , respectivamente. Liste todas as atribuições possíveis para as variáveis nas partes (obtendo e atribuições, respectivamente). Associe cada uma dessas atribuições parciais com um vetor de bits que se(nm)c F v n P1 P2 v(1−1/(2c)) v/(2c) 2v(1−1/(2c)) 2v/(2c) Ai n wi wi[j]=1 j A cláusula de não é satisfeita por . Portanto, temos duas listas de vetores de bits exponencialmente numerosos.F Ai
Observe que é satisfatório se houver um vetor de uma atribuição em e um vetor de uma atribuição em modo que .F w1 P1 w2 P2 ⟨w1,w2⟩=0
Agora deixe e pré-processe a estrutura de dados assumida com todos os vetores da parte . Isso leva tempo , por suposição. Execute o algoritmo de consulta em todos os vetores de atribuições na parte . Por suposição, isso leva . Seja .m=2v/(2c) P2 n2v/2 P1 2v(1−1/(2c))⋅nO(1)m1−δ=nO(1)2v−δv/(2c) α=1−δ/(2c)
Talvez seja possível obter pré-processamento eficiente e tempo de consulta com as técnicas existentes. Os algoritmos CNF-SAT mais conhecidos não descartam isso. (Eles obtêm algo como .) Mas, para calcular é um pouco mais forte - nessa configuração, seria como resolver o MAX CNF-SAT.nO(1)m1−1/(loglogm) 2n−n/logn mini⟨x,vi⟩
fonte
Aqui está uma idéia para a resposta exata, à qual suspeito que Chao Xu possa estar se referindo. Em primeiro lugar, observe que podemos normalizar , como Chao aponta. Agora considere o hiperplano h normal na direção x . O objetivo é encontrar o ponto mais próximo desse hiperplano. Por dualidade, isso corresponde a uma consulta de disparo de raios em um arranjo de hiperplanos para encontrar o plano mais próximo "acima" do ponto de consulta. Como isso pode ser pré-processado, a principal complexidade é a localização do ponto e, portanto, seu problema foi reduzido à complexidade de fazer a localização do ponto em um arranjo de hiperplanos. Usando estacas, isso pode ser feito no tempo O ( log n ) em n dx h x O(logn) nd espaço.
fonte