我有一个图,其中包含未知数量的断开连接的子图。找到全部的最佳算法(或Java库)是什么?
我认为您正在寻找的通常称为“ 洪水填充”。您是通过BFS还是DFS遍历图形,这取决于您。
基本上,您采用一个未标记(也称为无色)节点,并为其分配一个新标签。您将相同的标签分配给与该节点相邻的所有节点,并依次分配该节点可到达的所有节点。
如果无法再标记其他可达节点,则可以通过选择另一个未标记节点重新开始。请注意,这个新节点未标记的事实意味着它无法从我们先前的节点访问,因此位于另一个断开连接的组件中。
如果不再有未标记的节点,则必须使用的不同标签数就是图形的组件数。每个节点的标签告诉您哪个节点是哪个组件的一部分。