[工具]toolbox_graph_Floyd算法

Floyd:计算图的最短路径。更详细的C++实现代码可参考:http://www.cnblogs.com/twjcnblog/archive/2011/09/07/2170306.html

在这里我们只描述在MATLAB中对三维模型检索的作用。

perform_floyd_algorithm.m:实现Floyd算法求解最短路径。

  function D1 = perform_floyd_algorithm(D, verbose)

  参数说明:D——邻接矩阵,不同于dijkstra算法中的邻接矩阵,这里当顶点i到顶点j没有相连时,D(i,j)= Inf;

    verbose——设定是否显示滚动条的参数

  输出:D1——v*v的邻接矩阵,保存最短路径。

以下是MATLAB代码:

% perform a propagation on a 2D grid
m = 20;
[A,vertex] = gen_square_graph( m );
n = size(A,1);

% add little jitter to impose uniqueness
A = A + A .* rand(n,n) * 0.01;

for i = 1:size(A,1)
for j = 1:size(A,2)
if(A(i,j) == 0)
A(i,j) = Inf;
end
end
end

D1 = perform_floyd_algorithm(A);

相比于dijkstra算法,多了将D(i,j)== 0的顶点转换为inf。

原文地址:https://www.cnblogs.com/sipin/p/4361127.html