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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图和树的基本概念与认识

發布時間:2024/5/14 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图和树的基本概念与认识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.圖是什么:

?圖由頂點(vertex,node)和邊(edge)組成。頂點就是代表對象,因為有時候題不會直接給頂點,而是某種對象,直接看成頂點即可。我們使用鏈接兩頂點之間的線段來表示。頂點的集合V,邊的集合是E,所以圖記為G = (V,E), 連接兩點u和v的邊用e=(u,v)表示。


?圖的種類:

??圖大體上分成兩種,邊沒有指向性的圖叫做無向圖,邊具有指向性的圖叫做有向圖。我們還可以賦予各種各樣的屬性。比較具有代表性的權值(cost)。邊上帶有權值的圖叫做帶權圖。在不同問題中,權值可以代表距離,時間以及價格等不同的屬性。





無向圖的術語:

兩個頂點之間如果有邊連接,那么就視為兩個頂點相鄰。相鄰頂點的序列稱為路徑。起點和終點重合的路徑叫做圈。

任意兩點之間都有路徑連接的圖叫做連通圖。頂點連接的邊數叫做這個頂點的度。




沒有圈的連接圖叫做樹(tree),沒有圈的非連接圖叫做森林。一棵樹的邊數恰好是頂點數-1.反之,邊數等于頂點數-1

的連通圖就是一棵樹。如果樹上選擇一個頂點作為跟(root),就可以把根提到最上面,而離根越遠的頂點越往下安排位置。

這樣的樹叫做有根樹。不過,對于無根樹,有時選擇適當的頂點作為根使之變成有根樹。


沒有圈的有向圖叫做DAG。對于每個頂點按照拓撲序列從左到右排列,那么所有的邊都是從左指向右的。


圖的表示:

1.鄰接矩陣

鄰接矩陣使用二維數組來表示圖。g[i][j]表示的是頂點i和頂點j的關系。

由于在無向圖中,只需要知道頂點i和j之間是否有邊相連即可,因此如果頂點i和頂點j之間有邊相連,那么g[i][j] 和 g[j][i]

就設為1,否則設為0。這樣就可以表示一個無向圖了(也叫雙向圖)。


由于在有向圖中,只需要知道是否有從頂點i發出指向頂點j的邊,因此如果頂點i有一條指向j的邊,那么g[i][j]就設為1,

否則就設為0(注意這是有向圖)。


在帶權圖中,g[i][j]表示的是頂點i到頂點j的邊的權值。由于在邊不存在的情況下,如果將g[i][j]設為0,就無法和權值為0

的情況區分開來,因此選取適當的較大的常數inf,然后令g[i][j]=inf。


使用鄰接矩陣的好處是可以在常數時間內判斷兩點之間是否有邊存在,但是很消耗空間,如果點數>1000就很麻煩了。

大部分情況下,只需要保存權值最小(最大)的邊就可以了,所以在這種情況下可以無視其他的邊。必須保存所有的邊

時可以使用鄰接表。

鄰接表是通過把從頂點i出發有到頂點j的邊,這樣的信息保存在鏈表中來表示圖的。



總結

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

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