您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法——图(一) 学习笔记

2020-03-11 12:24 148 查看

一、概述

1.1 图

图(graph),可定义为G = (V, E)。其中,**集合V(顶点集)**中的元素称作顶点(vertex);**集合E(边集)**中的元素分别对应于V中的某一对顶点(u, v),表示它们之间存在某种关系,故亦称作边(edge)。
规定V和E均是有限集,将规模记作:n= |V|,e=|E|
邻接关系:顶点与顶点间的关系
关联关系:顶点与和其相连的边的关系

1.2 无向图、有向图、混合图

若边(u, v)对应的顶点u和v的次序无所谓,则称作无向边(undirected edge)。若一幅图中所有边皆为无向边,则称为无向图(undirected graph,简称undigraph)
反之,若边对应的顶点有次序,则称为有向边(directed edge),若一幅图中所有边皆为有向边,则称为有向图(directed graph,简称digraph)
若一幅图中同时包含无向边和有向边,则称为混合图(mixed graph)
无向边(u, v)也可记作(v, u),而有向的(u, v)和(v, u)不可混淆。约定,有向边(u, v)从u指向v,其中u称作该边的起点(origin)或尾顶点(tail),而v称作该边的终点(destination)或头顶点(head)。

图取自清华大学《数据结构(C++语言版)》

1.3 度

与二叉树中度的定义类似
在无向图中:与顶点v关联的边数,称作v的度数(degree),记作deg(v)
对于有向边e = (u, v),e称作u的出边(outgoing edge)、v的入边(incoming edge)。v的出边总数称作其出度(out-degree),记作outdeg(v)入边总数称作其入度(in-degree),记作indeg(v)

1.4 简单图

联接于同一顶点之间的边,称作自环(self-loop)。不含任何自环的图称作简单图(simple graph)

1.5 通路与环路

通路(path):由m + 1个顶点与m条边交替而成的一个序列
简单通路(simple path):不含重复节点的路径

环路(cycle):起止顶点相同的通路
简单环路(simple cycle):不含重复节点的环路
有向无环图(directed acyclic graph, DAG):有向图中不含有任何环路的图称为有向无环图

欧拉环路(Eulerian tour):经过图中所有的边恰好各一次的环路,称为欧拉环路——其长度也恰好等于图中边的总数e。(联想一笔画游戏)
哈密尔顿环路(Hamiltonian tour):经过图中所有顶点恰好各一次的环路,称作哈密尔顿环路

沿途边的总数m,亦称作通路的长度,记作|π| = m。

1.6 带权网络

通过一个权值函数,为每一边e指定一个权重(weight),比如wt(e)即为边e的权重。各边均带有权重的图,称作带权图(weighted graph)或带权网络(weighted network),有时也简称网络(network),记作G(V, E, wt())

1.7 复杂度

与树类似却不同的是,图问题的输入规模以顶点数和边数的总和(n+e)来度量
无论顶点多少,边数最少都有可能为0。
在包含n个顶点的图中,对于无向图,每一对顶点至多贡献一条边,故总共不超过n(n - 1)/2条边,且这个上界由完全图达到。
对于有向图,每一对顶点都可能贡献(互逆的)两条边,因此至多可有n(n - 1)条边。总而言之,对于有n个顶点的图,必有边数e=O(n)

  • 点赞
  • 收藏
  • 分享
  • 文章举报
提小莫的寂寥 发布了12 篇原创文章 · 获赞 1 · 访问量 230 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: