基于Floyd-Warshall算法的ISOMAP最短路径方法matlab仿真

本文介绍了Floyd-Warshall算法在ISOMAP中的应用,一种结合图论和MDS的降维技术,通过计算高维数据点间的测地距离进行非线性降维。MATLAB程序展示了如何使用Floyd-Warshall算法计算最短路径并进行后续的降维处理。
摘要由CSDN通过智能技术生成

目录

1.Floyd-Warshall算法

2.ISOMAP算法

3.MATLAB程序

4.仿真结果


       基于Floyd-Warshall算法的ISOMAP(Isometric Mapping)最短路径方法是一种非线性降维技术,它结合了图论中的最短路径算法和多维缩放(MDS, Multidimensional Scaling)的思想,用于发现高维数据中的低维非线性结构。ISOMAP算法的核心在于通过计算数据点之间的最短路径距离来估计它们之间的测地距离(geodesic distance),然后使用这些距离来进行降维。

1.Floyd-Warshall算法

         Floyd-Warshall算法是一种用于在加权图中找到任意两点之间最短路径的动态规划算法。它能够处理有向图或具有负权的边,并且可以用于计算有向图的传递闭包。该算法的时间复杂度为O(N^3),其中N是图中的顶点数,而空间复杂度为O(N^2)。

         Floyd-Warshall算法的基本思想是,通过迭代所有顶点对之间的路径,逐步更新路径长度。如果路径中经过的边权重之和小于前一条路径,则更新这条路径的长度。算法的实现通常包含三个嵌套的for循环,分别遍历所有的顶点。

        此外,Floyd-Warshall算法也被称为Floyd算法、Roy-Warshall算法、Roy-Floyd算法或WFI算法。它是由Robert Floyd在1962年首次提出的,并且与Bernard Roy在1959年发表的算法和Stephen Warshall在1962年找到的图形传递闭包算法基本相同。

        使用Floyd-Warshall算法计算图中任意两点之间的最短路径长度。设D 是一个N×N 的矩阵,其中D[i][j] 存储从点vi​ 到点vj​ 的最短路径长度,初始化时,D[i][j] 等于原图中点i 和点j 之间的直接距离。Floyd-Warshall算法的核心迭代过程如下:

其中′D′ 是中间结果矩阵,每次迭代更新后存储更优的最短路径信息。

最终,算法结束时D 矩阵即包含所有点对间的最短路径长度。

2.ISOMAP算法

        ISOMAP(Isometric Feature Mapping)是一种非线性降维方法,它利用图论中的最短路径概念来保持数据点间的全局几何结构。在ISOMAP中,Floyd-Warshall算法被用来计算多对节点之间的所有最短路径,以构建一个反映高维数据流形结构的邻接矩阵。

       基于上述最短路径,ISOMAP定义了高维数据点之间的测地距离(geodesic distance):

   

      然后,ISOMAP寻找一个低维嵌入Y={y1​,y2​,...,yN​},使得低维空间中的欧氏距离尽可能地保持与高维空间中的测地距离一致,这是一个优化问题,可通过最小化以下目标函数实现:

Isomap算法如下:

   步骤1:构建邻接图G(复杂度:O(DN2))

   基于输入空间X中流形G上的的邻近点对i,j之间的欧式距离dx (i,j),选取每个样本点距离最近的K个点(K-Isomap)或在样本点选定半径为常数ε的圆内所有点为该样本点的近邻点,将这些邻近点用边连接,将流形G构建为一个反映邻近关系的带权流通图G;

   步骤2:计算所有点对之间的最短路径(复杂度:O(DN2))

   通过计算邻接图G上任意两点之间的最短路径逼近流形上的测地距离矩阵DG={dG(i,j)},最短路径的实现以Floyd或者Dijkstra算法为主。

   步骤3:构建k维坐标向量(复杂度:O(dN2))

   根据图距离矩阵DG={dG(i,j)}使用经典Mds算法在d维空间Y中构造数据的嵌入坐标表示,选择低维空间Y的任意两个嵌入坐标向量yi与yj使得代价函数最小。

3.MATLAB程序

...........................................................................

D = zeros(V, V); 

for i=1:V
    for j = i+1:V
        distance  = norm(indata(i, :)-indata(j, :));
        D(i, j) = distance;
        D(j, i) = distance;
    end
end


%Assign distance 1000 to the non-neighbors(adjust this value if it does not fit in you dataset)

Dsort = sort(D);
for k=1:V
    threshold = Dsort(k, numberofneighbors);
    for l=k+1:V
        if D(k,l)>threshold
           D(k,l)=1000;
           D(l,k)=1000;
        end
    end
end    
 
% Determine the shortest path between all pairs using Floyd-Warshall algorithm 
dataMatrix = FloydWarshall(D);

% Centering J matrix to use in centering
mOne = ones(V, V);
mOne= mOne/V;
J = eye(V, V)-mOne;


% Double centering B matrix
B = -0.5*J*dataMatrix*J;

% Eigendecomposition of B
e = eig(B);
[W, DD] = eig(B);
W = real(W);

% reduced eigenvector matrix
Edim = W(1:reduceddim,:);
deltaSqrt = zeros(reduceddim, reduceddim);

for l=1:reduceddim
    deltaSqrt(l,l)=sqrt(e(l));
end    
    
% Dim-reduced(Isomap based) data
reduceddata = Edim'*deltaSqrt;
    
%scatter(reduceddata(:,1), reduceddata(:,2))
up4030

4.仿真结果

        ISOMAP通过构建高维数据集的近邻图,并利用Floyd-Warshall算法得到所有顶点之间的最短路径来计算测地距离。最后,在保持测地距离的基础上,将高维数据映射到低维空间以保留流形结构。这个过程涉及复杂的数学优化问题,但其核心思想是借助图论方法理解和捕捉非线性数据分布中的内在几何特性。

  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值