-------------------siwuxie095

   

   

   

   

   

   

   

   

   

   

这里介绍 ,那么什么是图呢?

   

   

   

相对于来说,是一种更为复杂的数据结构

   

   

   

一言难以蔽之,那就直接上图吧,如下:

   

   

   

左边是一个图,右边也是一个图,简言之,可以把 暂且看成是

节点 它们之间的连线 的集合

   

根据连线的不同,又分为 有向图 无向图

   

   

   

有向图:

   

所谓 有向图就是节点和节点之间,由 有向线段 箭头 来进行连接

   

如:

   

对于 v1 和 v4 这两个节点来说,既有从 v1 到 v4 的箭头,又有从 v4

到 v1 的箭头

   

如果把这种两个节点之间的双向箭头表达成一条没有箭头的线,即 既有

v1 到 v4 的去向线,又有从 v4 到 v1 的去向线,那就是无向图了

   

   

   

无向图:

   

所谓 无向图,就是节点和节点之间,由 无向线段 来进行连接

   

也可以这么理解:可以把无向图中节点和节点之间的连线,都

认为是有向图中的两条连线:一个去,一个回

   

   

   

图的诸多概念:

   

   

1)有向图

   

   

   

有向图中的每一个节点,称之为 顶点

   

顶点和顶点之间的 有向线段 箭头,称之为

   

分为:弧尾 弧头,其中:

   

箭头的尾端(起端) 弧尾,箭头的头端(终端) 弧头

   

   

   

相对于一个顶点来说:

   

1)从当前顶点射出去的箭头数,叫做 出度

2)从其它顶点射回来的箭头数,叫做 入度

   

如:

   

对于 v1 顶点来说,它的出度是 2,入度是 1,因为从 v1 射出去

了 2 个箭头,从其它顶点射回来了 1 个箭头

   

出度 入度 和树中的 很类似

   

   

   

   

   

2)无向图

   

   

   

无向图中的每一个节点,也称之为 顶点

   

顶点和顶点之间的无向线段,称之为

(也可以理解为 双向的弧)

   

一条边两端的顶点称之为 邻接点

   

如:

   

v1 和 v2、v1 和 v3、v1 和 v4 都是邻接点,因为它们都有边相连接,

v2 和 v4 就不是邻接点,它们之间没有边相连接

   

   

   

   

   

3)连通图

   

   

   

对于无向图来说,如果它满足这样的条件:

   

无向图中的每一个顶点,都有通往其他顶点的连线,或直接

或间接,就可以把它称之为 连通图

   

   

也可以描述为:对于任何一个顶点,都有通往其它顶点的路径

   

   

   

   

   

4)完全图

   

   

   

对于无向图来说,如果它满足这样的条件:

   

无向图中的每一个顶点,都有通往其他顶点的直接的连线,

就可以把它称之为 完全图

   

   

完全图的边与顶点之间有一定的数量关系:

   

边数 = 顶点数 * ( 顶点数 - 1 ) / 2

   

   

   

   

   

5)生成树

   

   

   

对于完全图来说,可以把它再进行简化,使得当前这个图中只有最小

数量的边来连接每一个顶点,就可以把它称之为 生成树

   

   

换句话说,生成树是由所有顶点,以及仅能连接这些顶点的边组成的

   

   

生成树的边与顶点之间也有一定的数量关系:

   

边数 = 顶点数 - 1

   

   

   

   

   

   

   

在以上概念中,不难发现:

   

对于图来说,它基本上除了 顶点,就是

   

那么,如何通过 表达式 某种结构,来表示一个图呢?

   

   

   

显然,是有表示方法的,而且表示方法还不仅有一种,称之为

图的表示法 图的存储结构

   

   

   

   

在数据结构中,无论是哪一种结构,都会有节点的遍历

   

图,也不例外,只不过图的遍历更加复杂

   

   

   

因为图中的节点之间的边更多,而且,如果是有向图,只有去向

没有回向的可能也是有的

   

所以,图的遍历相对于队列、栈、线性表、树来说,都要更加复杂

   

   

   

   

   

图中最有价值的,就是 最小生成树

   

   

   

对于一个图来说,计算最小生成树的价值是什么呢?

   

如:

   

几个城市之间,要修高速公路,在计算这些城市之间通过高速公路

连接起来的最小的成本投入时,就要用到 最小生成树

   

   

   

   

   

   

   

图的应用

   

   

在如下地图中:

   

   

   

可以把这张地图的每一个城市都看成是一个节点,于是:

   

1)路径规划

   

如:在出行的时候,我们都会挂导航,而导航上每次都会

通过图的方式来进行计算,从而找到一条比较近的路

   

   

2)工程规划

   

如:在做 修高速公路、拉电网、拉光纤等工程时,都可以

通过图的方式来计算成本

   

   

3)战略规划

   

如:在做 战争的游戏 军事指挥的辅助软件时,可以通过

图的方式来做战略的规划,如下:

   

可以把每一个城市的价值标出来,通过每个城市价值的不同,

以及需要投入兵力的不同,来计算一个最佳的攻击方法

   

   

   

   

   

   

   

   

   

   

【made by siwuxie095】

原文地址:https://www.cnblogs.com/siwuxie095/p/6847759.html