Estoy buscando un buen algoritmo para el siguiente problema: dada una cuadrícula 3D de vóxeles (que puede estar vacía o llena), si elijo dos vóxeles no adyacentes, quiero saber si están conectados entre sí por otros vóxeles
Por ejemplo (para ilustrar la situación en 2D), donde # es un cuadrado relleno:
1 2 3
a # # #
b # #
c # # #
Si elijo a3 y c3, quiero determinar lo más rápido posible si están conectados; si hay una ruta entre a3 y c3 a través de píxeles rellenos. (La situación real está en una cuadrícula de vóxeles 3D, por supuesto).
He analizado los algoritmos de inundación y los algoritmos de búsqueda de rutas, pero no estoy seguro de cuál elegir. Ambos realizan un trabajo innecesario: el relleno de inundación intenta llenar todos los vóxeles, pero esto no es necesario. Los algoritmos de búsqueda de ruta generalmente se ocupan de encontrar la ruta más corta, que tampoco es necesaria. Sólo necesito saber si hay es un camino.
¿Qué algoritmo debería usar?
Editar: según los comentarios, creo que debería agregar lo siguiente: el contenido de los vóxeles no se conoce de antemano, y también, el algoritmo es necesario para detectar si la eliminación (vaciado) de un vóxel podría romper el grupo de vóxeles en dos o más grupos más pequeños.
c3->c2->b2->a2->a3
?