真----並查集學習筆記
阿新 • • 發佈:2019-04-09
一點 一輪 基礎 是否 關系 查詢 如何解決 問題 顯示 接入到一顆樹中,
1347:【例4-8】格子遊戲 (好練習題)
2019-04-09更新
關於並查集
本子上說,並查集“處理的是‘集合’之間的關系,即動態地維護和處理集合元素之間復雜的關系”。
邊上圖邊說
現給出這張圖中節點的兩兩關系,並在給出關系的指令中間插入一些“詢問某兩個節點是否連通”的指令,要求
隨時響應,這樣的問題如何解決?
並查集是解決這個問題的一種方法。
上圖
假設某一時刻根據給出的關系,節點的連通狀態如上圖所示,
此時若詢問節點9和節點4是否連通,得到的回答應是“是的”。
如果用並查集做這個題,可以將每個已聲明關系的節點
都知道一棵樹只有一個根節點,那麽如果兩個節點經聲明關系後是連通的,
那麽在並查集中,這兩個節點的根節點是一個節點,並查集的查詢操作,就是
建立在根節點查詢的基礎上的。
————————————————————————
個人覺得,並查集的路徑壓縮使得 並查集 更像 並查集,
上圖
這是普通並查集的一個集合
這是加入優化代碼且優化過一輪後的一個並查集集合
速度上看,例如從五號節點找到零號節點,顯然是第二張圖顯示的這顆樹更快一點吧?
根節點是集合的“身份證”,身份證自然還是隨身最好,總不能讓他人保管,他人又讓他人
保管,他人又讓他人保管,這樣要獲得自己的身份證明就會很麻煩,時間上行不通,
聯想到並查集,這也許就是路徑壓縮的意義——去除昂余信息,加快查詢速度。
————————————————
http://ybt.ssoier.cn:8088/problem_show.php?pid=1347
這題解析以後再寫,先鴿著
1387:搭配購買(buy)
這題等學了背包再做
真----並查集學習筆記