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("");
            }
        }

迪杰斯特拉算法-简单容易理解相关推荐

  1. 迪杰斯特拉算法(入门理解)

    Dijkstra算法(求某一个点到其他点的最短距离): *南昌理工学院ACM暑假集训队

  2. 迪杰斯特拉算法通俗理解

    迪杰斯特拉算法 迪杰斯特拉算法是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题.主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩 ...

  3. Java 图的最短路径问题-迪杰斯特拉算法VS弗洛伊德算法

    1.迪杰斯特拉算法VS弗洛伊德算法 迪杰斯特拉算法通过选定的被访问顶点,求出从出发访问顶点到其他顶点的最短路径: 弗洛伊德算法中每一个顶点都是出发访问点,所以需要将每一个顶点看做被访问顶点,求出从每一 ...

  4. 透彻理解迪杰斯特拉算法

    Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,这个算法我主动学了三遍,第一主动学的时候,是看严蔚敏的<数据结构>,当时应该是学懂了,有点透彻地理解了这个算法,但是没有记录下来 ...

  5. 如何理解迪杰斯特拉算法

    路漫漫其修远兮,吾将上下而求索. --屈原 在最短路径的求解算法中,迪杰斯特拉(Dijkstra)算法应该是非常出名的,但是对于初学者而言却又很难理解为什么这个算法是对的,找到的就是最短路径.下面博主 ...

  6. 迪杰斯特拉算法实现-Dijkstra 简单版

    迪杰斯特拉算法实现单源最短路 使用了 邻接表来存放图的信息,使用了优先级队列. #include <iostream> #include<queue> #include< ...

  7. 谈谈迪杰斯特拉算法的理解

    迪杰斯特拉算法的步骤 1.两个集合S 和T集合 2.S里首先存储的是我们的源点,T是其他点 3.然后我们更新从原点到其他点的距离,并选出最小的值的终点为中转点(这里讲的不是很清楚,建议和数据里的例子一 ...

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

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

  9. 求有向图中两点最短距离java_Java 迪杰斯特拉算法实现查找最短距离

    迪杰斯特拉算法 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是 ...

最新文章

  1. koa连接mysql_CentOS 环境 Node + Koa2 连接 MySQL (ECS系列三)
  2. Python单元测试框架Pyunit 的使用
  3. Java 中JProgressBar,Java JProgressBar
  4. CodeForces - 1316D Nash Matrix(构造+dfs)
  5. 算法(14)-leetcode-explore-learn-数据结构-二叉树的遍历
  6. 函数式编程 -- 测试题集
  7. 解读 2018之Go语言篇(上):为什么Go语言越来越热?
  8. 计算机组成与设计概念总结
  9. 2019Thinking(上) -- 一个前端开发者的个人思考
  10. JQuery仿百度有啊人气排行特效演示
  11. python爬取作品集_Python爬虫爬取哈利波特小说集,并用数据可视化剖析登场人物...
  12. 【寻找最佳小程序】12期:小程序数据助手——微信官方打造,移动端数据分析工具...
  13. js会员头像上传拖动处理头像类
  14. TensorFlow 2.9的零零碎碎(六)-模型训练和评价
  15. HDwiki 源代码 - 互动百科开源
  16. 快速了解区块链六大特点
  17. 中介者模式的实际应用
  18. 编写程序计算两个矩阵之和。
  19. 老旧小区安防难题成遗留“沉疴” 如何破解?
  20. 摊上事儿的网易邮箱和安全圈的那些“防御机制”

热门文章

  1. 基于遗传算法的PID参数整定研究(三)
  2. 目前流行的装修风格_当下最流行的十大装修风格,目前主流装修风格前十
  3. ISL81487IBZ 瑞萨-Renesas 5V,半双工,5Mbps,RS-485/RS-422 收发器
  4. 深植于场景需求混布数据库Hubble
  5. seo,seo是什么意思
  6. 固定资产管理软件RFID标签二维码手机高效盘点,资产报警功能保障安全
  7. PCB封装添加3D模型AltiumDesigner09/18
  8. “加里敦大学”开学咯~
  9. 【客户案例 | 交个朋友】直播电商行业是如何搭建私域的,圈量详细拆解!
  10. 微信公众号 自动拉黑已经取关的用户