Tôi đang tìm kiếm một thuật toán tốt cho vấn đề sau: Đưa ra một lưới các voxels 3D (có thể trống hoặc đầy), nếu tôi chọn hai voxels không liền kề, tôi muốn biết liệu chúng có được kết nối với nhau không các voxels khác.
Ví dụ: (để minh họa tình huống trong 2D), trong đó # là một hình vuông đầy:
1 2 3
a # # #
b # #
c # # #
Nếu tôi chọn a3 và c3, tôi muốn xác định càng nhanh càng tốt nếu chúng được kết nối; nếu có một đường dẫn giữa a3 và c3 qua các pixel được lấp đầy. (Tất nhiên, tình huống thực sự nằm trong lưới voxel 3D.)
Tôi đã xem xét các thuật toán lấp đầy và thuật toán tìm đường, nhưng tôi không chắc nên chọn thuật toán nào. Cả hai đều làm công việc không cần thiết: Lũ lụt cố gắng lấp đầy tất cả các voxels, nhưng điều này là không cần thiết. Các thuật toán tìm đường thường liên quan đến việc tìm đường đi ngắn nhất, điều này cũng không cần thiết. Tôi chỉ cần biết nếu có là một con đường.
Tôi nên sử dụng thuật toán nào?
Chỉnh sửa: dựa trên các nhận xét, tôi nghĩ nên thêm vào như sau: nội dung của các voxels không được biết trước và ngoài ra, thuật toán là cần thiết để phát hiện nếu loại bỏ (làm trống) một voxel sẽ khiến nhóm voxel bị phá vỡ thành hai hoặc nhiều nhóm nhỏ hơn.
c3->c2->b2->a2->a3
?