繁体   English   中英

在无向非循环简单图中寻找最小子图

[英]finding minimal subgraph in an undirected acyclic simple graph

我有一个无向非循环简单图,其中有N节点和N-1边(所有节点相互连接)。

去除边缘E_i会将图分为正好分别具有M_iN-M_i节点的两个子图。

我正在寻找一种算法,该算法搜索边缘E_i以找到最相等的节点分区:我想找到min(max(M_i, N-M_i))

什么是无向无环连通图? 是的,一棵树

  1. 将树根到任意顶点并计算每个顶点的子树的大小。
  2. 令m(i)为第i个顶点的子树的大小。
  3. 假设您有固定的边(u,v),并且depth(u)<depth(v)。 然后,只需计算max(m(v),N-m(v))。
  4. 所有这些值中的最小值就是您的答案。

我假设该图由边缘列表表示; 由此,我们可以创建具有关联边的相应节点列表。

理由:

  • 将每个节点视为自己的群集,权重为1。
  • 连续地将每个叶节点“合并”到其父节点中,从而增加父节点的权重。
  • 在每次迭代中,构建可用的最轻集群。
  • 继续,直到只剩下两个群集; 连接它们的边缘是要移除的边缘。

初始化:

  1. 将所有叶节点(顺序1)放入列表中。
  2. 通过增加重量对列表进行排序。
  3. 将叶子节点放在列表的顶部; 将其合并到其父级(添加权重)。
  4. 如果结果节点现在是叶子,则将叶子插入列表中的适当点。

重复步骤3和4,直到仅剩两个节点为止; 这些形成所需的分区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM