C++ 通过删除单个节点来减少图的连通性的最佳算法是什么?

C++ 通过删除单个节点来减少图的连通性的最佳算法是什么?,c++,algorithm,graph,C++,Algorithm,Graph,给定以下无向图: 节点数:7 边数:6 边缘: (01) (12) (23) (2.4) (4.5) (4 6) 如您所见,此图是一个连接的组件,任何节点都可以从任何其他节点访问。我想检测要删除的最佳节点,以便生成的图具有最低的连通性(无法到达其他节点的最大节点对数)。在这种情况下,最佳节点为2,因为它将产生3个组件(0,1)、(3)、(4,5,6),并且不能相互到达的对数为11 那么,检测此节点的最佳算法是什么?是一个图中通过特定节点(或边)的最短路径数的度量。这通常在聚类中用于选择被移除的边

给定以下无向图:

节点数:7
边数:6

边缘:

(01)
(12)
(23)
(2.4)
(4.5)
(4 6)

如您所见,此图是一个连接的组件,任何节点都可以从任何其他节点访问。我想检测要删除的最佳节点,以便生成的图具有最低的连通性(无法到达其他节点的最大节点对数)。在这种情况下,最佳节点为2,因为它将产生3个组件(0,1)、(3)、(4,5,6),并且不能相互到达的对数为11

那么,检测此节点的最佳算法是什么?

是一个图中通过特定节点(或边)的最短路径数的度量。这通常在聚类中用于选择被移除的边,这些边最容易断开图形。这听起来和你想做的很相似


有许多算法可以计算图中每个节点的介数中心性,例如or Brandes算法。一旦所有节点都具有中间值中心性(确保使用算法的节点种类,而不是边缘),则应选择具有最高值的节点,并将其从图中删除。

欢迎访问stackoverflow.com。请花些时间阅读,特别是命名和。也请和。最后,请学习如何创建一个。另外,请阅读,并了解您的问题可能被否决的一些原因。最后,请注意,对于许多图,没有一个节点会降低连接性。我想在这种情况下,算法应该选择一个随机节点?或者是一组会降低连通性的最小节点?非常感谢,我认为这个答案非常有用,我现在将搜索中间性中心。但是有一个问题,最大节点数是10000,所以那些带有未加权图的算法的最小复杂度是O(V*E)这是非常大的,如果你需要做得更好,你可能不得不接受一些近似值,因为这些算法已经高度优化了。有很多关于近似中间值中心性的论文,你可以在谷歌上快速找到。我怀疑这是一个目前还没有明确结论的研究领域,但你可能会找到适合的东西。