Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 找到最可靠的路径-Dijkstra’;s算法_Algorithm_Data Structures_Graph_Computer Science_Dijkstra - Fatal编程技术网

Algorithm 找到最可靠的路径-Dijkstra’;s算法

Algorithm 找到最可靠的路径-Dijkstra’;s算法,algorithm,data-structures,graph,computer-science,dijkstra,Algorithm,Data Structures,Graph,Computer Science,Dijkstra,给出了一个有向图G=(V,E),其中每一条边(u,V)∈ E有一个关联的 值r(u,v),是范围为0的实数≤ r(u,v)≤ 1表示从顶点u到顶点v的通信信道的可靠性。我们将r(u,v)解释为 从u到的信道不会失败的概率,我们假设这些概率 他们是独立的。给出了一种在给定的两条路径之间寻找最可靠路径的有效算法 顶点 a / \ b<--c a directed to c; c directed to b; b directed to a a / \

给出了一个有向图G=(V,E),其中每一条边(u,V)∈ E有一个关联的 值r(u,v),是范围为0的实数≤ r(u,v)≤ 1表示从顶点u到顶点v的通信信道的可靠性。我们将r(u,v)解释为 从u到的信道不会失败的概率,我们假设这些概率 他们是独立的。给出了一种在给定的两条路径之间寻找最可靠路径的有效算法 顶点

     a
    / \
   b<--c         a directed to c; c directed to b; b directed to a 
a
/ \
B
我们将r(u,v)解释为信道从u到
不会失败,我们假设这些概率是独立的

由此可以推断,给定路径不会失败的概率等于构成该路径的所有边的
(u,v)
的乘积

你想最大限度地利用这个产品

这与最短路径问题完全相同,对于最短路径问题,你肯定知道一个算法,除了不是最小化一个和,而是试图最大化一个乘积

从乘积到和有一个很酷的工具:对数。对数是一个递增函数,因此最大化乘积与最大化该乘积的对数是相同的。但对数还有另外一个很酷的特性,即乘积的对数等于对数之和:

log(a * b * c * d * ...) = log(a) + log(b) + log(c) + log(d) + ...
因此,最大化可靠性的乘积
r(u,v)
与最大化日志可靠性的总和
log(r(u,v))
是相同的


由于可靠性是边的概率,因此它们是介于0(排除)和1(包括)之间的值。可以排除0,因为如果某条边的可靠性为0,则可以从图形中删除该边。因为
0log(a * b * c * d * ...) = log(a) + log(b) + log(c) + log(d) + ...