总结重复图

Summarizing repeating gaph

有没有办法总结重复的有向图结构?

例如,如果我们有这样的图

a->b->c1->d1->c2->d2->c3->d3 
      ^       ^       ^
      |       |       |
      e1      e2      e3

其中 c1、c2、c3 和 d1、d2、d3 和 e1、e2、e3 具有相似的属性,或者例如分别具有相同的 class。
有没有办法通过在树和图中找到重复部分的算法将像上面这样的长图压缩成更一般的表示?

压缩版看起来像




a -> b -> c_n -> d_n
          ^^     | 
          ||_____|
          |
          e_n

不确定我的理解是否正确,如果对您有帮助,您可以执行以下操作:

将树的根定义为表示这些属性的公共 class(es)。在此示例中,让您的根为:a、b、c、d 和 e。

现在取属于给定class的所有元素,例如c1、c2和c3。将它们组织成根为 c 的树。

将每个元素直接连接到根,如果您需要访问 class 的单个元素,这将为您提供最佳搜索结果。

对每个 class 和每个元素重复分组。

完成后,您应该拥有以 classes 作为根的树。因此,唯一剩下的就是连接这些树,理想情况下,您应该将元素较少的树连接到元素较多的树,例如例如制作 C 的 B 子树。

您想将较小的树连接到较大的树,以通过影响最少数量的元素来增加所需的最低限度搜索复杂性,其中搜索较大的树将具有与连接前相同的复杂性。