我具有环状向图。在叶开始,我希望连接到下游是从该节点到达的所有节点每个节点繁殖的数据。具体地讲,我需要保持周围被达到,直到周期稳定任何周期推送数据。

我完全确信,这是一个股票图的遍历问题。不过,我有困难的公平位试图找到合适的算法---我想我错过了几个关键的搜索关键词。

在我尝试在一个妥善的解决办法,以写我自己的一半称职的为O(n ^ 3)算法,任何人都可以点我吗?什么的这个特殊问题叫什么?

有帮助吗?

解决方案

由于图形是环状的(即,可以含有周期),还是先分解成强连通分量。甲强连接有向图的部件是一个子图,其中每个节点是从在每一个其他节点可到达的同一子图。这将产生一组子图。请注意,一个以上的节点的强连接的组件是一个有效的周期。

现在,在每个组件中,在一个节点中的任何信息最终将在图中的每个其他节点结束(因为它们都是可访问)。因此,对于每个子图,我们可以简单地从它的所有节点把所有的数据,使每个节点具有相同的一组数据。没有必要继续通过循环下去。此外,在这个步骤结束时,在同一组件中的所有节点中包含完全相同的数据。

在下一步将是到每个强连通分量折叠成一个单一的节点。作为同一组件内的节点都具有相同的数据,因此是基本一致的,这种操作并没有真正发生变化的曲线图。新创建的“超级节点”将继承所有边缘外出或进入组件的节点从节点在组件外。

“替代文字”

由于我们已经崩溃所有强连通分量,会有在所得曲线(为什么?因为已经有过通过将得到的节点形成的周期,他们都被放置在同一个部件在第一位置中没有循环)。将得到的图形现在是一个向无环图。没有周期,并从= 0(即,节点不具有入边),传播从每个节点的数据到其相邻节点(即,其“子”),应完成这项工作与入度的所有节点的简单的深度优先遍历

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top