Una struttura di dati per richieste minime di prodotti a punti


19

Considera equipaggiato con il prodotto dot standard e vettori lì: . Vogliamo costruire una struttura di dati che consenta query del seguente formato: dato output . È possibile andare oltre il banale tempo di query O (nm) ? Ad esempio, se n = 2 , è immediato ottenere O (\ log ^ 2 m) .R nRn,,mm v 1 , v 2 ,..., v mv1,v2,,vm x R n xRnmin ix, v iminix,vi O ( n m )O(nm) n=2n=2O( login 2 m)O(log2m)

L'unica cosa che mi viene in mente è la seguente. È una conseguenza immediata del lemma di Johnson-Lindenstrauss che per ogni ε > 0ε>0 e una distribuzione DD su R nRn esiste una mappatura lineare f : R nR O ( log m )f:RnRO(logm) (che può essere valutato in tempo O ( n log m )O(nlogm) ) in modo tale che P r x D [iX , v i- ε ( x + v i) 2f ( x ) , f ( v i ) x , v i+ ε ( x + v i) 2 ]1 - εPrxD[ix,viε(x+vi)2f(x),f(vi)x,vi+ε(x+vi)2]1ε . Quindi, nel tempo O ( ( n + m ) log m )O((n+m)logm) possiamo calcolarequalcosa che è in un certo senso vicino a min ix , v iminix,vi per la maggior parte delle Xx (almeno se le norme X x e V ivi sono piccole).

UPD Il limite sopra menzionato può essere in qualche modo affilato al tempo di query O ( n + m )O(n+m) se utilizziamo l'hash sensibile alla località. Più precisamente, scegliamo k : = O ( 1ε 2 )k:=O(1ε2) vettori gaussiani indipendenti r 1 , r 2 , , r kr1,r2,,rk . Quindi R nRn su { 0 , 1 } k{0,1}k come segue: v(r1,v0,r2,v0,,rk,v0)v(r1,v0,r2,v0,,rk,v0) . Quindi possiamo stimare l'angolo tra due vettori all'interno di un errore additivo εε calcolando 11 nell'immagine di questa mappatura. Pertanto, possiamo stimare i prodotti a punti all'interno di un errore additivoεxviεxvinel tempo O(1ε2)O(1ε2) .



Non sono sicuro che funzioni o aiuti, ma il tuo problema (dopo aver cambiato il segno di v_i per convertirlo nella massimizzazione) sembra correlato ai diagrammi di Voronoi. Potrebbe essere possibile modificare gli algoritmi per i diagrammi Voronoi a questo problema, ma anche se è possibile, sarà probabilmente utile solo per piccoli n.
Tsuyoshi Ito,

Non so se questa è la stessa osservazione ... Tutte le possono essere normalizzate in un vettore unitario e non cambia il risultato, possiamo fare tutto in un cubo n centrato in origine. Trova quale regione del cubo minimizza il punto con per ogni (ogni regione deve essere un politopo). Non ho un limite al numero di polipetti. Se è n meno esponenziale in , hai qualcosa di meglio di eseguendo una query sulla posizione del punto n-dimensionale. xxviviiinmnmO(nm)O(nm)
Chao Xu,

quale parametro ti interessa di più? di solito, se vuoi ottenere un sublineare in m, inizierai a diventare esponenziale in n.
Suresh Venkat,

@Suresh Beh, sarebbe bello capire diversi possibili compromessi. Anche la versione approssimativa è interessante.
ilyaraz,

Nota rapida: per il caso n = 2, la ricerca binaria sullo scafo convesso dà tempo di interrogazione . O(logn)O(logn)
Geoffrey Irving,

Risposte:


16

Considerare il caso speciale in cui si desidera solo determinare se il vettore di query è ortogonale a un vettore nella raccolta preelaborata. (Cioè, vuoi determinare se , dove i vettori in discussione hanno coefficienti non negativi.) Questo caso è già molto interessante.min ix , v i= 0minix,vi=0

Supponiamo di poter rispondere alle query in tempo per alcuni , con preelaborazione (il i gradi del polinomio non dovrebbero dipendere da o o ).n O ( 1 ) m 1 - δ δ > 0 m O ( 1 ) n O ( 1 ) m n δnO(1)m1δδ>0mO(1)nO(1)mnδ

Nel documento "Un nuovo algoritmo per la soddisfazione ottimale di 2 vincoli e le sue implicazioni", ho osservato che una tale struttura di dati consentirebbe effettivamente di risolvere CNF-SAT in tempo per alcuni , dove è il numero di variabili. Ciò confuterebbe la "Ipotesi del tempo esponenziale forte" che k-SAT richiede essenzialmente tempo per illimitato .2 α v α < 1 v 2 n k2αvα<1v2nk

Per capire perché, supponiamo che il tempo di preelaborazione sia limitato da . Considera una formula CNF con variabili e clausole. Dividiamo l'insieme di variabili in due parti e di dimensione e , rispettivamente. Elencare tutte le possibili assegnazioni alle variabili nelle parti (ottenendo rispettivamente e . Associa ciascuna di queste assegnazioni parziali con un vettore -bit dove iff the(nm)c(nm)cFFvvnnP1P1P2P2v(11/(2c))v(11/(2c))v/(2c)v/(2c)2v(11/(2c))2v(11/(2c))2v/(2c)2v/(2c)AiAinnwiwiwi[j]=1wi[j]=1jjla clausola di non è soddisfatta da . Quindi abbiamo due liste di esponenzialmente molti vettori di bit.FFAiAi

Si noti che è soddisfacibile sse esiste un vettore da un'assegnazione su e un vettore w 2 da un'assegnazione su P 2 in modo tale che w 1 , w 2= 0 .FFw1w1P1P1w2P2w1,w2=0

Ora lascia m = 2 v / ( 2 c ) e preelabora la struttura dati presunta con tutti i vettori della parte P 2 . Ciò presuppone n 2 v / 2 tempo, per ipotesi. Eseguire l'algoritmo di query su tutti i vettori dalle assegnazioni nella parte P 1 . Supponendo che ciò richieda 2 v ( 1 - 1 / ( 2 c ) )n O ( 1 ) m 1 - δ = nm=2v/(2c)O ( 1 ) 2 v - δ v / ( 2 c ) . Siaα=1-δ / (2c).

Forse è possibile ottenere una preelaborazione efficiente e tempi di interrogazione n O ( 1 ) m 1 - 1 / ( log log m ) con tecniche esistenti. Gli algoritmi CNF-SAT più noti non lo escludono. (Ottengono qualcosa come 2 n - n / log n ). Ma per calcolare min ix , v i è leggermente più forte - in questa configurazione, sarebbe come risolvere MAX CNF-SAT.


Eccezionale! Ma non esclude strutture dati approssimative e tempi di interrogazione come O ( m p o l y ( log n ) ) , che sarebbe anche molto interessante.
ilyaraz,

A proposito, non possiamo dire qualcosa del tipo "se ci fosse anche una struttura di dati approssimativa con tempi di interrogazione rapidi, allora MAX-SAT sarebbe approssimabile".
ilyaraz,

Perché vale l'equivalenza di cui al primo comma? Penso che il prodotto interno possa essere negativo in generale.
Tsuyoshi Ito,

ilyaraz: Sì, anche strutture dati approssimative implicherebbero MAX-SAT approssimativo. Tsuyoshi: Grazie per la tua comprensione
Ryan Williams

6

Ecco un'idea per la risposta esatta, che sospetto che Chao Xu stia alludendo. Innanzitutto osserva che potremmo anche normalizzare x , come sottolinea Chao. Ora considera l'iperpiano h normale alla direzione x . L'obiettivo è trovare il punto più vicino a questo iperpiano. Per dualità, ciò corrisponde a una query di ray ray in una disposizione di iperpiani per trovare il piano più vicino "sopra" il punto di query. Dal momento che questo può essere preelaborato, la complessità principale è la posizione del punto, e quindi il tuo problema è stato ora ridotto alla complessità del fare la posizione del punto in una disposizione di iperpiani. Utilizzando talee, questo può essere fatto in O ( log n ) tempo in n d spazio.


1
Avrei dovuto menzionare che sono anche interessato a un tempo di preelaborazione ragionevole che non è il caso qui se una dimensione è grande.
ilyaraz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.