我有一个连接图g
和n
顶点和m
边。检查从顶点v到另一个顶点w的所有路径是否具有相同的长度
每条边都可以从两个方向穿过,而在一个方向上穿过它们的重量是正的,在另一个方向穿过它们并且它们的重量是负的。
因此,对于每一个边缘u
- >v
体重w
存在一个边缘v
- >u
体重-w
。
我的目标:
对于给定的顶点v
,检查是否存在一个路径回v
(一个周期),因此该路径的边缘权重的总和不等于0
。如果存在这样的路径,则输出该路径的最小数量的边缘,否则输出"all cycles are fine"
。
实例:
一个例子,其中从v
到v
总和的所有路径可达0
。输出为"all cycles are fine"
:
在存在路径从v
到v
其边缘总结到的东西是不等于0
一个例子。这样的路径的边的最小数目是4在该实例中:
我目前的做法:
这个问题似乎是等效于检查是否从一给定顶点v
所有路径到任何其他顶点w
的长度相等,如果这是真的,那么“所有周期都很好”,否则我输出打破条件的最短周期的长度。我无法找到一个有效的算法来测试这种情况。
感谢您的帮助,完整解答:https://stackoverflow.com/questions/44141136/check-for-cycles-whose-weights-dont-sum-up-to-0/44141592#44141592 –