第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

加權(quán)快速聯(lián)合查找

加權(quán)快速聯(lián)合查找

ITMISS 2024-01-05 09:56:22
我正在上一門算法課程,其中討論了加權(quán)快速聯(lián)合查找。我很困惑為什么我們關(guān)心樹的大小而不是深度?當(dāng)我嘗試編寫代碼時,我的代碼看起來與提供的解決方案不同。根據(jù)我的理解,當(dāng)涉及到并集函數(shù)(lg n)的運(yùn)行時間時,樹的大小(樹中節(jié)點的總數(shù))并不像樹的深度那么重要,因為它是深度確定需要多少次查找才能到達(dá)節(jié)點的根?謝謝My code:public void union(int p, int q) {    int root_p = root(p);    int root_q = root(q);    // If the two trees are not already connected, union them    if(root_p != root_q) {        // The two trees aren't connected, check which is deeper        // Attach the one that is more shallow to the deeper one        if (depth[root_p] > depth[root_q]) {            // p is deeper, point q's root to p            id[root_q] = root_p;        } else if (depth[root_q] > depth[root_p]) {            // q is deeper, point p's root to p            id[root_p] = root_q;        } else {            // They are of equal depth, point q's root to p and increment p's depth by 1            id[root_q] = root_p;            depth[root_p] += 1;        }    }}Solution code provided:public void union(int p, int q) {    int rootP = find(p);    int rootQ = find(q);    if (rootP == rootQ) return;    // make smaller root point to larger one    if (size[rootP] < size[rootQ]) {        parent[rootP] = rootQ;        size[rootQ] += size[rootP];    }    else {        parent[rootQ] = rootP;        size[rootP] += size[rootQ];    }    count--;}
查看完整描述

1 回答

?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗 獲得超5個贊

您是正確的,深度(實際上是高度)與運(yùn)行時間更直接相關(guān),但使用任一深度都會導(dǎo)致聯(lián)合和查找的運(yùn)行時間為O(log N) 。

證明很簡單——假設(shè)當(dāng)我們開始時(當(dāng)所有集合都不相交時),每個高度為h的根至少有(h-1)個節(jié)點,這個不變量由并集和查找操作來維護(hù)。因此,如果一個節(jié)點的大小為n,那么它的高度最多為Floor(log 2 (n))+1

所以任何一個都可以。但是,很快您就會了解路徑壓縮,這使得跟蹤根的高度變得困難,但大小仍然可用。那時,您將能夠使用“rank”(類似于“height”),或者繼續(xù)使用“size”。同樣,任何一個都可以,但我發(fā)現(xiàn)尺寸更容易推理,所以我總是使用它。


查看完整回答
反對 回復(fù) 2024-01-05
  • 1 回答
  • 0 關(guān)注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號