示例:用Dijkstra算法求A到图中各点的最短路径

Dijkstral算法伪代码如下:

n次循环至n个顶点全部遍历:

1.1从权值数组中找到权值最小的,标记该边端点k

1.2打印该路径及权值

2.1如果存在经过顶点k到顶点i的边比v->i的权值小

2.2更新权值数组及对应路径

源码:

#include<iostream>
#include<iomanip>//控制格式
#include<string>

#define INF 0x3f3f3f3f//定义无穷大
using namespace std;

#define vertexNum 5//源点数
int G[vertexNum][vertexNum];//邻接矩阵
string vertex[]={"A","B","C","D","E"};//源点字符串组
void CreateMGraph()
{
    for(int i=0;i<vertexNum;i++)
        for(int j=0;j<vertexNum;j++)
    {
        G[i][j]=INF;
    }
    G[0][1]=10;G[0][3]=30;G[0][4]=100;
    G[1][2]=50;
    G[2][4]=10;
    G[3][2]=20;G[3][4]=60;
}
void Dijkstra(int v)
{
    int dist[vertexNum],i,num,k,min;//dist为权值存储数组
    string path[vertexNum];
    int s[vertexNum]={0};//初始化标记数组
    cout<<"初始权值数组和路径字符串数组:"<<endl;
    for(i=0;i<vertexNum;i++)
    {
        dist[i]=G[v][i];
        path[i]=vertex[v]+"-->"+vertex[i];
        cout<<path[i]<<" ";
        if(dist[i]!=INF) cout<<dist[i]<<endl;
        else cout<<"∞"<<endl;
    }
    s[v]=1;//标记第一个访问点
    dist[v]=0;
    num=1;//计数器
    cout<<"打印源点A到各点的最短路径及其权值和:"<<endl;
    while(num<=vertexNum)//当不取等号时将不会获得A到自身的路径
    {
        min=INF;
        for(k=0,i=0;i<vertexNum;i++)//查找最小值
            {
            if(s[i]==0&&(dist[i]<min)) {min=dist[i];k=i;}
            }
        cout<<path[k]<<"  "<<dist[k]<<endl;//打印路径及对应路径长(权值和)
        s[k]=1;num++;
        for(i=0;i<vertexNum;i++)//更新权值数组和字符串数组
            if((dist[i]>dist[k]+G[k][i])&&(G[k][i]!=INF))
        {
            dist[i]=dist[k]+G[k][i];
            path[i]=path[k]+"-->"+vertex[i];
        }
    }
}

int main()
{
    CreateMGraph();//创建邻接矩阵
    cout<<"打印邻接矩阵:"<<endl;
     for(int i=0;i<vertexNum;i++)
        for(int j=0;j<vertexNum;j++)
    {
        if(G[i][j]==INF) cout<<setw(4)<<"∞";
        else cout<<setw(4)<<G[i][j];
        if(j==vertexNum-1) cout<<endl;
    }
    Dijkstra(0);//以A为源点
    return 0;

}

示例截图:

喜欢记得给个赞哦

Dijkstra(迪杰特斯拉)算法(极简版)相关推荐

  1. Dijkstra(迪杰斯特拉)算法求单源最短路径问题

    Dijkstra(迪杰斯特拉)算法求单源最短路径问题 重要的事情说三遍:代码不是我写的!代码不是我写的!代码不是我写的! 第一个算法是严蔚敏数据结构(C语言版)上写的,第二个算法是王道数据结构上写的, ...

  2. JavaScript实现dijkstra迪杰斯特拉算法(附完整源码)

    JavaScript实现dijkstra迪杰斯特拉算法 PriorityQueue完整源代码 MinHeap.js完整源代码 Heap.js完整源代码 Comparator.js完整源代码 dijks ...

  3. C++实现Dijkstra(迪杰斯特拉)算法(附完整源码)

    C++Dijkstra迪杰斯特拉算法的实现 C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main函数测试) C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main ...

  4. Dijkstra迪杰斯特拉算法 C++实现

    本篇文章主要介绍了Dijkstra迪杰斯特拉算法的C++实现,文章包含两个部分,在第一部分中我会简单介绍迪杰斯特拉算法以及一些个人的理解,第二部分会对C++代码的逻辑进行解释.下面是我已经上传的代码资 ...

  5. 最短路径之Dijkstra(迪杰斯特拉)算法(无向图)

    简介      Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.由for循环可知,其时间 ...

  6. MATLAB轻松绘制地图路线——Dijkstra(迪杰斯特拉)算法最短路径规划

    文章目录 1. 地图绘制 2. 计算各节点之间的距离 3. Dijkstra(迪杰斯特拉)算法 4. 根据计算出的距离利用Dijkstra(迪杰斯特拉)算法找出指定节点之间的最短路径 工程文件(可直接 ...

  7. C语言实现Dijkstra(迪杰斯特拉)算法(附完整源码)

    Dijkstra迪杰斯特拉 Graph结构体定义 迪杰斯特拉算法完整源码(定义,实现,main函数测试) Graph结构体定义 struct Graph {int vertexNum;int **ed ...

  8. dijkstra迪杰斯特拉算法(邻接表法)

    算法简易过程: 迪杰斯特拉算法(朴素) O(n^2) G={V,E} V:点集合 E:边集合 初始化时 令 S={某源点ear}, T=V-S= {其余顶点},T中顶点对应的距离(ear, Vi)值若 ...

  9. Dijkstra(迪杰斯特拉)算法

    一.简介 迪克斯特拉算法又名Dijkstra算法(属于贪心算法).Dijkstra算法是从一节点到其余各节点最短路径计算方法. 迪杰斯特拉算法以起始点为中心向外层层扩展,直到扩展到终点为止. 算法思想 ...

  10. 算法提升:图的Dijkstra(迪杰斯特拉)算法

    目录 概念 思路 代码 概念 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路 ...

最新文章

  1. python 创建只读的函数(@property的介绍与使用)
  2. 字节总监的开发手记,知乎5000+点赞!
  3. amd 深度学习模型部署_Web服务部署深度学习模型-续集
  4. java数据结构 -链表 -获取有效节点个数,单链表中倒数k个节点
  5. idea集成Activiti Designer插件
  6. java jsp校验提示信息_java Jquery表单校验代码jsp页面
  7. 作者:张鹏(1993-),男,国防科学技术大学并行与分布处理重点实验室硕士生...
  8. 详解varint编码原理
  9. Query siblings()
  10. Typore快速插入图片
  11. Effective C++ -----条款42:了解typename的双重意义
  12. 设计模式之观察者Observer
  13. 马蜂窝视频编辑框架设计及在 iOS 端的业务实践
  14. DUILIB相对位置修改为锚概念
  15. 大数据入门教程系列之Hive篇汇总
  16. ubuntu20.05+GTX1050Ti驱动+CUDA10.2+CUDNN8+pytorch最后OK
  17. git报错:error.GitError: manifests rev-list (‘^HEAD‘, ‘14686468c69c63f1995ab2a0a9ad90b2e1d5e01c‘, ‘--‘)
  18. 快捷方式管理软件推荐
  19. 女生选择了计算机专业能做什么工作?其实有这 5 种,前景很好
  20. 增长的旋律——AARRR模式思考(二)

热门文章

  1. 图像相关度描述 - 归一化互相关(NCC)
  2. Kong的插件: hmac
  3. 小白初学AFL(American Fuzzy Lop)
  4. word2003官方下载免费完整版 正式版​
  5. 矩阵论 内积空间几何表示图解
  6. C语言 :学习动态内存分配
  7. Java基础Object类的hashCode方法
  8. C语言快排函数qsort()
  9. WORD文档如何在页眉页尾显示 page X of Y
  10. Geant4程序架构解析(以入门例程B1为例)