Saya memiliki dataset yang mengalir ke jutaan titik data dalam 3D. Untuk perhitungan yang saya lakukan, saya perlu menghitung tetangga (pencarian rentang) untuk setiap titik data dalam radius, mencoba untuk menyesuaikan suatu fungsi, menghitung kesalahan untuk fit, ulangi ini untuk titik data berikutnya dan seterusnya. Kode saya berfungsi dengan baik tetapi butuh waktu sangat lama untuk dijalankan, sekitar 1 detik per titik data! Mungkin karena untuk setiap titik, ia harus mencari di seluruh dataset. Apakah ada cara saya bisa membuat prosesnya cepat. Saya punya ide bahwa jika saya entah bagaimana dapat membangun beberapa hubungan kedekatan antara tetangga pertama, maka ini bisa menjadi lebih lambat. Jika ini membantu, saya mencoba menemukan lebar jendela Parzen optimal dalam 3D.
sumber
Anda harus memeriksa pohon dan oktri KD yang merupakan metode pilihan untuk set poin (sementara BSP adalah untuk objek umum, dan grid untuk kepadatan yang kurang lebih seragam). Mereka bisa sangat kompak dan cepat, meminimalkan overhead pada memori dan komputasi, dan mudah diimplementasikan.
Ketika poin Anda lebih atau kurang terdistribusi secara seragam (bahkan dengan area kosong, tetapi tidak boleh ada singularitas kepadatan atau konsentrasi tinggi lainnya) periksa paket bola jika Anda ingin mencoba subdivisi ruang non-hierarkis seperti grid.
sumber
Anda mungkin harus mempertimbangkan membangun triangulasi Delaunay (well, analog 3D-nya). Dalam 2D, itu adalah triangulasi khusus dari titik data yang selalu berisi tetangga terdekat. Hal yang sama berlaku dalam 3D, tetapi dengan tetrahedra.
Semoga ini bisa membantu!
sumber