程序员的内功——数据结构和算法系列

Posted 极咖秀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员的内功——数据结构和算法系列相关的知识,希望对你有一定的参考价值。


图是一种比线性表和树更复杂的数据结构,在图中,结点之间的关系是任意的,任意两个数据元素之间都可能相关。图是一种多对多的数据结构。

1、基本概念

图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。

注意:线性表中可以没有元素,称为空表。树中可以没有结点,叫做空树。但是在图中不允许没有顶点,可以没有边。

基本术语:

  • 无向边:若顶点Vi和Vj之间的边没有方向,称这条边为无向边(Edge),用(Vi,Vj)来表示。

  • 无向图(Undirected graphs):图中任意两个顶点的边都是无向边。

  • 有向边:若从顶点Vi到Vj的边有方向,称这条边为有向边,也称为弧(Arc),用<Vi, Vj>来表示,其中Vi称为弧尾(Tail),Vj称为弧头(Head)。

  • 有向图(Directed graphs):图中任意两个顶点的边都是有向边。

  • 简单图:不存在自环(顶点到其自身的边)和重边(完全相同的边)的图

  • 无向完全图:无向图中,任意两个顶点之间都存在边。

  • 有向完全图:有向图中,任意两个顶点之间都存在方向相反的两条弧。

  • 稀疏图;有很少条边或弧的图称为稀疏图,反之称为稠密图。

  • 权(Weight):表示从图中一个顶点到另一个顶点的距离或耗费。

  • 网:带有权重的图

  • 度:与特定顶点相连接的边数;

  • 出度、入度:有向图中的概念,出度表示以此顶点为起点的边的数目,入度表示以此顶点为终点的边的数目;

  • 环:第一个顶点和最后一个顶点相同的路径;

  • 简单环:除去第一个顶点和最后一个顶点后没有重复顶点的环;

  • 连通图:任意两个顶点都相互连通的图;

  • 极大连通子图:包含竟可能多的顶点(必须是连通的),即找不到另外一个顶点,使得此顶点能够连接到此极大连通子图的任意一个顶点;

  • 连通分量:极大连通子图的数量;

  • 强连通图:此为有向图的概念,表示任意两个顶点a,b,使得a能够连接到b,b也能连接到a 的图;

  • 生成树:n个顶点,n-1条边,并且保证n个顶点相互连通(不存在环);

  • 最小生成树:此生成树的边的权重之和是所有生成树中最小的;

  • AOV网(
    Activity On Vertex Network ):在有向图中若以顶点表示活动,有向边表示活动之间的先后关系

  • AOE网(
    Activity On Edge Network):在带权有向图中若以顶点表示事件,有向边表示活动,边上的权值表示该活动持续的时间。



以上是关于程序员的内功——数据结构和算法系列的主要内容,如果未能解决你的问题,请参考以下文章

编程内功修炼 - 算法

再也不怕数据结构和算法之开篇

程序猿的内功修炼 学好算法与数据结构

JavaScript 数据结构与算法之美 - 归并排序快速排序希尔排序堆排序

一文图解弄懂八大常用算法思想!

叮!“新鲜出炉”的数据结构与算法教程,请查收!