Szukam dobrych algorytmów dla następującego problemu: Biorąc pod uwagę siatkę 3D wokseli (które mogą być puste lub wypełnione), jeśli wybiorę dwa niesąsiadujące woksele, chcę wiedzieć, czy są one połączone ze sobą przez inne woksele.
Na przykład (aby zilustrować sytuację w 2D), gdzie # to wypełniony kwadrat:
1 2 3
a # # #
b # #
c # # #
Jeśli wybiorę a3 i c3, chcę jak najszybciej ustalić, czy są one połączone; jeśli istnieje ścieżka między a3 i c3 przez wypełnione piksele. (Rzeczywista sytuacja jest oczywiście w siatce wokseli 3D).
Patrzyłem na algorytmy wypełniania zalewów i algorytmy wyszukiwania ścieżek, ale nie jestem pewien, który wybrać. Oba wykonują niepotrzebną pracę: funkcja Flood próbuje wypełnić wszystkie woksele, ale nie jest to konieczne. Algorytmy ustalania ścieżki zwykle dotyczą znalezienia najkrótszej ścieżki, co również nie jest konieczne. Muszę tylko wiedzieć, czy tam jest ścieżka.
Jakiego algorytmu powinienem używać?
Edycja: na podstawie komentarzy, myślę, że powinienem dodać: zawartość wokseli nie jest z góry znana, a także algorytm jest potrzebny do wykrycia, czy usunięcie (opróżnienie) woksela spowodowałoby pęknięcie grupy wokseli na dwie lub więcej mniejszych grup.
c3->c2->b2->a2->a3
?