Sto cercando un buon algoritmo per il seguente problema: Data una griglia 3D di voxel (che può essere vuota o riempita), se scelgo due voxel non adiacenti, voglio sapere se sono collegati tra loro altri voxel.
Ad esempio (per illustrare la situazione in 2D), dove # è un quadrato pieno:
1 2 3
a # # #
b # #
c # # #
Se scelgo a3 e c3, voglio determinare il più rapidamente possibile se sono collegati; se esiste un percorso tra a3 e c3 attraverso i pixel riempiti. (La situazione reale è in una griglia voxel 3D, ovviamente.)
Ho esaminato gli algoritmi di alluvione e gli algoritmi di ricerca del percorso, ma non sono sicuro di quale scegliere. Entrambi svolgono un lavoro non necessario: Flood fill cerca di riempire tutti i voxel, ma questo non è necessario. Gli algoritmi di ricerca del percorso di solito si occupano di trovare il percorso più breve, il che non è necessario. Ho solo bisogno di sapere se c'è un percorso.
Quale algoritmo dovrei usare?
Modifica: sulla base dei commenti, penso che dovrei aggiungere quanto segue: il contenuto dei voxel non è noto in anticipo e inoltre, l'algoritmo è necessario per rilevare se la rimozione (svuotamento) di un voxel causerebbe la rottura del gruppo di voxel in due o più gruppi più piccoli.
c3->c2->b2->a2->a3
:?