圖論中的最小生成樹演算法

~博客~發表於2024-10-17

錯題考察的知識點是圖論中的最小生成樹演算法,特別是Prim演算法和Kruskal演算法。這兩種演算法都是用來尋找無向連通圖中的最小生成樹的。最小生成樹是指連線圖中所有頂點的邊的集合,且這些邊的總權重最小,同時保證任意兩個頂點之間都是連通的。

Prim演算法

  • 原理:從一個任意頂點開始,逐步增加新的頂點到生成樹中,每次新增的邊是連線已在生成樹中的頂點和不在生成樹中的頂點之間的最小權重邊。
  • 步驟:
    1. 從圖中選擇一個起始頂點。
    2. 找到連線生成樹頂點和不在生成樹中的頂點的最小權重邊。
    3. 將這條邊和對應的頂點加入到生成樹中。
    4. 重複步驟2和3,直到所有頂點都被加入到生成樹中。
  • 時間複雜度:O(n^2),其中n是圖中頂點的數量。
  • 適用場景:適合於稠密圖,因為每次需要檢查所有頂點。

Kruskal演算法

  • 原理:按照邊的權重從小到大的順序選擇邊,每次選擇的邊是不在當前生成樹中形成環的最小權重邊。
  • 步驟:
    1. 將圖中的所有邊按照權重從小到大排序。
    2. 從排序後的邊列表中選擇最小的邊,如果這條邊連線的兩個頂點在生成樹中不形成環,則將其加入到生成樹中。
    3. 重複步驟2,直到生成樹中有n-1條邊,其中n是圖中頂點的數量。
  • 時間複雜度:O(E log E),其中E是圖中邊的數量。
  • 適用場景:適合於稀疏圖,因為每次只需要考慮邊的集合。

貪心策略

  • 貪心演算法是一種在每一步選擇中都採取在當前狀態下最好或最優(即最有利)的選擇,從而希望導致結果是全域性最好或最優的演算法策略。貪心演算法不保證會得到最優解,但在某些問題中貪心演算法可以得到最優解。
  • 在最小生成樹問題中,無論是Prim演算法還是Kruskal演算法,都採用了貪心策略,即在每一步選擇中都選擇當前可以找到的最小權重邊。

在這道題目中,正確答案應該是B(貪心),因為這兩種演算法都是基於貪心策略來構建最小生成樹的。

相關文章