普林斯頓公開課 演算法1 7 並查集基本概念

2021-06-22 07:30:36 字數 602 閱讀 6560

本節講的是並查集的基本概念。

對問題進行數學建模

尋找乙個能夠解決問題的演算法

執行演算法檢測速度和記憶體是否符合要求

如果達不到要求,找出原因

尋找一種方法來解決問題

迴圈步驟,直到滿意為止

以上就是演算法開發比較科學的方法。演算法開發完成之後需要進行數學分析。

給定n個物體,可以提供兩種操作,一種是合併操作,一種是查詢操作。合併操作就是將兩個節點進行連線,查詢操作就是判斷兩個節點是否連線在一起。

實際應用中,並查集演算法可以支援各種各樣的物體型別,比如:

實際應用中,為了避免無關因素的干擾,通常需要將具體的物體進行編號,在計算的時候只需要對整數進行操作即可。

節點之間的連線具有三種性質:

概念:相連的節點所組成的集合。

下圖展示了連線部件:

並查集提供兩種操作:

並查集演算法需要實現以下目標:

普林斯頓公開課 演算法1 9 並查集 快速合併

本節講的是並查集的另外一種實現方法。這種方法的合併操作開銷很小,但是查詢操作開銷很大。這種演算法的資料結構和快速查詢方法的資料結構是一樣的,也是n個整數組成的陣列。陣列中每個元素id i 的含義是指i的上級是id i 乙個節點的根節點就是id id id id i 一直迴圈直到數值不再變化為止。由於...

普林斯頓公開課 演算法1 11 並查集的應用

遊戲中會用到。乙個n n的矩陣,推斷頂部和底部是否連通就是滲透問題。下圖中左側的矩陣能滲透,右側矩陣不能滲透。滲透問題在電學 流體力學 社會交際中都有應用。在遊戲中可能須要生成一張地圖,可是作為地圖肯定是須要連通的。那麼怎樣保證生成的地圖一定是連通的呢?下圖展示了地圖生成的過程,白點表示可以到達的地...

普林斯頓公開課 演算法1 8 並查集 快速查詢

本節講的是並查集的第一種實現方法,這種方法查詢操作開銷很小而合併操作開銷比較大。假設有n個節點,那麼該演算法的資料結構就是乙個包含n個整數的陣列id。判斷節點p和節點q是否相連就是判斷id p 和id q 的值是否一致。合併節點p和節點q就是將id陣列中所有的id p 都修改為id q 這樣的話,每...