R 将图形分解为2节点或更大节点的最小子组件
我希望能够将我的图形分割成子组件,这样删除任何单个节点都不会创建更多的子组件(不包括单个节点)。作为示例,请参见下面的两幅图像 第一幅图显示了完整的图形。第二幅图显示了图的子组件,当它被拆分为最小的子组件时。从第二幅图像中可以看出,顶点名称一直保持不变。我不需要新的结构是一个单一的图,它可以是一个图的列表,甚至是每个组件中节点的列表 节点4-5-6的组件保持不变,因为删除三个节点中的任何一个都不会创建新组件,因为断开的节点将仅是一个节点。 目前,我正在尝试组合一个迭代过程,该过程按升序顺序删除节点,并递归到生成的新组件中。然而,这很难,我想其他人以前做得更好。你说你想要“2个节点中最大节点的最小子组件”,并且你的示例具有“可能最小的子组件”。但实际上你的意思是最大的子组件,这样移除任何一个节点都不会产生更多的子组件,对吗?否则,您可以将该图拆分为所有2-图的集合 因此,我相信您的问题可以描述为查找所有“双连通组件”(也称为图的最大双连通子图): 正如您在评论中所说,igraph具有功能R 将图形分解为2节点或更大节点的最小子组件,r,igraph,R,Igraph,我希望能够将我的图形分割成子组件,这样删除任何单个节点都不会创建更多的子组件(不包括单个节点)。作为示例,请参见下面的两幅图像 第一幅图显示了完整的图形。第二幅图显示了图的子组件,当它被拆分为最小的子组件时。从第二幅图像中可以看出,顶点名称一直保持不变。我不需要新的结构是一个单一的图,它可以是一个图的列表,甚至是每个组件中节点的列表 节点4-5-6的组件保持不变,因为删除三个节点中的任何一个都不会创建新组件,因为断开的节点将仅是一个节点。 目前,我正在尝试组合一个迭代过程,该过程按升序顺序删
biconnected_components(g)
,可以解决您的问题。:) 您说您想要“2个较大节点的最小子组件”,并且您的示例具有“可能的最小子组件”。但实际上你的意思是最大的子组件,这样移除任何一个节点都不会产生更多的子组件,对吗?否则,您可以将该图拆分为所有2-图的集合
因此,我相信您的问题可以描述为查找所有“双连通组件”(也称为图的最大双连通子图):
正如您在评论中所说,igraph具有功能
biconnected_components(g)
,可以解决您的问题。:) 您说您想要“2个节点中最大节点的最小子组件”,并且您的示例具有“可能的最小子组件”。但实际上你的意思是最大的子组件,这样移除任何一个节点都不会产生更多的子组件,对吗?否则,您可以将该图拆分为所有2-图的集合。那么,我相信你的问题可以描述为找到所有“双连通分量”(图的最大双连通子图):这是正确的。非常感谢,这正是我所需要的。igraph具有双连接的_组件(g)功能。所以我可以用它,你说你想要“2个节点中最小的子组件,大于2个节点”,你的例子有“最小的子组件”。但实际上你的意思是最大的子组件,这样移除任何一个节点都不会产生更多的子组件,对吗?否则,您可以将该图拆分为所有2-图的集合。那么,我相信你的问题可以描述为找到所有“双连通分量”(图的最大双连通子图):这是正确的。非常感谢,这正是我所需要的。igraph具有双连接的_组件(g)功能。所以我可以用它。