Je cherche un bon algorithme pour le problème suivant: Étant donné une grille 3D de voxels (qui peut être vide ou remplie), si je choisis deux voxels non adjacents, je veux savoir s'ils sont connectés les uns aux autres par d'autres voxels.
Par exemple (pour illustrer la situation en 2D), où # est un carré rempli:
1 2 3
a # # #
b # #
c # # #
Si je choisis a3 et c3, je veux déterminer le plus rapidement possible s'ils sont connectés; s'il y a un chemin entre a3 et c3 à travers des pixels pleins. (La situation réelle est dans une grille de voxels 3D, bien sûr.)
J'ai regardé les algorithmes de remplissage et les algorithmes de recherche de chemin, mais je ne sais pas lequel choisir. Les deux font un travail inutile: le remplissage par inondation essaie de remplir tous les voxels, mais ce n'est pas nécessaire. Les algorithmes de recherche de chemin visent généralement à trouver le chemin le plus court, ce qui n'est pas non plus nécessaire. Je ne ai besoin de savoir s'il est un chemin.
Quel algorithme dois-je utiliser?
Edit: sur la base des commentaires, je pense qu'il faudrait ajouter ce qui suit: le contenu des voxels n'est pas connu à l'avance, et aussi, l'algorithme est nécessaire pour détecter si la suppression (le vidage) d'un voxel entraînerait la rupture du groupe de voxels en deux ou plusieurs petits groupes.
c3->c2->b2->a2->a3
:?