迪杰斯特拉算法-简单容易理解
1.最短路径算法
画一张图:简单
首先是连通图,单向连通图
1-4找到最短路径 first-last
遍历所有节点
1-所有节点判断,如果有的话前继节点就是1 2,5
这个时候我们就需要判断这几个节点2,5
但是我们还得遍历,因为我们不知道 这个时候找2的前继节点是
1吗?可能有其他路径在2没关系局部最优,因为如果有其他节点到2的话说明这个节点可以到2
如果距离更小,那么就选择这个节点为前继节点,但是必须是已经连接的节点,
复杂也就是这个原理
public int[,] matirx()
{
int[,] a = new int[5,5];
//int[][] a = a;
//Console.WriteLine(a);
for(int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
a[i,j] = 10000;
}
a[0,0] = 6;
a[0,1] = 5;
a[0, 4] = 1;
a[4, 3] = 1;
a[3, 1] = 1;
a[1,2] = 7;
return a;
}
public void dijiesitela()
{
int dis;
int[,] a = matirx();
//dis = a[0,2];
int[] value = new int[5];
int[] arr = new int[5];
bool[] flag1 = new bool[5];
//b[0]=
int first = 0;
int last = 2;
int count = 0;
int flag = 10000;
for(int xu = 0; xu < 5; xu++)
{
for(int xu1 = 0; xu1 < 5; xu1++)
{
Console.Write(a[xu, xu1] + " ");
}
Console.WriteLine();
}
for (int i = 0; i < 5; i++)
{
value[i] = 10000;
flag1[i] = false;
}
value[first] = 0;
for (int i = 0; i < 5; i++)
{
for (int ii = 0; ii < 5; ii++)
{
if (!flag1[ii] && value[ii] < 10000)
{
first = ii;
//Console.WriteLine(first);
}
}
flag1[first] = true;
//里面 判断first节点的后继节点
//first要改变
for (int j = 0; j < 5; j++)
{
if (j != first && value[first] + a[first,j] < value[j])
{
arr[j] = first;
value[j] = value[first] + a[first,j];
}
}
}
int[] last1 = new int[5];
last1[0] = 0;
last1[last] = 2;
/*for (int intint = 0; intint < arr.Length; intint++)
Console.WriteLine(arr[intint]);*/
int count1 = 1;
while (arr[last] != 0)
{
Console.WriteLine(arr[last]);
last = arr[last];
last1[count1]= arr[last];
}
//sleep(1000);
while (true)
{
Console.Write("");
}
}
迪杰斯特拉算法-简单容易理解相关推荐
- 迪杰斯特拉算法(入门理解)
Dijkstra算法(求某一个点到其他点的最短距离): *南昌理工学院ACM暑假集训队
- 迪杰斯特拉算法通俗理解
迪杰斯特拉算法 迪杰斯特拉算法是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题.主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩 ...
- Java 图的最短路径问题-迪杰斯特拉算法VS弗洛伊德算法
1.迪杰斯特拉算法VS弗洛伊德算法 迪杰斯特拉算法通过选定的被访问顶点,求出从出发访问顶点到其他顶点的最短路径: 弗洛伊德算法中每一个顶点都是出发访问点,所以需要将每一个顶点看做被访问顶点,求出从每一 ...
- 透彻理解迪杰斯特拉算法
Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,这个算法我主动学了三遍,第一主动学的时候,是看严蔚敏的<数据结构>,当时应该是学懂了,有点透彻地理解了这个算法,但是没有记录下来 ...
- 如何理解迪杰斯特拉算法
路漫漫其修远兮,吾将上下而求索. --屈原 在最短路径的求解算法中,迪杰斯特拉(Dijkstra)算法应该是非常出名的,但是对于初学者而言却又很难理解为什么这个算法是对的,找到的就是最短路径.下面博主 ...
- 迪杰斯特拉算法实现-Dijkstra 简单版
迪杰斯特拉算法实现单源最短路 使用了 邻接表来存放图的信息,使用了优先级队列. #include <iostream> #include<queue> #include< ...
- 谈谈迪杰斯特拉算法的理解
迪杰斯特拉算法的步骤 1.两个集合S 和T集合 2.S里首先存储的是我们的源点,T是其他点 3.然后我们更新从原点到其他点的距离,并选出最小的值的终点为中转点(这里讲的不是很清楚,建议和数据里的例子一 ...
- Dijkstra迪杰斯特拉算法 C++实现
本篇文章主要介绍了Dijkstra迪杰斯特拉算法的C++实现,文章包含两个部分,在第一部分中我会简单介绍迪杰斯特拉算法以及一些个人的理解,第二部分会对C++代码的逻辑进行解释.下面是我已经上传的代码资 ...
- 求有向图中两点最短距离java_Java 迪杰斯特拉算法实现查找最短距离
迪杰斯特拉算法 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是 ...
最新文章
- koa连接mysql_CentOS 环境 Node + Koa2 连接 MySQL (ECS系列三)
- Python单元测试框架Pyunit 的使用
- Java 中JProgressBar,Java JProgressBar
- CodeForces - 1316D Nash Matrix(构造+dfs)
- 算法(14)-leetcode-explore-learn-数据结构-二叉树的遍历
- 函数式编程 -- 测试题集
- 解读 2018之Go语言篇(上):为什么Go语言越来越热?
- 计算机组成与设计概念总结
- 2019Thinking(上) -- 一个前端开发者的个人思考
- JQuery仿百度有啊人气排行特效演示
- python爬取作品集_Python爬虫爬取哈利波特小说集,并用数据可视化剖析登场人物...
- 【寻找最佳小程序】12期:小程序数据助手——微信官方打造,移动端数据分析工具...
- js会员头像上传拖动处理头像类
- TensorFlow 2.9的零零碎碎(六)-模型训练和评价
- HDwiki 源代码 - 互动百科开源
- 快速了解区块链六大特点
- 中介者模式的实际应用
- 编写程序计算两个矩阵之和。
- 老旧小区安防难题成遗留“沉疴” 如何破解?
- 摊上事儿的网易邮箱和安全圈的那些“防御机制”
热门文章
- 基于遗传算法的PID参数整定研究(三)
- 目前流行的装修风格_当下最流行的十大装修风格,目前主流装修风格前十
- ISL81487IBZ 瑞萨-Renesas 5V,半双工,5Mbps,RS-485/RS-422 收发器
- 深植于场景需求混布数据库Hubble
- seo,seo是什么意思
- 固定资产管理软件RFID标签二维码手机高效盘点,资产报警功能保障安全
- PCB封装添加3D模型AltiumDesigner09/18
- “加里敦大学”开学咯~
- 【客户案例 | 交个朋友】直播电商行业是如何搭建私域的,圈量详细拆解!
- 微信公众号 自动拉黑已经取关的用户