Floyd_warshall算法

原理是使用动态规划算法
使用 D i , j k D_{i,j}^k Di,jk表示从 v i v_{i} vi v j v_j vj的距离,并且中间只经过 { v 1 , v 2 , . . . . , v k } \{v_1,v_2, ...., v_k\} {v1,v2,....,vk}集合中的顶点,初始值有
D i , j 0 = { 0 , i = j w ( ( v i , v j ) ) 图中的边 ∞ , 其他 D_{i,j}^0 = \begin{dcases} 0, i=j \\ w((v_i, v_j)) 图中的边 \\ \infin, 其他 \end{dcases} Di,j0= 0,i=jw((vi,vj))图中的边,其他
状态转移方程为
D i , j k = m i n { D i , j k − 1 , D i , k k − 1 + D k , j k − 1 } D_{i,j}^k = min\{D_{i,j} ^{k-1}, D_{i,k}^{k-1} + D_{k,j}^{k - 1}\} Di,jk=min{Di,jk1,Di,kk1+Dk,jk1}

你可能感兴趣的:(算法笔记,算法)