前端小白的資料結構學習總結——圖
阿新 • • 發佈:2020-09-16
[TOC]
## 什麼是圖
圖是一種非線性的資料結構,是對網的一種抽象的理解,比如說中國鐵路網:
![鐵路網](https://images.cnblogs.com/cnblogs_com/jzhishu/1839762/o_200903103340%E9%93%81%E8%B7%AF%E7%BD%91.png)
圖片中可以看到,每個城市之間的由鐵路連成了網,這個==網中城市則為“點”,鐵路則為“線”==,那麼我們這個“網”再抽象一點,就成了這樣的一個圖:
![圖1-1](https://images.cnblogs.com/cnblogs_com/jzhishu/1839762/o_200902032358%E5%9B%BE1.png)
通常我們用G=(V, E)來表示圖
### 一些概念
- **vertex**:上圖中的圓表示一個城市,在==圖的概念中我們稱其為“**vertex**(頂點)”==
- **edge**:與頂點相連的表示的是城市之間的鐵路,在==圖的概念中我們稱其為“**Edge**(邊)”==
- **weight(權)**:北京到上海鐵路1400多公里,那麼==這個1400就是這邊的**weight(權)**==,通常這種帶有權的圖,我們把他稱之為**網**,比如中國鐵路網,就是一個帶權的圖
- **degree(度)**:一座城市連結的鐵路的數目,也就是==與頂點相連線的邊的數目我們稱其為“**degree(度)**”==,在有向圖中,因為邊存在方向,所以度還分為**入度(ID)**和**出度(OD)**
#### 無向圖和有向圖
上文中提到了**Edge(邊)**,這個邊可以是具備方向的,那麼**有向圖**就很好理解了,邊具備方向,像這樣:
![有向圖](https://images.cnblogs.com/cnblogs_com/jzhishu/1839762/o_200907075925%E6%9C%89%E5%90%91%E5%9B%BE.png)
上圖中頂點之間的**邊**有用箭頭來表示方向,==這種邊我們成為“弧(arc