Я ищу хорошие алгоритмы для следующей задачи: учитывая трехмерную сетку вокселей (которая может быть либо пустой, либо заполненной), если я выберу два несмежных вокселя, я хочу знать, связаны ли они друг с другом другие воксели.
Например (чтобы проиллюстрировать ситуацию в 2D), где # - заполненный квадрат:
1 2 3
a # # #
b # #
c # # #
Если я выберу a3 и c3, я хочу как можно быстрее определить, связаны ли они; если между заполненными пикселями есть путь между a3 и c3. (Реальная ситуация, конечно, в трехмерной сетке вокселей.)
Я посмотрел на алгоритмы заливки и поиска пути, но я не уверен, какой выбрать. Оба выполняют ненужную работу: Flood fill пытается заполнить все воксели, но это не нужно. Алгоритмы поиска пути обычно связаны с поиском кратчайшего пути, что также не является необходимым. Мне нужно только знать , если это путь.
Какой алгоритм я должен использовать?
Редактировать: основываясь на комментариях, я думаю, следует добавить следующее: содержание вокселей заранее неизвестно, а также, алгоритм необходим для обнаружения, если удаление (опорожнение) вокселя вызовет разрыв группы вокселей на две или более меньшие группы.
c3->c2->b2->a2->a3
?