我有一个定向加权图G =(V,E)。
在该图中,边的权重(v [i],v [j])是v [i]和v [j]之间的过渡计数。
我正在尝试确定完成任务的最佳方法:如何查找从节点A到节点B的路径概率P
所有权重均为正整数。
例如,
weight(A,B)=count of transition from A to B
weight(B,C)=count of transition from B to C
weight(B,D)=count of transition from B to D
weight(D,C)=count of transition from D to C
我们有几条路:
A->B->C
A->B->D->C
那么,如何计算这些路径的概率P并选择最佳路径?
答案 0 :(得分:3)
可以通过将问题减少到shortest path problem来解决,假设我们确实在讨论概率(这意味着,每个权重都在[0,1]
范围内)。
让图表为G=(V,E)
,两个顶点之间的概率表示为w(u,v)
。
定义: w'(u,v)= -log(w(u,v))
当使用s
作为权重函数时,从某个节点t
到某个节点w'
的最短路径是图中的最短路径。您可以使用Dijkstra's algorithm或Bellman-Ford algorithm
证明:
对于路径v1->v2->...->vn
,其概率为w(v1,v2) * w(v2,v3) * ... * w(vn-1,vn)
。
使用w'
作为权重时,使用任何最短路径算法时此路径的成本为:
d(v1,vn) = w'(v1,v2) + w'(v2,v3) + ... + w'(vn-1,vn) =
d(v1,vn) = -log(w(v1,v2)) + -log(w(v2,v3) + ... + -log(w(vn-1,vn)) =
d(v1,vn) = -1* [ log(w(v1,v2)) + log(w(v2,v3)) + ... + log(w(vn-1,vn)) =
d(v1,vn) = -1* log(w(v1,v2) * w(v2,v3) * ... * w(vn-1,vn))
这显然也适用于从s
到t
的最小路径。
这意味着此路径具有最小值:
s(s,t) = -1* log(w(s,v2) * w(v2,v3) * ... * w(vn-1,t))
由于log是单调函数,因此它也是-1 * w(s,v2) * w(v2,v3) * ... * w(vn-1,t)
的最小值,这是w(s,v2) * w(v2,v3) * ... * w(vn-1,t)
的最大值,而这正是概率。