用邻接矩阵加弗洛伊德算法实现校园导航计算并输出最短路径(带成果展示带核心代码)

本文介绍了如何构建一个适用于学校的精细化地图导航系统,通过前端使用高德地图显示和绘制路线,后台利用邻接矩阵与弗洛伊德算法计算最短路径。难点在于理解和应用弗洛伊德算法来找到任意两点间的最短路径,并在前端展示。文中还分享了实际操作中添加地理坐标、构建点的关系、创建邻接矩阵以及算法实现的步骤,并给出了核心代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

校园导航成果展示

在这里插入图片描述
在这里插入图片描述

实现方案

  • 前端
    前端使用高德地图显示地图信息并绘制路线路线
  • 后台
    后台使用邻接矩阵加弗洛伊德算法实现地图的存储和最短路径的计算,为什么不直接调用高德地图api导航呢?(因为对于像学校这种地方,地图录入的点根本就不够,导航不够精细,所以我们需要自己添加地理坐标,自己计算路径和路线)

具体实现

  • 第一步自己添加点信息,将自己想要添的点录入,如图:其中信息分别代表的是点的名称,点的经度和纬度(这里的经度和纬度不能随便填写,此处我使用的坐标都是真实的,可以进高德地图的开发者模式,使用坐标拾取器获取坐标,此处就不详细阐述,高德地图坐标拾取器地址:高德地图坐标拾取器地址),将点的坐标构建好以后就可以创建点与点之间的关系了(就是把点连起来)
    点坐标
    所有点在地图上显示

点拾取

  • 第二步构建点的关系,如图我将点的关系添加在了数据库中,每一条记录表示点1和点2之间的距离,如图所示:
    在这里插入图片描述
  • 第三步构建邻接矩阵:
    创建邻接矩阵就是把点放在一维数组里面,把点与点的关系放在二维数组里面:
    如图所示,点与点之间的关系放在了二维数组中,其中0表示不连通,1表示连通,按常理来说连通的地方应该表示的是两点之间的距离的,为了方便,此处我只展示了连通关系
    在这里插入图片描述
  • 第四步弗洛伊德算法增强,计算任意两点之间的距离和路径(难点):
    通过算法实现了计算出了任意两点的最路径并打印最短对应的路线
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 第五步前端调用,数据回显(最终效果如文章开头)。

难点剖析

在开发过程过程中,最难的地方就是计算最短路径和最短路径路线的输出,其中弗洛伊德算法不是特别好理解,并且弗洛伊德算法中只给了计算出最短路径,最短路径对应的路线并没有给出。最终查阅大量资料(包括优快云上大佬的文章)有了解决方案(在此表示感谢,已经找不到之前的文章了,所以无法标注引用)
下面给出系统的核心代码:

package controller;

import java.util.ArrayList;
import java.util.Arrays;


public class FloydAlgorithm {
   
    /**
     * @param args//没有含义
     * @param point//这个是点数组,里面存储了点的信息(名字),不同下标对应不同的点,并且点唯一
     * @param arr//这个二维数组是用来表示点与点之间的连通关系
     * @param end//终点
     * @param start//起点
     * @return // 直接调用该类的main方法,返回起点到终点的最短路径
     */
    public static ArrayList main(String[] args, String[] point, int[][] arr, String end, String start) {
   
        // 图的顶点
        String[] vertex = point;
        // 邻接矩阵
        int[][] matrix = new int[vertex.length][vertex.length];
        final int N = 
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xjitcm

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

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

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

打赏作者

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

抵扣说明:

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

余额充值