Ich suche nach guten Algorithmen für das folgende Problem: Wenn ich bei einem 3D-Raster von Voxeln (die entweder leer oder gefüllt sein können) zwei nicht benachbarte Voxel auswähle, möchte ich wissen, ob sie durch miteinander verbunden sind andere Voxel.
Zum Beispiel (um die Situation in 2D zu veranschaulichen), wobei # ein gefülltes Quadrat ist:
1 2 3
a # # #
b # #
c # # #
Wenn ich a3 und c3 auswähle, möchte ich so schnell wie möglich feststellen, ob sie verbunden sind. wenn es einen Pfad zwischen a3 und c3 durch gefüllte Pixel gibt. (Die reale Situation ist natürlich in einem 3D-Voxelgitter.)
Ich habe mir Floodfill-Algorithmen und Pfadfindungsalgorithmen angesehen, bin mir aber nicht sicher, welche ich wählen soll. Beide erledigen unnötige Arbeit: Flood Fill versucht, alle Voxel zu füllen, dies ist jedoch nicht erforderlich. Pfadfindungsalgorithmen befassen sich normalerweise mit dem Finden des kürzesten Pfades, was ebenfalls nicht erforderlich ist. Ich muss nur wissen , ob es ist ein Weg.
Welchen Algorithmus soll ich verwenden?
Bearbeiten: Basierend auf den Kommentaren sollte ich Folgendes hinzufügen: Der Inhalt der Voxel ist nicht im Voraus bekannt, und der Algorithmus wird benötigt, um zu erkennen, ob das Entfernen (Entleeren) eines Voxels dazu führen würde, dass die Gruppe der Voxel bricht in zwei oder mehr kleinere Gruppen.
c3->c2->b2->a2->a3
?