《计算机网络自顶向下》之重头戏迪杰斯特拉算法
迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。
关于Dijkstra算法是如何工作的,下面我们通过一道例题来说明:
首先以T到所有网络节点的最短路径为例
为了方便计算,避免后期因为人为的疏忽漏算或者算错,我们先把所有的其他点都列出来,像这样:
其中N是指它开始的地方
首先t与自己肯定为0,后选择一个与T连接最短的u;下一步TU,与x未直接相连,距离为infinity,同理得出w也为无穷;
与y直接相连,距离为7.....以此类推,它的规范写法如下:
以此类推,如果你面前有好几条路要走,你一定要选择最短的那一条,这也是贪心算法的由来;
再举个例子:
以tuvw为例:到x的最短距离为3+4;到v的距离最短为4,到y的距离最短为7,规范表达如下:
注意了!数字后面的字母表示的是与目标直接相连再N范围之内的节点!这里容易混淆。
总结一下
本文并没有着重与分析dijkstra算法的原理,而是采用一道经典的例题来剖析,适合于数学基础较低的同学,其中所涉及的图论等数学知识,感兴趣的读者可以自行去了解。
如有问题,欢迎私信或发邮件联系我:flightgyc@qq.com
《计算机网络自顶向下》之重头戏迪杰斯特拉算法相关推荐
- 计算机网络课程实验4——编程实现路由算法(迪杰斯特拉算法)
实验目的: 运用各种编程语言实现基于 Dijkstra 算法的路由软件. 实验意义: 通过本实验,使学生能够对路由原理和路由算法有进一步的理解和掌握. 实验步骤: 1, 选择合适的编程语言编程实现基于 ...
- 图论的灵魂——带你走进迪杰斯特拉算法的世界
你好,我是小黄,一名独角兽企业的Java开发工程师. 感谢茫茫人海中我们能够相遇, 俗话说:当你的才华和能力,不足以支撑你的梦想的时候,请静下心来学习 希望优秀的你可以和我一起学习,一起努力,实现属于 ...
- 迪杰斯特拉算法(C语言实现)
迪杰斯特拉算法(C语言实现) 如上图,求以a为源点到个顶点的最短路劲. #include "stdio.h" #include "stdlib.h" //用一个 ...
- C++迪杰斯特拉算法求最短路径
一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...
- 迪杰斯特拉算法——PAT 1003
本文主要是将我对于我对于迪杰斯特拉算法的理解写出来,同时通过例题来希望能够加深对于算法的理解,其中有错误的地方希望大家指正. 迪杰斯特拉算法 我将这个算法理解成一个局部到整体的算法,这个方法确实越研究 ...
- 单源最短路径-Dijkstra(迪杰斯特拉算法)
迪杰斯特拉算法时间复杂度为O(n^2),其中n为顶点个数. 该算法用于求单源最短路径.并且图中的边不允许带负权值. #include <iostream> using namespace ...
- JavaScript实现dijkstra迪杰斯特拉算法(附完整源码)
JavaScript实现dijkstra迪杰斯特拉算法 PriorityQueue完整源代码 MinHeap.js完整源代码 Heap.js完整源代码 Comparator.js完整源代码 dijks ...
- C++实现Dijkstra(迪杰斯特拉)算法(附完整源码)
C++Dijkstra迪杰斯特拉算法的实现 C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main函数测试) C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main ...
- C语言实现Dijkstra(迪杰斯特拉)算法(附完整源码)
Dijkstra迪杰斯特拉 Graph结构体定义 迪杰斯特拉算法完整源码(定义,实现,main函数测试) Graph结构体定义 struct Graph {int vertexNum;int **ed ...
最新文章
- CMS之图片管理(3)
- Xamarin Essentials教程剪贴板Clipboard
- 51单片机串行口c语言编程,51单片机串口通信c语言编程
- 我去,还在这样读写 excel 这也太低效了吧,好办法来了
- React Hooks 不知道怎么学?看这篇
- mysql的压缩包安装_mysql 5.7.24 压缩包安装配置方法图文教程
- c语言自由存储区,C/C++ 内存分区以及自由存储区和堆的区别
- 大文件数据导出(后台执行,自动生成)
- Raphael的set使用
- 【java笔记】线程间通信(2):生产者和消费者案例分析
- python 函数篇(2)
- MAC安装HBase
- 网络中常用的各种协议名称(中英文)和具体含义
- matlab绘制垂线(x轴或y轴)
- 水漆哪个品牌好?十大品牌水漆排行榜
- 武汉的二本计算机学校有哪些,武汉二本大学有哪些学校
- Java代码走查审查规范总结
- PSPACE完全性学习笔记
- EN 14339地下消防栓—CE认证
- 董事会嫌我行动慢-----鲍尔默流泪回忆退休原因
热门文章
- 将Ehcache添加到Openxava应用程序
- 使用Spring AspectJ和Maven进行面向方面的编程
- arduinopn532模块_树莓派使用libnfc驱动ITEAD NFC PN532模块
- JavaScript/JS的学习
- HTML特殊符号/特殊字符
- xxx钻石商城功能开发需求
- 如何优雅地实现判断一个值是否在一个集合中?
- 设置数字范围的html语言,JavaScript奇技淫巧44招【实用】
- idea如何连接本地mysql_IDEA如何连接MYSQL
- 计算机硬盘瓶颈,为何你的电脑卡的飞起,看看是不是遇到存储瓶颈