浅谈最短路计数问题
浅谈最短路计数问题
本篇随笔浅谈一下图论中的最短路计数问题。
一、问题概念
最短路计数就是字面意思。我们可以找出一个图的最短路,但是这张图有多少条不同路径都满足这个路径最短的限制呢?
这就是最短路计数问题。
二、问题解决
在我们正常跑最短路算法松弛的时候,再采用一个数组cnt来统计最短路的条数。
当然,我们要想办法找出一个正确的松弛方案,也松弛cnt数组。
显然地,如果有路径可以松弛最短路,那么这个计数就要重新计算,因为已经没有用了。
所以此时cnt[y]=cnt[x]
,是一个继承。
还需要考虑什么问题呢?
当当前路径正好就是上一个节点的已知最短路时,这个计数就累加,合理性显然。
所以cnt[y]+=cnt[x]
。
所以我们就处理出了一个正确的cnt数组。
也就解决了这个问题。