图论(理论篇)

图的概念

  • :G=(V,E),由顶点集和边集组成

    • 有向图

      • 强连通图:任意两个顶点可以相互到达
      • 有向树:一个顶点的入度为0,其余顶点的入度均为1 的有向图
      • 顶点的度=入度+出度
    • 无向图

      • 连通图:任意两个顶点是连通的
      • 生成树:包含图中所有顶点的一个极小连通子图
      • 最小生成树:边权之和最小且唯一;边数=顶点数减1
      • 顶点的度:依附于该顶点的边数,
    • 完全图任意两个顶点都存在双边

    • 稀疏图:边数少的图,一般E<V log V

      • 邻接表法:所需空间:O(V+E);顶点表+边表
        • 方便找出给定顶点的所有边
    • 稠密图:边数多的图

      • 邻接矩阵法:所需空间:O(V2);g[i] [j]代表从i到j有一条边

        • 方便查询任意两个顶点间是否有边
        • 方便求任意一个顶点的入度,时间复杂度为O(边数+顶点数)
        • 无向图的邻接矩阵是一个对称矩阵:数据量较大时可据此进行压缩处理,只采用一维数组存储,省略半边的数据

图的性质

    • 有向图:全部顶点的入度之和== 出度之和 == 边数
    • 无向图:全部顶点的度之 == 边数的2倍
    • 邻接矩阵中
      • 有向图:第i行非零元素的个数是顶点i的出度;第i列非零元素的个数是顶点i的入度
      • 无向图:第i行/列 非零元素的个数是顶点i的度
  • 连通

    • 强连通图:边数>=顶点数;边最少的情况:构成一个有向环
    • 连通图:边数>=顶点数-1;边最少的情况:构成一棵树
  • 完全图

    • 有向完全图:n个顶点有n(n-1)条边
    • 无向完全图:n个顶点有n(n-1)/2条边
    • 可用以计算有x条边的非连通无向图至少有几个顶点:x条边的完全图顶点为n,n再加1后即构成了一个非连通无向图
    • 可用以计算n个顶点的无向图至少需要几条边能确保是一个连通图:n-1个顶点构成完全图需要x条边,x+1条边保证第n个顶点与该完全图相连

图的应用

  • 优先搜索

    • 宽度优先搜索BFS

      • 复杂度分析
        • 空间复杂度:最坏O(V)
        • 时间复杂度:邻接表存储:O(V+E);邻接矩阵存储:O(V2)
    • 深度优先搜索DFS

      • 复杂度分析
        • 空间复杂度:O(V)
        • 时间复杂度:邻接表存储:O(V+E);邻接矩阵存储:O(V2)
    • 其他优先搜索的题目:手工模拟一下宽搜或者深搜的过程即可求解

  • 最小生成树

    • Prim算法:每次取集合外 离集合距离最短的点,放入集合,并用该点更新 其他各点到集合的距离
    • Kruskal算法:对每条边的边权从小到大开始枚举,如果两个点不连通,就将两个点放进集合,直到所有的点都在集合中
  • 最短路算法

    • Dijkstra算法:每次取 集合外 离源头距离最短的点,放入集合,并用该点更新 其他各点到源头的距离
    • Floyd算法:A[i] [j]=min(A[i] [j],A[i] [k]+A[k] [j]),三重循环遍历所有的边
  • 拓扑排序

    • 有向无环图DAG图:有向图中不存在环、
      • AOV网:顶点表示任务,有向边表示任务间的先后关系(边无权值)
      • AOE网:顶点表示事件,有向边表示活动(边带权值)
        • 仅有一个入度为0的顶点表示源点,仅有一个出度为0的顶点表示汇点
        • 关键活动:从源点到汇点的所有路径中,具有最大路径长度的路径为关键路径,关键路径上的活动成为关键活动
    • 拓扑排序:选择AOV网中入度为0的顶点并输出,删除该顶点以及该点出发的所有有向边,重复操作
      • 复杂度分析
        • 时间复杂度:邻接表存储:O(V+E);邻接矩阵存储:O(v2)

原文地址:http://www.cnblogs.com/pinoky/p/16914622.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性