1. 程式人生 > >前端小白的資料結構學習總結——圖

前端小白的資料結構學習總結——圖

[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