我正在处理有根、有向、潜在循环图。图中的每个顶点都有一个标签,它可能是唯一的,也可能不是唯一的。边没有标签。该图有一个指定的根顶点,每个顶点都可以从该根顶点到达。从顶点出来的边的顺序是相关的。
出于我的目的,一个顶点等于另一个顶点,如果它们共享相同的标签,并且它们的出边也被认为是相等的(并且顺序相同)。如果两条边具有相同的方向并且其对应端的顶点相等,则它们相等。
由于上面的相等规则,一个图可以包含多个实际上相等的“部分”。例如,在下图中,有两个同构部分包含标签为 {1, 2, 3, 4} 的顶点。图的根是顶点 0。
我需要能够识别相同的部分,然后删除所有重复项,而不改变图形的“含义”(关于上面的相等规则)。使用上面的例子作为输入,我需要产生这个:
在多项式时间内是否有已知的方法可以做到这一点?