天天看點

我的軟考之路(五)——資料結構與算法(3)之圖周遊最小生成樹總結

         圖跟樹一樣,也是非線性結構,咋看起來有點複雜,其實它很簡單。樹具有層次關系,上層元素可以與下一個多個元素連接配接,但是隻能和上層的一個元素連接配接。在圖結構中,節點間的連接配接是任意的,任何一個元素都可以與其他元素連接配接。

       圖相對而言很簡單,我們隻介紹的圖的周遊和最小生成樹,現在我們開始。

1.概念

      從圖中某一個頂點出發,通路圖中的每一個結點,并要求隻能通路一次,不能重複通路。

2.方法

我的軟考之路(五)——資料結構與算法(3)之圖周遊最小生成樹總結

(1)廣度優先周遊

       基本思想:首先通路頂點,再通路頂點的全部未通路的鄰結點,再通路鄰結點的所有結點即可(類似樹的層次周遊)。

       廣度優先周遊:v1,v2,v3,v4,v5,v6或v1,v4,v3,v2,v6,v5

(2)深度優先周遊

       基本思想:首先通路頂點,再通路頂點的每個鄰結點,從該點繼續深度優先周遊(類似于樹的前序周遊)

       深度優先周遊:v1,v2,v5,v3,v6,v4或v1,v4,v6,v3,v5,v2

總結,圖的廣度優先周遊和深度優先周遊的結果并不唯一。

我的軟考之路(五)——資料結構與算法(3)之圖周遊最小生成樹總結

(1)普裡姆(prim)算法

       基本思想:選一個頂點開始,查找與頂點相鄰且代價(邊值)最小的邊的另一個頂點,直到最後。

       例如:v1作為頂點,v1->v3->v6->v4,v3->v2->v5,連接配接圖中所有的結點即可。

(2)克魯斯卡爾(kruskal)算法

       基本思想:選擇圖中最小的邊,直到所有結點都連通。

       例如:第一小邊:v1->v3,第二小邊:v4->v6,第三小邊:v2-v5,第四小邊:v3->v6,第五小邊:v3->v2,此時所有的結點都連到了一起。

(3)算法對比

       普裡姆算法更加注重的是結點,點與點之間距離最短的優先;克魯斯卡爾算法更加注重的是邊,将邊排序,最小邊排在前面,最大邊排在後面。

          由于圖的内容相對要簡單,是以我們講解的内容相對而言要少,就當是精益求精吧。後面的排序和算法才是我們的重點,後面的博文馬上殺到。

後續部落格的更新清單,敬請期待。

      (已更新)

      (已更新)

      我的軟考之路(六)——資料結構與算法(4)之排序(未更新)

      我的軟考之路(七)——資料結構與算法(5)之查找(未更新)

繼續閱讀