Trong hầu hết (tất cả?) Việc thực hiện Phương pháp Đa cực nhanh (FMM), octrees được sử dụng để phân tách miền liên quan. Về mặt lý thuyết, octrees cung cấp một giới hạn thể tích đơn giản, rất hữu ích để chứng minh thời gian chạy O (n) của FMM. Ngoài lý do lý thuyết này, có lợi ích gì khi sử dụng Octree so với các cấu trúc dữ liệu cây hoặc trie khác không?
Xác định danh sách tương tác có thể dễ dàng hơn với một octree vì một tế bào sẽ biết hàng xóm trực tiếp của nó. Tuy nhiên, danh sách tương tác là không cần thiết bằng cách sử dụng một giao dịch cây năng động hơn như Dual Tree Traversal .
Một thay thế sẽ là một cây kd. Một nhược điểm lý thuyết có thể là xây dựng đòi hỏi các hoạt động tìm kiếm trung bình đắt tiền. Tuy nhiên, có những phiên bản của cây kd không yêu cầu tìm trung bình trong quá trình xây dựng - mặc dù phân vùng không gian kém hiệu quả hơn. Thực hiện khôn ngoan, một cây kd rất đơn giản.
Một thay thế triệt để hơn có thể là một R-tree .
Vì vậy, câu hỏi của tôi là: Điều gì về Octrees khiến chúng trở thành lựa chọn tốt nhất cho FMM?