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。