zoukankan      html  css  js  c++  java
  • 大话数据结构笔记——第七章 图

    1 图的定义

     

     

     1)各种图定义

     

     

     

     

     

     

     2)图的顶点与边间关系

     

     

     

     3)连通图相关术语

     

     

     

     

     

     4)图的定义与术语总结

    2 图的抽象数据类型

    3 图的存储结构

     

     1)邻接矩阵

     

     

     

     

     

     时间复杂度O(n)。

     2)邻接表

     

     

     

     

     3)十字链表

     

     4)邻接多重表

     

     

     

     5)边集数组

     

     

    4 图的遍历

     1)深度优先遍历

     

     

     

     

     2)广度优先遍历

     

    5 图的最小生成树

     

    通过前面的学习,对于含有 n 个顶点的连通图来说可能包含有多种生成树,例如 1 所示:

    普利姆算法(Prim):

    先选中一个结点为一个整体,在剩下所有结点与该整体的所有边中选一条最短的边,将这条新出现边的一个顶点归入这个整体中,然后在新合成的整体与剩下的所有结点的所有边中选一条最短的边,将这条新出现边的一个顶点归入这个整体中,以此类推,直到所有结点遍历完。(以结点为目标构建最小生成树,适合边数多的稠密图)

    【步骤】

    (1)从图中选取一个节点作为起始节点(也是树的根节点),标记为已达;初始化所有未达节点到树的距离为到根节点的距离

    (2)从剩余未达节点中选取到树距离最短的节点i,标记为已达;更新未达节点到树的距离(如果节点到节点i的距离小于现距离,则更新);

    (3)重复步骤2直到所有n个节点均为已达。

    克鲁斯卡尔算法(Kruskal):

    在带权连通图中,不断地在边集合中找到最小的边,如果该边满足得到最小生成树的条件,就将其构造,直到最后得到一颗最小生成树。(以边为目标构建最小生成树,适合边数少的稀疏图)

    【步骤】

    (1)将所有边的边权从小到大依次排列,并且均标为未选

    (2)选择最小的未选边

    (3)如果该边与前面所选的边无法构成回路,则选中该边,并标为已选;如果该边与前面所选的边构成了回路,则不选该边,并标为已选

    (4)重复(2)(3),直到所有点之间都有边相连;

     

     

     

    6 最短路径

     

    迪杰斯特拉算法(Dijkstra):

    迪杰斯特拉最最朴素的思想就是按长度递增的次序产生最短路径。即每次对所有可见点的路径长度进行排序后,选择一条最短的路径,这条路径就是对应顶点到源点的最短路径。

    迪杰斯特拉算法总共就干了两件事:

    【1】不断运行广度优先算法找可见点,计算可见点到源点的距离长度

    【2】从当前已知的路径中选择长度最短的将其顶点加入S作为确定找到的最短路径的顶点。

    看完这段视频就可以清楚迪杰斯特拉算法的过程:迪杰斯特拉算法讲解

    弗洛伊德算法(Floyd):

    https://www.cnblogs.com/ssyfj/p/9495960.html

     

     

     

     

                     ········

     

    7 拓扑排序

     1)拓扑排序介绍

     

     

     2)拓扑排序算法

     

     

     

     

    8 关键路径

     

     

     1)关键路径算法原理

     2)关键路径算法

     

     

     

     

     

     

     

     

    9 总结

     

  • 相关阅读:
    【转】VS2010中 C++创建DLL图解
    [转]error: 'retainCount' is unavailable: not available in automatic reference counting mode
    [转]关于NSAutoreleasePool' is unavailable: not available in automatic reference counting mode的解决方法
    【转】 Tomcat v7.0 Server at localhost was unable to start within 45
    【转】Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If
    【转】SVN管理多个项目版本库
    【转】eclipse安装SVN插件的两种方法
    【转】MYSQL启用日志,和查看日志
    【转】Repository has not been enabled to accept revision propchanges
    【转】SVN库的迁移
  • 原文地址:https://www.cnblogs.com/superjishere/p/12318047.html
Copyright © 2011-2022 走看看