Algorithm 通过删除可传递节点减少图

Algorithm 通过删除可传递节点减少图,algorithm,graph-theory,bipartite,Algorithm,Graph Theory,Bipartite,我正在处理一个需要删除图中可传递节点的问题。更具体地说,我需要通过从两组节点之间的路径中移除节点来减少边的数量 这张照片上写着千言万语,所以这就是我要做的 该图包含3种类型的节点(Ai、Bi、Ci)。我想通过删除节点Ai和Ci之间路径上的所有节点Bi来减少图,同时保留Ai和Ci节点之间的可达性 这确实是一个三元图,我想知道是否有一种有效的算法可以根据附图中所示的描述来减少它。如果我们让a表示as和Bs之间的邻接矩阵,B表示Bs和Cs之间的邻接矩阵,然后,结果图的邻接矩阵是布尔矩阵乘积AB。在理

我正在处理一个需要删除图中可传递节点的问题。更具体地说,我需要通过从两组节点之间的路径中移除节点来减少边的数量

这张照片上写着千言万语,所以这就是我要做的

该图包含3种类型的节点(Ai、Bi、Ci)。我想通过删除节点Ai和Ci之间路径上的所有节点Bi来减少图,同时保留Ai和Ci节点之间的可达性


这确实是一个三元图,我想知道是否有一种有效的算法可以根据附图中所示的描述来减少它。

如果我们让
a
表示as和Bs之间的邻接矩阵,
B
表示Bs和Cs之间的邻接矩阵,然后,结果图的邻接矩阵是布尔矩阵乘积
AB
。在理论上,快速矩阵乘法算法适用(如果你有密集矩阵),但在实践中,我怀疑它们会有多大帮助。

如果我们让
A
表示As和Bs之间的邻接矩阵,
B
表示Bs和Cs之间的邻接矩阵,然后,结果图的邻接矩阵是布尔矩阵乘积
AB
。在理论上,快速矩阵乘法算法适用(如果你有密集矩阵),但在实践中,我怀疑它们会有多大帮助。

为什么图形是三方的?因为你需要删除所有的B节点,并且你需要为每对边A-B-C添加一条边A-C,恐怕你做得比迭代所有的B节点更好,对于每个B节点,迭代其所有A-邻居和所有C-邻居。@Stef是的,这是我目前的方法,但我想知道是否有更有效的算法。在我看来,一定有一个,但也许我错了。你是如何存储这个图形的,什么样的数据结构?我们能否清楚地确定一个节点是a、B和C类型,还是需要对其进行分区?为什么图形是三方的?因为需要删除所有B节点,并且需要为每对边a-B-C添加一条边a-C,恐怕没有比迭代所有B节点和每个B节点更好的了,迭代所有的A-邻域和C-邻域。@Stef是的,这是我目前的方法,但我想知道是否有更有效的算法。在我看来,一定有一个,但也许我错了。你是如何存储这个图形的,什么样的数据结构?我们能否清楚地确定节点是a、B和C类型,还是需要对其进行分区?