我來自一個命令性的背景,並試圖實現一個簡單的不相交集(「union-find」)數據結構,以獲得Haskell中創建和修改(持久性)數據結構的一些練習。目標是要有一個簡單的實現,但我也關心效率,我的問題與此有關。 首先,我創建了按職級與工會不相交集森林實施和通過定義一個「點」數據類型開始: data Point = Point
{ _value :: Int
, _parent
我一直在研究在coursera上使用類的算法。在最初的講座之一中,正在討論Quick Union Weighted。我得到它所做的,並且使用他們的代碼對它進行了測試,併爲它編寫了一個小測試。 一切都很清楚,但有一點:當您創建兩個對象的聯合時,它會將具有最小樹的對象添加到較大的對象。同時,較大樹的大小將隨着較小樹的大小而增加,該大小用於確定哪棵樹更大。由於數組對於每個索引都以值1開始(每個節點本身基