數據結構-圖的概述

數據結構-的概述

一、基本定義

1、:由點集和弧集(或者爲邊集)組成的 數據結構。(弧集或邊集可爲空)

注:弧是有方向的,邊可以看成雙向的弧。

2、有向圖:由點集和弧集的數據結構爲有向圖。

3、無向圖:由點集和邊集的數據結構爲無向圖,無向圖的臨接矩陣爲對稱矩陣。

快速區分圖是否有向:
1、有向圖點的序偶<>表示,無向圖的用()表示。
2、無向圖邊的數目不會大於(點 -1),而有向圖的邊個數可能會大於(點 - 1)個。

4、:網是弧或者邊帶權值的圖(網是帶權圖)。

5、子圖:若爲子圖,則其點集爲原圖的子集,邊集或者弧集爲原來圖的子集。

6、完全圖

無向完全圖:邊 = 點×(點 - 1)/2;
有向完全圖:弧 = 點×(點 - 1);

7、稀疏圖與稠密圖:邊或弧e滿足以下要求爲稀疏圖:

e < N×logN

否則爲稠密圖。

8、:與頂點相關聯的邊的數目,稱爲度;有向圖又分出度和入度。

9、連通圖:任意兩點間有途徑相通(不一定是兩點間的直接相連)

強連通圖:上面的連通圖的概念是相對於無向圖來定義的;對於有向的連通圖,則稱爲強連通圖。

10、(強)連通分量:極大連通子圖稱爲的連通分量

  (強)連通圖:  只有一個(強)連通分量,就是它本身;
非(強)連通圖:有 多個連通分量

二、存儲信息

1、鄰接矩陣表示法(數組表示法)

鄰接矩陣的定義:用二維數組存儲點與點之間的關聯關係;用一維來表示點集合。(無權圖用0、 1來表示邊是否存在;有權圖(即網)用權值表示邊的存在,用無窮表示不存在的邊)
注:對於無向圖的鄰接矩陣,它有對稱的特性。

2、鄰接表表示法(鏈式存儲表示法)

採用鏈表的形式,對相關聯的點點間的關係進行明顯的存儲:
下面截了學長PPT裏的圖片(偷懶,不做圖了):

無向圖的表示:

無向圖

有向圖的表示:

有向圖

可以看出:1、無向圖裏面可以看出相應點的度
            eg:f點的度爲3:分別爲f點到b、c、d。
    2、有向圖裏面可以很直觀看相應點的出度,通過表裏的內容,統計出點的入度;
            eg:b點的出度爲1; b點的入度爲2 :b點到c, d點到b, a點到b。

此外:還有十字鏈表表示法(主要爲了直觀方便看出有向圖的出入度而設計):主鏈的信息表由三部分組成,分別爲:圖上的點集,入度指針域指向,出度指針域指向;副鏈上的信息表示由四部分組成:前面存儲的是相關點的信息,後面存儲的是入度指針域和出度指針域,當遇到^的時候,結束計數。

三、圖的遍歷

2、簡要的算法思想:

深度優先算法:我們採用棧的思想:
    首先將首個節點入棧;棧不空,重複下述步驟:
    a、棧頂頂點出棧,如果未訪問,則訪問並置訪問標誌;
    b、然後將首節點所有未訪問的鄰接點入棧。

廣度優先算法:我們採用隊列的思想:
    首先將首個節點入隊;隊不空,重複下述步驟:
    a、隊頭首結點出隊;
    b、對首節點的所有鄰接點,如果鄰接點未被訪問,則
訪問鄰接點並置訪問標誌,然後鄰接點入隊。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章