Problema Dati N punti a 3 dimensioni che sono {$ p_1, p_2, .., p_n $} dove $ p_i = (x_i, y_i, z_i) $. Devo trovare il valore della formula
per alcuni dati interi costanti P, Q, R, S. tutti i numeri sono compresi tra 1 e M (= 100).
Ho bisogno di un metodo efficiente per il calcolo di questa formula
Si prega di dare qualche idea su come ridurre la complessità meglio di $ O (n ^ 2) $
risposte:
2 per risposta № 1Supponendo che tutte le coordinate siano comprese tra 1 e 100, puoi farlo tramite:
Calcola l'istogramma 3d di tutte le operazioni di punti O (100 * 100 * 100).
Usa FFT per calcolare la convoluzione degli istogrammi lungo ciascuno dei 3 assi
Ciò si tradurrà in un istogramma 3d di vettori 3d. È quindi possibile scorrere su questo istogramma per calcolare il valore desiderato.
Il punto principale è il calcolo di una convoluzione dil'istogramma dei valori calcola l'istogramma delle differenze a coppie di tali valori. Questo può anche essere usato per calcolare un istogramma di somme di valori in modo simile.
0 per risposta № 2
Il tuo problema sembra un potenziale problema di particelle (il tipo che hai in elettrodinamica, per esempio), dove devi trovare un "potenziale" nel luogo (x_j, y_j)
sommando tutti i contributi elementari dal i-th
particelle.
L'algoritmo veloce specifico per questa classe diproblemi è il metodo Multipole veloce. Cerca questa parola chiave, ma devo avvertirti che non è affatto semplice da capire o implementare. È necessario un forte background matematico.