1. 程式人生 > >並查集詳解 (轉) 杭電HDU1232暢通工程

並查集詳解 (轉) 杭電HDU1232暢通工程

再來看看路徑壓縮演算法。建立門派的過程是用join函式兩個人兩個人地連線起來的,誰當誰的手下完全隨機。最後的樹狀結構會變成什麼胎脣樣,我也完全無法預計,一字長蛇陣也有可能。這樣查詢的效率就會比較低下。最理想的情況就是所有人的直接上級都是掌門,一共就兩級結構,只要找一次就找到掌門了。哪怕不能完全做到,也最好儘量接近。這樣就產生了路徑壓縮演算法。 設想這樣一個場景:兩個互不相識的大俠碰面了,想知道能不能揍。 於是趕緊打電話問自己的上級:“你是不是掌門?” 上級說:“我不是呀,我的上級是誰誰誰,你問問他看看。” 一路問下去,原來兩人的最終boss都是東廠曹公公。 “哎呀呀,原來是記己人,西禮西禮,在下三營六組白麵葫蘆娃!” “幸會幸會,在下九營十八組仙子狗尾巴花!” 兩人高高興興地手拉手喝酒去了。 “等等等等,兩位同學請留步,還有事情沒完成呢!”我叫住他倆。 “哦,對了,還要做路徑壓縮。”兩人醒悟。 白麵葫蘆娃打電話給他的上級六組長:“組長啊,我查過了,其習偶們的掌門是曹公公。不如偶們一起及接拜在曹公公手下吧,省得級別太低,以後查詢掌門麻環。” “唔,有道理。” 白麵葫蘆娃接著打電話給剛才拜訪過的三營長……仙子狗尾巴花也做了同樣的事情。 這樣,查詢中所有涉及到的人物都聚集在曹公公的直接領導下。每次查詢都做了優化處理,所以整個門派樹的層數都會維持在比較低的水平上。路徑壓縮的程式碼,看得懂很好,看不懂也沒關係,直接抄上用就行了。總之它所實現的功能就是這麼個意思。