最大流標號法

最大流標號法(Maximum Flow Labeling)是一種用於解決最大流問題的算法。最大流問題是指在一個帶有權重的有向圖中,找到一條從源點(源點)到匯點(匯點)的路徑,使得這條路徑上的流量總和最大。

標號法是一種貪心算法,它通過給圖中的每個頂點賦予一個標號,來逐步找到最大流。標號的過程如下:

  1. 初始時,將源點的標號設為0,其他所有頂點的標號設為∞(無窮大)。
  2. 從源點開始,將其標號傳遞給它的所有鄰點。如果一個鄰點的標號比源點的標號小,則將該鄰點的標號設為源點的標號。
  3. 重複步驟2,直到所有鄰點的標號都不再改變。
  4. 選擇標號最小的匯點,並將其標號加1。
  5. 重複步驟2-4,直到所有匯點的標號都達到最大值。

在標號的過程中,如果一個頂點的標號不再改變,則稱該頂點已經「飽和」。當所有匯點的標號都達到最大值時,標號過程結束,最大流的值就是所有匯點標號的最大值。

標號法的一個優點是它可以在線性時間內解決最大流問題,即算法的時間複雜度為O(V + E),其中V是圖中頂點的數量,E是邊的數量。然而,標號法的空間複雜度較高,因為它需要一個大小為V的陣列來存儲每個頂點的標號。

標號法有時也稱為「增廣路徑算法」(Augmenting Path Algorithm),因為它通過找到一條從源點到匯點的增廣路徑(即可以增加流量的路徑)來增加最大流的值。