当前位置: 首页 > news >正文

【从零开始学习计算机科学】算法分析(四)图 与 最大流算法

【从零开始学习计算机科学】算法分析(四)图 与 最大流算法

    • 图的属性
    • 图的存储
      • 邻接矩阵
      • 邻接表
    • 图算法
      • 图的遍历
        • 1. 图的深度优先搜索
        • 2,图的广度优先搜索
      • 图的拓扑排序
      • 图的强连通分量
      • 最小生成树
        • 1,Kruskal算法
        • 2,Prim算法
      • 最短路径
        • 单源最短路径算法
          • Dijkstra 算法
          • Bellman-Ford算法
        • 多源最短路径算法
        • Floyd-warshall算法
    • 最大流算法
      • 流网络
      • 残存网络(residual network)
      • 增广路径(augmenting paths)
      • 流网络的切割(cuts of networks)
      • Ford-Fulkerson方法
      • EK算法
    • 总结

在数学中,图是描述于一组对象的结构,其中某些对象对在某种意义上是“相关的”。这些对象对应于称为顶点的数学抽象(也称为节点或点),并且每个相关的顶点对都称为边(也称为链接或线)。通常,图形以图解形式描绘为顶点的一组点或环,并通过边的线或曲线连接。图形是离散数学的研究对象之一。

图主要有以下两种定义。

1,二元组的定义

图G是一个有序二元组(V,E),其中V称为顶集(Vertices Set),E称为边集(Edges set),E与V不相交。它们亦可写成V(G)和E(G)。其中,顶集的元素被称为顶点(Vertex),边集的元素被称为边(edge)。
E的元素都是二元组,用(x,y)表示,其中x,y ∈ \in V。

2,三元组的定义

图G是指一个三元组(V,E,I),其中V称为顶集,E称为边集,E与V不相交;I称为关联函数,I将E中的每一个元素映射到V × \times × V。如果e被映射到(u,v),那么称边e连接顶点u,v,而u,v则称作e的端点,u,v此时关于e相邻。同时,若两条边i,j有一个公共顶点u,则称i,j关于u相邻。

图可以分为有向图和无向图。如果给图的每条边规定一个方向,那么得到的图称为有向图。在有向图中,与一个节点相关联的边有出边和入边之分。相反,边没有方向的图称为无向图。

图的属性

阶(Order):图G中点集V的大小称作图G的阶。

子图(Sub-Graph):当图G’=(V’,E’)其中V‘包含于V,E’包含于E,则G’称作图G = (V,E)的子图。每个图都是本身的子图。

生成子图(Spanning Sub-Graph):指满足条件V(G’) = V(G)的G的子图G’。

导出子图(Induced Subgraph):以图G的顶点集V的非空子集 V 1 V_1 V1为顶点集,以两端点均在 V 1 V_1 V1中的全体边为边集的G的子图,称为 V 1 V_1 V1导出的导出子图;以图G的边集E的非空子集 E 1 E_1 E1为边集,以 E 1 E_1 E1中边关联的顶点的全体为顶点集的G的子图,称为 E 1 E_1 E1导出的导出子图。

度(Degree):一个顶点的度是指与该顶点相关联的边的条数,顶点v的度记作d(v)。

入度(In-degree)和出度(Out-degree):对于有向图来说,一个顶点的度可细分为入度和出度。一个顶点的入度是指与其关联的各边之中,以其为终点的边数;出度则是相对的概念,指以该顶点为起点的边数。

自环(Loop):若一条边的两个顶点为同一顶点,则此边称作自环。

路径(Path):从u到v的一条路径是指一个序列 v 0 , e 1 , v 1 , e 2 , v 2 , … , e k , v k v_0,e_1,v_1,e_2,v_2,\ldots,e_k,v_k v0,e1,v1,e2,v2,,ek,vk,其中 e i e_i ei的顶点为 v i v_i vi v i − 1 v_i-1 vi1,k称作路径的长度。如果它的起止顶点相同,该路径是“闭”的,反之,则称为“开”的。一条路径称为一简单路径(simple path),如果路径中除起始与终止顶点可以重合外,所有顶点两两不等。

行迹(Trace):如果路径P(u,v)中的边各不相同,则该路径称为u到v的一条行迹。

轨道(Track):如果路径P(u,v)中的顶点各不相同,则该路径称为u到v的一条轨道。闭的行迹称作回路(Circuit),闭的轨称作圈(Cycle)。
(另一种定义是:walk对应上述的path,path对应上述的track。Trail对应trace。)

桥(Bridge):若去掉一条边,便会使得整个图不连通,该边称为桥。

图的存储

图可以使用邻接矩阵或邻接表存储。

邻接矩阵

具有n个顶点的有向图可以用一个n × \times × n的方形矩阵表示。假设该矩阵的名称为M,则当 < v i , v j > <v_i,v_j> <vi,vj>是该有向图中的一条弧时,M[i,j] = 1;否则M[i,j] = 0。第i个顶点的出度为矩阵中第i行中"1"的个数;入度为第i列中"1"的个数,并且有向图弧的条数等于矩阵中"1"的个数。

具有n个顶点的无向图也可以用一个n × \times × n的方形矩阵表示。假设该矩阵的名称为M,则当( v i , v j v_i,v_j vi,vj)是该无向图中的一条边时,M[i,j] = M[j,i] = 1;否则,M[i,j] = M[j,j] = 0。第i个顶点的度为矩阵中第i 行中"1"的个数或第i列中"1"的个数。图中边的数目等于矩阵中"1"的个数的一半,这是因为每条边在矩阵中描述了两次。当边存在权重时,M[i,j]存储边 < v i , v j > <v_i,v_j> <vi,vj

相关文章:

  • Qt-D指针与Q指针的设计哲学
  • 【数学建模】层次分析法(AHP)详解及其应用
  • PyTorch 生态概览:为什么选择动态计算图框架?
  • ffmpeg基础整理
  • 学校IPTV数字电视直播:IPTV电视系统赋能校园电化教育系统升级
  • SVN学习笔记
  • 微软 AI 发布 LongRoPE2:近乎无损地将大型语言模型上下文窗口扩展至 128K 标记,保持 97% 短上下文准确性
  • 基于ssm+vue汽车租赁系统
  • iOS QLPreviewController预览PDF文件等(Swift)
  • 人工智能与机器学习——系统学习规划
  • MMO_随笔
  • 人工智能中的线性代数基础详解
  • 深度学习之目标检测/对象检测
  • Leetcode-1278.Palindrome Partitioning III [C++][Java]
  • Jdk7不同集合的扩容机制
  • 新手村:数据预处理-缺失值补充策略
  • 电商商品系统的演进分析
  • 第36周:文献阅读
  • 计算机四级 - 数据库原理 - 第4章 「关系数据库标准语言SQL」
  • deepseek GRPO算法保姆级讲解(数学原理+源码解析+案例实战)
  • 凡科建站做的网站收录慢吗/如何优化
  • 建设通网站怎么查项目经理在建/山西seo顾问
  • 吉林奶茶加盟网站建设/2020年百度搜索排名
  • 为公司做网站要做什么准备/重庆百度推广优化
  • 网站空间用万网的 域名不在万网/百度爱采购客服电话
  • 想开个小说网站怎么做/万能软文范例800字