寻找非常大的体素集的切割集

计算科学 算法
2021-12-17 09:16:05

我有一个寻找大型体素集的切割集的问题。如果体素通过面/边/顶点(可以变化)接触,则假定它们是连接的,理想情况下,我想要的是给定集合的任何两个成员,以找到将它们分成两个组件的最小切割体素集。

这些集合是“大”的,向上 10^7,所以我可能正在寻找某种多分辨率方法?任何指针表示赞赏。

澄清一下,假设体素存在于 3D 积分点阵上,如果坐标在最多 1(2 或 3)维(分别用于面/边/顶点连通性)中变化 1,我们称它们为“相邻”。如果存在序列 v0,..vi,vi+1,...vN,其中 vi,vi+1 相邻,则体素 v0 和 vN 是连接的。

组件是连接体素的最大集合,割集是组件的任何子集,其移除会将组件分成 2 个或更多组件。

1个回答

看起来您正在尝试解决图形分区问题,限制条件是两个特定点位于不同的分区中。METIS在此应用程序中非常受欢迎,并且可以并行运行。

METIS 可能有点矫枉过正。它对整个图进行分区,从而查看每个点,而您只想找到一个割集,而不关心任何其他点最终位于割集的哪一侧。尽管如此,您始终可以阅读他们的算法如何获得灵感。正如您所指出的,他们使用多层次的方法。

此外,您的图表是高度结构化的。任何用于划分一般非结构化图的实用程序都可能不会利用这一点。

由于这些原因,如果您需要真正快速的性能并且您正在计算大量点对的割集,您最好编写自己的程序。这是否值得是你必须做出的判断。