我想找到加权有向图中恰好有4条边的最短周期(最短=边的权重的最小和)。
我知道我可以使用Floyd-Warshall算法在图中找到最短周期here。但我不知道如何找到恰好四边形的最短周期。
答案 0 :(得分:3)
既然你提到Floyd-Warshall,我认为有一个邻接矩阵不是问题。
让我们这样看:长度为4的循环的形式为a->b->c->d->a
。
将其拆分为两对两条边:a->b->c
和c->d->a
。
给定邻接矩阵,我们可以使用恰好两条边来轻松计算最短路径矩阵:从x
到z
的最短路径是每个顶点x->y->z
的最小值{ {1}}。
如果我们需要呈现周期,而不仅仅是它的长度,也可以存储给出最小值的顶点y
。
现在,要找到长度为4的最短周期,只需迭代所有可能的对y
。
对于每个此类对,我们的最低费用为(a, c)
到a
两个边缘,以及从c
到c
的最低成本。
具有这两个成本的最小总和的那对给了我们期望的周期。
该解决方案在O(n ^ 3)中运行,带有O(n ^ 2)额外的内存。