浅谈算法和数据结构(12):无向图相关算法基础
2014-11-05 18:25
281 查看
原文出处: 寒江独钓
从这篇文章开始介绍图相关的算法,这也是Algorithms在线课程第二部分的第一次课程笔记。 图的应用很广泛,也有很多非常有用的算法,当然也有很多待解决的问题,根据性质,图可以分为无向图和有向图。本文先介绍无向图,后文再介绍有向图。 之所以要研究图,是因为图在生活中应用比较广泛:
图是若干个顶点(Vertices)和边(Edges)相互连接组成的。边仅由两个顶点连接,并且没有方向的图称为无向图。 在研究图之前,有一些定义需要明确,下图中表示了图的一些基本属性的含义,这里就不多说明。
在研究图之前,我们需要选用适当的数据结构来表示图,有时候,我们常被我们的直觉欺骗,如下图,这两个其实是一样的,这其实也是一个研究问题,就是如何判断图的形态。
要用计算机处理图,我们可以抽象出以下的表示图的API:
Graph的API的实现可以由多种不同的数据结构来表示,最基本的是维护一系列边的集合,如下:
还可以使用邻接矩阵来表示:
也可以使用邻接列表来表示:
由于采用如上方式具有比较好的灵活性,采用邻接列表来表示的话,可以定义如下数据结构来表示一个Graph对象。
从这篇文章开始介绍图相关的算法,这也是Algorithms在线课程第二部分的第一次课程笔记。 图的应用很广泛,也有很多非常有用的算法,当然也有很多待解决的问题,根据性质,图可以分为无向图和有向图。本文先介绍无向图,后文再介绍有向图。 之所以要研究图,是因为图在生活中应用比较广泛:
无向图
图是若干个顶点(Vertices)和边(Edges)相互连接组成的。边仅由两个顶点连接,并且没有方向的图称为无向图。 在研究图之前,有一些定义需要明确,下图中表示了图的一些基本属性的含义,这里就不多说明。
图的API 表示
在研究图之前,我们需要选用适当的数据结构来表示图,有时候,我们常被我们的直觉欺骗,如下图,这两个其实是一样的,这其实也是一个研究问题,就是如何判断图的形态。要用计算机处理图,我们可以抽象出以下的表示图的API:
Graph的API的实现可以由多种不同的数据结构来表示,最基本的是维护一系列边的集合,如下:
还可以使用邻接矩阵来表示:
也可以使用邻接列表来表示:
由于采用如上方式具有比较好的灵活性,采用邻接列表来表示的话,可以定义如下数据结构来表示一个Graph对象。
相关文章推荐
- 浅谈算法和数据结构: 十二 无向图相关算法基础
- 浅谈算法和数据结构: 十二 无向图相关算法基础
- 浅谈算法和数据结构: 十二 无向图相关算法基础
- 浅谈算法和数据结构: 十二 无向图相关算法基础
- 浅谈算法和数据结构: 十二 无向图相关算法基础
- 数据结构(11)无向图相关算法基础
- 浅谈算法和数据结构: 十二 无向图相关算法基础
- 浅析数据结构与算法12--无向图相关算法基础
- 算法基础----关于数据结构中树的相关算法总结探究
- 算法基础----关于数据结构中图的相关算法总结探究
- 五、 无向图相关算法基础
- 详解神经网络算法所需最基础数据结构Tensor及其相关操作
- 一步一步复习数据结构和算法基础-线性表
- 一步一步复习数据结构和算法基础-层次建立层次遍历二叉树
- 一步一步复习数据结构和算法基础-堆分配存储表示串
- 一步一步复习数据结构和算法基础-前序线索二叉树
- 一步一步复习数据结构和算法基础-中序线索二叉树
- 一步一步复习数据结构和算法基础-栈和队列(2)
- 一步一步复习数据结构和算法基础-链式队列
- 一步一步复习数据结构和算法基础-顺序串