一、图的一些基本概念

来源:互联网 发布:杯酒释兵权知乎 编辑:程序博客网 时间:2024/05/01 06:28

一 图基本

      图这个东西博大精深,而且有图论这门学科,虽然选修过,但最后自己剩下的东西真的不多,而且这玩意需要及时的回顾,不然很容易就忘了。

      Kongsiberg七桥问题是很经典的图引入问题,涉及到Euler环和一笔画问题。

      一个图,简单说来是由顶点和边组成,我们可以用一个三元组描述即G=(V,E,I),V为图总顶点集合,E为边的集合,I为关联关系。而且图能分为有向图和无向图。

      顶点v的度数记为d(v),图中必有: 所有顶点的度数之和是边数之和的两倍,应为一条边相当于连接了两个顶点,即算度数的时候*2。另外,在图中,度数为奇的顶点个数一定为偶数个,因为最后总度数一定为偶。在实际中的应用有:在一个宴会上,同奇数个人握手的人数个数一定为偶。

       途径:顶点和边交叉出现。

       迹:边不重复的途径。

       路:顶点不重复的途径。(路比迹更严格)

       连通的(任意两点之间有途径),连通分支数。

       不含圈的连通图成为树。一棵n顶点树的边数恰为n-1。由连通图可以获得其生成树。

       不含圈的图成为森林。

       子图:G1=(V1,E1)是G的子图,则V1是V的子集,同时E1是E的子集。

       生成子图:比子图要求多点,顶点不变,边是原图的子集。

       图还可以分为:有向图和无向图。有向图有出度和入度,出为d+(v)入为d-(v),且在有向图中两者相等。有向图中有连通和强连通之分,强连通双向,有向图的连通是指有向图的基础图连通(即把有向边当作普通边,有向图成为了无向图)。

       定理:若G是具有n个顶点,m条边的图,则下列成立:

       ①若G是树,则m=n-1;

       ②G为连通图,且m=n-1,则G为树;

       ③G不包含圈,且m=n-1,则G为树;

       ④若G由k个树组成,则m=n-k;

       ⑤若G有k个连通分支,且m=n-k,则G为森林。

       图的实现:主要有邻接矩阵(维度上都是顶点),关联矩阵(顶点和边各占一个维度),邻接链表

       图的遍历:宽度优先搜索算法(BFS)和广度优先搜索算法(DFS)。

       在BFS中,当搜索到某个顶点时候,就要依次将该顶点的所有相邻顶点访问;在DFS中,当搜索到某个顶点时候,继续纵深搜索与该节点相邻的其他一个未搜索过的顶点。前者可以用队列实现,后者可以用战实现。在实现的过程中,可以加入程序,以生成相应的生成树。

二 树相关

       树中,从根到每个叶子节点都有一条唯一的路,树中最长路的长度为该树的高度,顶点的深度(根到顶点的路长),顶点的层次(从下往上)。

        二叉树(每个顶点最多有两个儿子的树)。满二叉树,即出了叶子节点,每个顶点都有两个孩子。完全二叉树,为满二叉树的一部分。

        二叉树的一些基本算法有:先序(先根),中序(中根),后序(后根)。

三 图的表示

        主要有两种:邻接矩阵和邻接表