zoukankan      html  css  js  c++  java
  • Dijkstra算法课后补分博客

    题目名称:Dijkstra算法

    题目要求:课上给出相关附图,求解附图顶点A的单源最短路径。
    附图:

    做题过程

    1.了解Dijkstra算法的相关知识,包括定义以及使用方法。
    定义:Dijkstra算法是很有代表性的算法。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权边。具体的定义如下:Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均采用永久和临时标号的方式。注意该算法要求图中不存在负权边。
    2.使用方法:思想是按路径长度递增次序产生最短路径算法,先定义两组:
    (1)S:已求出最短路径的顶点的集合(初始时只含有源点V0)

    (2)V-S=T:尚未确定最短路径的顶点集合
    在加入元素要保证:
    (1)从源点V0到S中其他各顶点的最短路径长度都不大于从V0到T中任何顶点的最短路径长度

    (2)每个顶点对应一个距离值

    S中顶点:从V0到此顶点的最短路径长度

    T中顶点:从V0到此顶点的只包括S中顶点作中间顶点的最短路径长度

    依据:可以证明V0到T中顶点Vk的最短路径,或是从V0到Vk的直接路径的权值;或是从V0经S中顶点到Vk的路径权值之和

    (反证法可证)
    最后是具体步骤:

    1. 初始时令 S={V0},T={其余顶点},T中顶点对应的距离值

    若存在<V0,Vi>,d(V0,Vi)为<V0,Vi>弧上的权值

    若不存在<V0,Vi>,d(V0,Vi)为∞

    1. 从T中选取一个其距离值为最小的顶点W且不在S中,加入S

    2. 对其余T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值缩短,则修改此距离值

    重复上述步骤2、3,直到S中包含所有顶点,即W=Vi为止

    则对应到这道题目上,就可以根据以上步骤画出顶点A的单源最短路径:

  • 相关阅读:
    CentOS修改hosts文件及生效命令
    Elasticsearch处理 空对象问题
    Windows查看某个端口被占用的解决方法
    PHP Fatal error: Uncaught Error: Class ‘\Elasticsearch\Serializers\SmartSerializer‘ not found in /h
    浏览器正常导出文件phpecxel
    ElasticsearchPHP 快速开始
    MySQL为什么选择B+树存储索引
    PHP7.3.0+弃用FILTER_FLAG_SCHEME_REQUIRED的解决办法
    Zoom支持自动生成字幕;SharePlay上线;Safari 更新导致大量bug |WebRTC风向
    日均请求量1.6万亿次背后,DNSPod的秘密国密DoH篇
  • 原文地址:https://www.cnblogs.com/Metwox/p/8016678.html
Copyright © 2011-2022 走看看