第六章学习心得

  本章学习了图的知识,图是一种复杂的数据结构,树也是一种特殊的图。树都那么难了,图就更难了╥﹏╥

一、图的定义

  1.图由两个集合组成,G=(V,E),V是定点的有穷非空集合,E是V中定点对的有穷集合,V不能为空而E可以为空。

  2.有向图是指图中的边的两个顶点是有序的,无向图的边两个顶点是无序的。

  3.有关于图的其他专业术语,如完全图、度等(这些内容在后面的学习过程中慢慢理解)

二、图的表示

  1.邻接矩阵:通过一个邻接矩阵表示一张图,其中邻接矩阵是对角对称的,所以可以用邻接矩阵的一半组成的数组表示图。

        邻接矩阵优点很多,主要是清晰易懂,但缺点也很明显,当目标是一张稀疏图的时候时间空间浪费较大。

  2.邻接表:对每个顶点建立一个单链表,把与表头相邻的顶点放在链表中。

      这种方法对稀疏图很友好,但是一般用于表示无向图,有向图的建立比较麻烦。

  其中,邻接表拓展之后可以得到十字链表和邻接多重表,可以用于建立有向图和网络等比较复杂的图。

三、遍历

  1.DFS:类似于树的先序遍历,步骤如下

    (1)从起点V出发,访问V

    (2)找出V的第一个未访问邻接点并访问。

    (3)重复(2)直到没有未访问的邻接点,返回前一个访问过的点且仍有未被访问的顶点。

    (4)重复(3)直到所有顶点被访问,结束。

  2.BFS:类似于树的层次遍历,步骤如下:

    (1)从起点V出发,访问V。

    (2)依次访问V的每个未被访问的邻接点。

    (3)按顺序访问各个邻接点的每个未被访问的邻接点。

    (4)重复以上步骤直至所有已被访问的邻接点都被访问过,结束。

  3.两种遍历方法的时间复杂度都是o(N+E)→邻接表、o(N²)→邻接矩阵

四、图可以用来解决以下问题

  1.最小生成树问题

  2.最短路径问题

  3.拓扑排序问题

  4.关键路径问题

posted @ 2019-05-19 23:11  冯小妖  阅读(244)  评论(2编辑  收藏  举报