日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

21图结构的基本概念

發布時間:2023/12/13 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 21图结构的基本概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖結構的基本概念

圖的定義:用于描述多對多的網狀關系。

由用于表示事物的頂點(vertex)集合V,以及表示事物之間關系的邊(edge)集合E構成

記作G=(V,E)

頂點數目n>0,邊數目m≥0

V:非空有窮頂點(vertex)集

E :V上的頂點對所構成的邊(edge)集

邊的概念:

1.邊---有向邊--------帶有方向的邊。

頂點v和w之間的有向邊表示成<v,w>

v:邊的尾(tail); w:邊的頭(head)

邊是由v射入w的;

w是與v相鄰(adjacent)的頂點(w是v的鄰接點),有向邊也稱弧(arc)。

注意:<v,w>與 <w,v>是不同的邊。

有向邊用帶箭頭的線條表示,箭頭指向邊的頭

2.邊----無向邊-------不帶方向的邊

頂點v和w之間的無向邊表示成(v,w)。

邊是關聯于v和w。而v與w互為鄰接點。

注意:(v,w)與(w,v)表示同一條邊。

無向邊用不帶箭頭的線條表示。

另外:

邊表示頂點間的某種關系:

無向邊:對稱關系(如同志關系)

有向邊:非對稱關系(如領導和被領導關系)

單行道:有向邊;雙行道:無向邊

3.邊----加權邊--------邊附帶一個實數作為權

邊的權可以表示邊的長度、沿著邊旅行所需的費用或時間、工程(輸電線路、通信線路、高速公路等)造價等(這里只研究非負權)。

權又統稱為耗費(cost),俗稱長度(length),但不一定滿足三角不等式(兩邊之和大于第三邊)。

注意:畫圖形時,權標在邊的旁邊。

示例:

圖的圖形表示法(必須遵循以下五點)

1.圓圈表示頂點,線段表示邊

2.無向邊(v,w)不帶箭頭

3.有向邊<v,w>的線段帶箭頭,箭頭指向頂點w

4.加權邊的權標注在邊的旁邊

5.頂點名稱寫在圓圈內,或標注在圓圈旁邊

比如:頂點名稱用大寫字母A,B,C,D…,

或“北京”、“南京”、“上海”等

頂點變量名用小寫字母 v,w,s,…

或v0,v1,…

圖的種類

1.有向圖:邊都有向。

2.無向圖:邊都無向。

4.混和圖:有些邊有向,有些邊無向(可化為有向圖)。

5.簡單圖:無重復邊,無到自身的邊(形如<v,v>的邊)。

注意點:

無向簡單圖:兩個點之間最多只有一條邊 ,而且沒有自環(自回路)。

有向簡單圖:無自環,無重復邊(允許<v,w>和<w,v>同時存在)。

6. 多重圖:無上述限制。

注意點:

無向多重圖:圖中有重復邊;有到自身的邊(環)。

有向多重圖: 圖中允許有兩條<v,w>、<v,w>同時存在;也允許環存在。

7. 加權圖:邊均帶權。

邊權圖稱網(network),非加權圖也稱0/1圖。

邊的權通常不滿足三角不等式 ;“拓撲”結構圖。

重點

圖的相關術語:

1.有向圖的頂點度:

v的出度(out-degree):v射出的邊數(以v為尾)

v的入度(in-degree):射入v的邊數(以v為頭)

v的度(degree):v的出度與入度之和

2.無向圖的頂點度:

v的度(degree):與v關聯的邊數。

注意:

所有頂點的入度之和=出度之和=邊數(有向圖)

所有頂點的度數之和=邊數的兩倍(無向圖)

3.子圖

子圖就是原圖的一部分,由原圖中部分頂點,以及這些頂點之間的一部分邊組成的圖。但必須與原圖的那一部分一模一樣。

4. 路徑和回路

路徑(path) :首尾相接的邊序列。

回路徑(cycle):起點與終點重合的路徑

簡單路徑:邊不重復;

基本路徑:中間無重復頂點。

路徑 (path)(通路):首尾相接的邊序列。

起點和終點:路徑上的兩個端點。

路徑長度(length):路徑上的邊數。

簡單路徑:頂點不重復

回路(cycle)(圈):起點和終點相重合的簡單路徑

加權圖中的加權路徑耗費=路徑上邊耗費之和

5.無向圖的連通性

v與w連通(connected):頂點v到w有路徑,也稱v可到達w。

孤立點:與任何點都不連通

孤懸邊:刪除邊(v,w)后,v或w就變成孤立點。

連通圖(connected graph):任何兩頂點都連通。

連通分量(connected component):極大連通子圖,連通圖只含一個連通分量。(極大指的是在滿足連通的條件下,盡可能多的含有圖中的頂點以及這些頂點之間的邊。)

6.有向圖的連通性

v與w連通(connected):v到頂點w路徑,也稱v可到達w。

強連通圖(strongly connected graph):任何兩點v和w均相互連通。

強連通分量(strongly connected components,或strong components):

極大強連通子圖,強連通圖只含一個強連通分量。

注意:

v和w單向連通:v到w有路徑(v可達w)。

v和w互連通的(雙向連通):v到w,和w到v都有路徑。

強連通的(strong connected):G中任何兩個頂點都互連通。

強連通分量(connected component):G'=(V',E')是G=(V,E)的由V'導出的強連通子圖,而且V-V'中的任何頂點都不與V'中任何頂點雙向連通。

無向連通圖的生成樹(spanning tree):

是圖的一種連通子圖,它含有圖的全部n個頂點,但只含有足以使圖保持連通的n-1條邊。

生成樹也稱支撐樹,生成樹不唯一。

生成森林(spanning forest):無向非連通圖每個連通分量有一棵生成樹,構成圖的生成森林。

圖如何以矩陣形式存儲?--------鄰接矩陣

頂點表示事物,邊表示事物間的關系,對應的關系矩陣。

頂點對應矩陣的行列號,邊對應矩陣元素值。

0/1圖對應的鄰接矩陣是0/1矩陣:頂點v和w之間有邊,矩陣第v行第w列元素值為1;否則為0。

加權圖對應的鄰接矩陣(也稱耗費矩陣)是實數矩陣:對角線元素值均為0;頂點v和w之間有邊,矩陣第v行第w列的元素值為該邊的長度 ;否則為∞。

注意點:無向圖的鄰接矩陣是對稱矩陣。

鄰接矩陣的順序存儲:

因為鄰接矩陣是一個n×n的方陣,所以可采用一般矩陣的存儲方式。

(1)二維數組存儲

最直觀的存儲方式用二維數組(比如a[n][n])存儲稱為圖的鄰接數組(adjacency array)。

優點:可直接從v行w列讀出邊<v,w>信息

缺點:存儲量較大

適用情況:邊數相對較多的有向圖

存儲效率分析:

鄰接數組存儲法(無論是否壓縮)是邊集的一種順序存儲方式。

優點:簡單,極易在圖中查找、插入、刪除一條邊

缺點:存儲n個頂點的圖,要占用O(n2)個存儲單元

(無論圖中實際含多少條邊)

圖的讀入、存儲空間的初始化等需要花費O(n2)個單位時間。

對于邊數m<<n2時的稀疏圖是不經濟的。

存儲稀疏圖最好采用鄰接表法。

鄰接表

概念:頂點v的所有鄰接點組成的表,稱為v的鄰接表L[v],各頂點鄰接表總稱為圖的鄰接表 (adjacency lists),鄰接表采用鏈式存儲(即鄰接鏈表),L[v]中每個結點對應圖中一條邊,稱為邊結點。

對有向圖,若存在邊<v,w>,則w處于L[v]中。

對無向圖,若存在邊(v,w),則w處于L[v]中,同時v也 處于L[w]中。

n個頂點的鄰接鏈表構成一個鏈表組,使用一個表頭指針數組將n個鏈表結合在一起。

鄰接表通常設計成單向鏈表形式,根據需要,也可設計成雙向的、或其他形式的鏈表。

(2)邊結點結構

不同的圖采用不同的邊結點結構

下面分別介紹加權圖和0/1圖的邊結點結構定義形式

(1)加權圖的邊結點類型定義:

含有鄰接點名稱(編號)域、邊的長度(耗費)域和指向下一個邊結點的指針域。

邊結點的類型定義:

typedef struct edge_node

{ int adjacent; // 鄰接點名稱域

cost_type cost; // 邊的耗費域

struct edge_node *next; //指各下一個邊結點

} edge_node, *Eptr;

(2)0/1圖的邊結點類型定義:

含有鄰接點名稱(編號)域和指向下一個邊結點的指針域。

邊結點的類型定義:

typedef struct edge_node

{ int adjacent; // 鄰接點名稱域

struct edge_node *next; //指各下一個邊結點

} edge_node, *Eptr;

(3)鄰接鏈表的表頭結點(頂點結點)結構定義:

含有頂點名稱域和指向鄰接表首結點的指針域。必要時,可增加其他域。

頂點結點的類型定義:

typedef struct edge_node

{ Vname_type name ; //頂點名,用于由號查名

Eptr firstedge ; //鄰接表的首指針

} hnode ;

表頭結點組定義為:

hnode L[n]; //n為具體頂點數

總結

以上是生活随笔為你收集整理的21图结构的基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。