Algorithm8——图论总结

来源:互联网 发布:淘宝智能版怎么装修 编辑:程序博客网 时间:2024/06/07 06:01

本系列算法实现都是在学习数据结构(C++语言版),清华大学邓俊辉教授编,听邓老师edX网课过程中自己实现的例子。文章中涉及到的图片如无说明均来自邓老师的教材.

参考链接

  • 图论算法 有图有代码 万字总结 向前辈致敬

1 概念总结

1.1 图(Graph)的表示

  • 顶点Vertex
  • 边Edge
  • 规模n=|V|,e=|E|
    表示G=(V,E)
  • 权重weight, wt(e)即为边e的权重
    表示G(V,E,wt())

1.2 无向图,有向图和混合图

  • (1) 无向图undirected graph
    无向边(undirected edge)表示e = (u, v)和e = (v, u)等同。
    与顶点v关联的边数,称作v的度数(degree),记作deg(v)

  • (2) 有向图directed graph
    有向边(directed edge)表示e = (u, v)和e = (v, u)不同。e = (u, v)从u指向v, u称作该边的起点(origin)或尾顶点(tail),而v称作该边的终点(destination)或头顶点(head)

  • (3) 混合图mixed graph
    同时包含无向边和有向边

有向图的通用性更强,因为无向图和混合图都可转化为有向图。每条无向边(u, v)都可等效地替换为对称的一对有向边(u, v)和(v, u)。具体区别如下图,
这里写图片描述

1.3 几个易混概念

  • 简单图simple graph
    不含任何自环self-loop的图
  • 有向无环图directed acyclic graph, DAG
    不含任何环路的有向图
  • 带权图weighted graph
    各边均带有权重的图,称作带权图weighted graph或带权网络weighted network,有时也简称网络network

1.4 通路与环路中的图分类

通路表示π=v0,v1,v2,...,vm

1.4.1 通路到简单通路

通路path沿简单通路simple path
这里写图片描述

1.4.2 通路到环路

通路pathv0=vm环路cycle

1.4.3 环路到简单环路、欧拉环路、哈密尔顿环路

(1) 环路cycle沿v0=vm简单环路 simple cycle
这里写图片描述

(2) 环路cycle欧拉环路Eulerian tour, 其长度也恰好等于图中边的总数e

(3) 环路cycle哈密尔顿环路Hamiltonian tour,其长度亦等于构成环路的边数
这里写图片描述

1.5 复杂度

输入规模是顶点数与边数的总和(n + e),但是因为图结构的特殊性,

  • 无论顶点多少,边数都有可能为0
  • 对于无向图,每一对顶点至多贡献一条边,故总共不超过n(n - 1)/2条边
  • 对于有向图,每一对顶点都可能贡献(互逆的)两条边,因此至多可有n(n - 1)条边
  • 总之必有e=O(n2)
原创粉丝点击