如何在有向图中找到路径的概率?

时间:2016-05-04 17:28:04

标签: algorithm graph graph-theory weighted

我有一个定向加权图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并选择最佳路径?

1 个答案:

答案 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 algorithmBellman-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)) 

这显然也适用于从st的最小路径。
这意味着此路径具有最小值:

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)的最大值,而这正是概率。